目录
- [第一步:安装JDK 1.8](#第一步:安装JDK 1.8)
- 
- [方法 1:安装 Oracle JDK 1.8](#方法 1:安装 Oracle JDK 1.8)
- [方法 2:安装 OpenJDK 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 包(如果你已经下载到本地,则跳过此步骤):
            
            
              shell
              
              
            
          
          wget https://download.oracle.com/otn-pub/java/jdk/8uXXX-bXX/XXX_jdk-8uXXX-linux-x64.rpm(其中 XXX 是版本号,例如 191 对于 8u191)
3、然后安装:
            
            
              shell
              
              
            
          
          sudo yum localinstall XXX_jdk-8uXXX-linux-x64.rpm4、配置环境变量
编辑 /etc/profile 或用户的 ~/.bashrc 文件,添加以下行:
            
            
              shell
              
              
            
          
          export JAVA_HOME=/usr/java/jdk1.8.0_XXX
export PATH=$PATH:$JAVA_HOME/bin(确保替换 XXX 为具体的版本号)
5、然后执行:
            
            
              shell
              
              
            
          
          source /etc/profile或重新登录终端。
方法 2:安装 OpenJDK 1.8
1、安装 OpenJDK
OpenJDK 是免费的开源实现,可以直接通过 yum 安装:
            
            
              powershell
              
              
            
          
          sudo yum install java-1.8.0-openjdk2、配置环境变量
同样,编辑 /etc/profile 或 ~/.bashrc 文件,添加或修改以下行:
            
            
              powershell
              
              
            
          
          export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin3、然后执行:
            
            
              powershell
              
              
            
          
          source /etc/profile或重新登录终端。
4、验证安装
无论使用哪种方法,你都可以通过以下命令来验证 JDK 是否正确安装:
            
            
              powershell
              
              
            
          
          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 存储库
            
            
              bash
              
              
            
          
          yum install -y epel-release2 更新存储库
            
            
              bash
              
              
            
          
          yum update3 安装Nginx
            
            
              bash
              
              
            
          
          yum install -y nginx4 验证安装
查看nginx版本
            
            
              bash
              
              
            
          
          nginx -v5 启动NGINX服务并设置开机启动:
            
            
              bash
              
              
            
          
          # 设置开机自启动
sudo systemctl enable nginx
# 取消开机自启动
sudo systemctl disable nginx
# 启动
sudo systemctl start nginx
# 停止
sudo systemctl stop nginx
# 重启
sudo systemctl reload nginx6 验证NGINX是否安装成功:
            
            
              bash
              
              
            
          
          sudo systemctl status nginx7 Nginx的基本配置
Nginx的配置文件通常位于 /etc/nginx/nginx.conf ,以及位于 /etc/nginx/sites-available/ 目录下的站点特定配置文件。以下是一个基本的Nginx配置文件示例:执行 sudo vim /etc/nginx/nginx.conf
            
            
              bash
              
              
            
          
          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 {
        }
    }检查是否有语法错误
            
            
              bash
              
              
            
          
          sudo nginx -t查看错误日志
查看 Nginx 的错误日志可以提供更多关于为什么页面找不到的信息。日志文件通常位于 /var/log/nginx/error.log。使用以下命令查看日志:
            
            
              bash
              
              
            
          
          sudo tail -f /var/log/nginx/error.log- 修改权限
修改/usr/local/nginx/html/目录的读写权限,或者是把nginx的启动用户改成目录的所属用户
            
            
              bash
              
              
            
          
          chmod -R 777 /usr/local/nginx/html/- 检查 SELinux 状态
 !!!!!!!!!!!!!!!!注意这一步非常重要!!!!!!!!!!!!!!!!!!!
 如果你的系统启用了 SELinux(Security-Enhanced Linux),它可能会阻止某些操作。你可以临时禁用 SELinux 来测试是否是 SELinux 导致的问题:
            
            
              bash
              
              
            
          
          sudo setenforce 0
如果禁用 SELinux 后问题解决,那么你可能需要调整 SELinux 的策略而不是完全禁用它。例如,你可以为 Nginx 设置适当的上下文:
            
            
              bash
              
              
            
          
          sudo restorecon -v /etc/nginx/nginx.conf检查目录和文件的 SELinux 上下文
确保 Nginx 的配置文件和目录具有正确的 SELinux 上下文:
            
            
              bash
              
              
            
          
          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 的默认仓库中。
            
            
              bash
              
              
            
          
          sudo yum install epel-release
sudo yum update- 安装 Redis
安装 Redis 服务器和客户端工具。
            
            
              bash
              
              
            
          
          sudo yum install redis- 启动 Redis 服务
            
            
              bash
              
              
            
          
          sudo systemctl start redis- 设置 Redis 服务开机自启
            
            
              bash
              
              
            
          
          sudo systemctl enable redis- 检查 Redis 状态
            
            
              bash
              
              
            
          
          sudo systemctl status redis- 在Redis配置文件(通常是redis.conf)中添加:
            
            
              bash
              
              
            
          
          requirepass 123456第五步:安装MySQL
- 获取 mysql 官方 yum 源
 下载地址
            
            
              bash
              
              
            
          
          # 一定要看好下面的文字!如果后面自己安装不成功,就看看这个
# 注意:最好安装和自己系统一致的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 输入以下命令开始安装
            
            
              bash
              
              
            
          
          [root@localhost src]# yum localinstall mysql80-community-release-el7-5.noarch.rpm2.2 完成后继续执行以下命令安装
            
            
              bash
              
              
            
          
          [root@localhost src]# yum install mysql-community-server2.3 安装完毕,启动Mysql服务
            
            
              bash
              
              
            
          
          [root@localhost src]# service mysqld start2.4 查看Mysql服务启动状态是否成功,或:ps -ef | grep mysql
            
            
              bash
              
              
            
          
          [root@localhost src]# service mysqld status- 修改Mysql密码
 3.1 查询Mysql临时密码
            
            
              bash
              
              
            
          
          [root@localhost src]# more /var/log/mysqld.log
3.2 复制临时密码,然后登陆Mysql

3.3 此时不能做任何事情,因为MySQL默认必须修改密码之后才能操作数据库:
            
            
              sql
              
              
            
          
          mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';其中'new password'替换成你要设置的密码,
注意:密码设置必须要大小写字母数字和特殊符号(,/';:等),不然不能配置成功
3.4 创建lexian数据库
运行乐鲜数据库sql脚本文件:
            
            
              bash
              
              
            
          
          mysql> source /home/51testing/Desktop/WorkSpace/lexian/lexian.sql请注意确保lexian.sql文件的路径正确。可以看到创建个表、存储过程以及插入初始数据的语句运行结果。
验证数据库,运行下列命令确保返回相应的结果:
            
            
              bash
              
              
            
          
          use lexian;
select * from category;3.5 创建和使用非管理员账号
一般不建议直接在应用程序中使用 root 账号访问数据库,应创建新的非管理员账号。
- 创建账号etc,密码为51Testing~
以root账号进入mysql,运行以下语句:
            
            
              bash
              
              
            
          
          CREATE USER 'etc'@'%' IDENTIFIED BY '51Testing~';- 赋予etc账号访问lexian数据库的权限:
            
            
              bash
              
              
            
          
          grant all on lexian.* to 'etc'@'%';- 验证etc账号:
 以etc身份进入mysql:
            
            
              bash
              
              
            
          
          mysql -uetc -p- 执行下列命令,确保可以看到返回相应的结果:
            
            
              bash
              
              
            
          
          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。
            
            
              sql
              
              
            
          
          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 -A
Database 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)
终于成功了!!!!
