CentOS 安装 JDK+ NGINX+ Tomcat + Redis + MySQL搭建项目环境
目录
- 第一步:安装JDK 1.8
- 方法 1:安装 Oracle JDK 1.8
- 方法 2:安装 OpenJDK 1.8
- 第二步:使用yum安装NGINX
- 第三步:安装Tomcat
- 第四步:安装Redis
- 第五步:安装MySQL
- 第六步:MySQL版本兼容性问题
第一步:安装JDK 1.8
在 CentOS 7 上安装 JDK 1.8 可以通过多种方式完成,例如使用 Oracle 的官方安装包、OpenJDK 或者通过 RPM 包管理工具。下面我将介绍两种常见的方法:使用 Oracle JDK 和使用 OpenJDK。
方法 1:安装 Oracle JDK 1.8
1、下载 JDK
访问 Oracle 官网下载 JDK 1.8 的 RPM 包。由于 Oracle JDK 需要接受许可协议,你也可以选择下载 tar.gz 包然后手动解压。
访问 Oracle JDK 下载页面 并选择 Linux x64 的 RPM 包。
2、安装 JDK
使用 wget 下载 RPM 包(如果你已经下载到本地,则跳过此步骤):
wget https://download.oracle.com/otn-pub/java/jdk/8uXXX-bXX/XXX_jdk-8uXXX-linux-x64.rpm
(其中 XXX 是版本号,例如 191 对于 8u191)
3、然后安装:
sudo yum localinstall XXX_jdk-8uXXX-linux-x64.rpm
4、配置环境变量
编辑 /etc/profile
或用户的 ~/.bashrc
文件,添加以下行:
export JAVA_HOME=/usr/java/jdk1.8.0_XXX
export PATH=$PATH:$JAVA_HOME/bin
(确保替换 XXX 为具体的版本号)
5、然后执行:
source /etc/profile
或重新登录终端。
方法 2:安装 OpenJDK 1.8
1、安装 OpenJDK
OpenJDK 是免费的开源实现,可以直接通过 yum 安装:
sudo yum install java-1.8.0-openjdk
2、配置环境变量
同样,编辑 /etc/profile 或 ~/.bashrc 文件,添加或修改以下行:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin
3、然后执行:
source /etc/profile
或重新登录终端。
4、验证安装
无论使用哪种方法,你都可以通过以下命令来验证 JDK 是否正确安装:
java -version
这将显示安装的 Java 版本,你应该看到类似java version "1.8.0_XXX"
的输出。
以上就是在 CentOS 7 上安装 JDK 1.8 的步骤。选择适合你的方法进行安装。
如遇提示报错:报错14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的错误“
,参考如下:地址。
第二步:使用yum安装NGINX
参考如下:Nginx三种安装方式
这种方式安装的 nginx 版本一般也不是最新的,但是也够用了,主要是安装简单。
1 安装 EPEL 存储库
yum install -y epel-release
2 更新存储库
yum update
3 安装Nginx
yum install -y nginx
4 验证安装
查看nginx版本
nginx -v
5 启动NGINX服务并设置开机启动:
# 设置开机自启动
sudo systemctl enable nginx
# 取消开机自启动
sudo systemctl disable nginx# 启动
sudo systemctl start nginx
# 停止
sudo systemctl stop nginx
# 重启
sudo systemctl reload nginx
6 验证NGINX是否安装成功:
sudo systemctl status nginx
7 Nginx的基本配置
Nginx的配置文件通常位于 /etc/nginx/nginx.conf ,以及位于 /etc/nginx/sites-available/ 目录下的站点特定配置文件。以下是一个基本的Nginx配置文件示例:执行 sudo vim /etc/nginx/nginx.conf
server {listen 80;listen [::]:80;server_name _;root /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {root html;index index.html index.htm;autoindex on;}error_page 404 /404.html;location = /404.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}
检查是否有语法错误
sudo nginx -t
查看错误日志
查看 Nginx 的错误日志可以提供更多关于为什么页面找不到的信息。日志文件通常位于 /var/log/nginx/error.log。使用以下命令查看日志:
sudo tail -f /var/log/nginx/error.log
- 修改权限
修改/usr/local/nginx/html/目录的读写权限,或者是把nginx的启动用户改成目录的所属用户
chmod -R 777 /usr/local/nginx/html/
- 检查 SELinux 状态
!!!!!!!!!!!!!!!!注意这一步非常重要!!!!!!!!!!!!!!!!!!!
如果你的系统启用了 SELinux(Security-Enhanced Linux),它可能会阻止某些操作。你可以临时禁用 SELinux 来测试是否是 SELinux 导致的问题:
sudo setenforce 0
如果禁用 SELinux 后问题解决,那么你可能需要调整 SELinux 的策略而不是完全禁用它。例如,你可以为 Nginx 设置适当的上下文:
sudo restorecon -v /etc/nginx/nginx.conf
检查目录和文件的 SELinux 上下文
确保 Nginx 的配置文件和目录具有正确的 SELinux 上下文:
ls -Z /etc/nginx/nginx.conf
运行 http://localhost/upload/defaultpicture/1.jpg
,成功后看到
第三步:安装Tomcat
Tomcat的下载和安装过程比较简单,适用于多种操作系统:
访问Tomcat官方网站,下载对应操作系统的Tomcat二进制版本。
解压缩下载的文件到一个目录,例如 /opt/tomcat 或 C:\apache-tomcat-9.0.34 。
运行Tomcat的 bin/startup.sh (Unix/Linux)或 bin/startup.bat (Windows)脚本来启动Tomcat服务器。
用文件夹下面的startup.sh
和 shutdown.sh
来进行启动和关闭。
检查是否启动成功:在浏览器输入:http://localhost:8080
第四步:安装Redis
- 安装 EPEL 仓库
首先,你需要启用 EPEL (Extra Packages for Enterprise Linux) 仓库,因为 Redis 可能不在 CentOS 的默认仓库中。
sudo yum install epel-release
sudo yum update
- 安装 Redis
安装 Redis 服务器和客户端工具。
sudo yum install redis
- 启动 Redis 服务
sudo systemctl start redis
- 设置 Redis 服务开机自启
sudo systemctl enable redis
- 检查 Redis 状态
sudo systemctl status redis
- 在Redis配置文件(通常是redis.conf)中添加:
requirepass 123456
第五步:安装MySQL
参考地址1
参考地址2
- 获取 mysql 官方 yum 源
下载地址
# 一定要看好下面的文字!如果后面自己安装不成功,就看看这个
# 注意:最好安装和自己系统一致的mysql版本,否则可能会存在软件兼容性问题
# 查看自己的系统版本
# [root@VM-8-5-centos ~]# cat /etc/redhat-release
# CentOS Linux release 7.8.2003(Core)
# 可以进入 http://repo.mysql.com/,找一下和自己版本一致的资源
# 下载到你的本地,然后上传到你的Linux服务器
- 安装Mysql
2.1 输入以下命令开始安装
[root@localhost src]# yum localinstall mysql80-community-release-el7-5.noarch.rpm
2.2 完成后继续执行以下命令安装
[root@localhost src]# yum install mysql-community-server
2.3 安装完毕,启动Mysql服务
[root@localhost src]# service mysqld start
2.4 查看Mysql服务启动状态是否成功,或:ps -ef | grep mysql
[root@localhost src]# service mysqld status
- 修改Mysql密码
3.1 查询Mysql临时密码
[root@localhost src]# more /var/log/mysqld.log
3.2 复制临时密码,然后登陆Mysql
3.3 此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
其中‘new password’替换成你要设置的密码,
注意:密码设置必须要大小写字母数字和特殊符号(,/';:等),不然不能配置成功
3.4 创建lexian数据库
运行乐鲜数据库sql脚本文件:
mysql> source /home/51testing/Desktop/WorkSpace/lexian/lexian.sql
请注意确保lexian.sql文件的路径正确。可以看到创建个表、存储过程以及插入初始数据的语句运行结果。
验证数据库,运行下列命令确保返回相应的结果:
use lexian;
select * from category;
3.5 创建和使用非管理员账号
一般不建议直接在应用程序中使用 root 账号访问数据库,应创建新的非管理员账号。
- 创建账号etc,密码为51Testing~
以root账号进入mysql,运行以下语句:
CREATE USER 'etc'@'%' IDENTIFIED BY '51Testing~';
- 赋予etc账号访问lexian数据库的权限:
grant all on lexian.* to 'etc'@'%';
- 验证etc账号:
以etc身份进入mysql:
mysql -uetc -p
- 执行下列命令,确保可以看到返回相应的结果:
use lexian;
show tables;
第六步:MySQL版本兼容性问题
解决数据库MySQL 5.* 迁移到MySQL 8.*的问题。
问题1:MySQL 5.* 和MySQL 8.*的jdbc连接数据库的方式不同。
解决方式参考另一篇博文。
问题2:ERROR 6125 (HY000): Failed to add the foreign key constraint. Missing unique key for constraint 'commodity_browse' in the referenced table 'commodity'
通常在尝试在MySQL数据库中添加外键约束时出现,当引用的列不是唯一索引或主键时,就会触发这个错误。为了解决这个问题,你需要确保引用的列(即在FOREIGN KEY中指定的列)具有唯一性。
添加一个UNIQUE
的约束就行。
问题3:注册时无法注册报错如下。
参考链接:jdbc配置之后,提示table does not exist
查看数据库表名是wallet小写,而这里是Wallet是大写的‘W’,改成大写的就行了,无语。
问题4:首页商品图片加载不显示。
这里是MySQL 8.* 与MySQL 5.*的兼容性的问题,MySQL 8.* 默认支持sql_mode = only_full_group_by,而MySQL 5.*则默认不支持,这里需要在配置中删掉这个only_full_group_by。
mysql> select @@global.sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@global.sql_mode |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)mysql> use lexian;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -ADatabase changed
mysql> select @@sql_mode;
+-----------------------------------------------------------------------------------------------------------------------+
| @@sql_mode |
+-----------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+-----------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)mysql> set sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)mysql> select @@sql_mode;
+----------------------------------------------------------------------------------------------------+
| @@sql_mode |
+----------------------------------------------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
终于成功了!!!!