实验核心思想:
前端:Nginx+3个TomCat
后端:redis+mysql

|------------|---------------------|
| Nginx 1.24 | 192.168.20.33:80 |
| Tomcat 9.0 | 192.168.20.33:8090 |
| Tomcat 9.0 | 192.168.20.33:8091 |
| Tomcat 9.0 | 192.168.20.33:8092 |
| Redis | 192.168.20.34:6379 |
| Mysql | 192.168.20.34: 3306 |
一、编译安装Nginx
1、# 安装依赖
sudo apt install -y build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
2、# 安装
在官网下载,上传到虚拟机
解压
tar -zxvf nginx-*.tar.gz
#进入解压后的Nginx源码目录,执行配置脚本,并指定安装目录和其他选项
cd nginx-1.24.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module
编译并安装
make && sudo make install
3、#启动nginx
/usr/local/nginx/sbin/nginx


二、安装tomcat
1、# 先安装Java环境
apt install openjdk-11-jdk -y
2、#安装tomcat
下载Tomcat 9压缩包
cd /opt
解压并创建3个Tomcat实例
tar -zxvf apache-tomcat-9.0.113.tar.gz
复制文件
cp -r apache-tomcat-9.0.113 tomcat8090
cp -r apache-tomcat-9.0.113 tomcat8091
cp -r apache-tomcat-9.0.113 tomcat8092
3、# 修改Tomcat端口号
Tomcat1端口为8090
vim /opt/tomcat8090/conf/server.xml
只修改端口号8090
TOmcat2端口号为8091
vim /opt/tomcat8091/conf/server.xml
<!-- 1. SHUTDOWN端口:默认8005 → 改为8006 -->
<Server port="8006" shutdown="SHUTDOWN">
<!-- 2. HTTP端口:默认8080 → 改为8091 -->
<Connector port="8091" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
<!-- 3. AJP端口:默认8009 → 改为8010 -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443"/>
Tomcat3端口号为8093
vim /opt/tomcat8092/conf/server.xml
<Server port="8007" shutdown="SHUTDOWN">
<Connector port="8093" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443"/>
4、# 启动 三台tomcat
/opt/tomcat8090/bin/startup.sh
/opt/tomcat8091/bin/startup.sh
/opt/tomcat8092/bin/startup.sh
ss -tunlp | grep -E "8090|8091|8092"


三、安装mysql 8.0.20(也可以用apt源安装)
#二进制安装mysql
1、#安装依赖
sudo apt update
sudo apt install -y libaio1 libaio-dev libtinfo5 libncurses-dev libncurses5 libncurses5-dev libncursesw5 libncursesw5-dev libssl-dev
2、# 下载MySQL二进制安装包
官网下载
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz
#解压
tar -xvf mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz -C /usr/local/
cd /usr/local
mv mysql-8.0.20-linux-glibc2.12-x86_64 mysql
创建mysql用户
useradd mysql -M -s /sbin/nologin
创建data文件夹
data文件夹是用于存储数据库文件,他的位置是在mysql目录下
mkdir /usr/local/mysql/data
更改mysql目录权限
chown mysql:mysql -R /usr/local/mysql
3、#修改Mysql配置文件
vim /etc/my.cnf
mysqld
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
log-error = /usr/local/mysql/data/error.log
pid-file = /usr/local/mysql/data/mysql.pid
socket = /tmp/mysql.sock
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-storage-engine=InnoDB
default-authentication-plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
执行初始化
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
执行初始化可能会报错

解决方法:这是缺少依赖导致的
安装libnuma库
apt install -y libnuma1
执行完后查看初始密码:
cat /usr/local/mysql/data/error.log

4、#启动mysql服务
/usr/local/mysql/support-files/mysql.server start

5、#登录mysql
/usr/local/mysql/bin/mysql -uroot -p
Enter password:初始密码
mysql> alter user 'root'@'localhost' identified by 'root123';
Query OK, 0 rows affected (0.05 sec)
#设置远程连接
/usr/local/mysql/bin/mysql -uroot -proot123
创建远程登录账号
mysql> create user 'root'@'%' identified with mysql_native_password by 'root123';
Query OK, 0 rows affected (0.01 sec)
设置开放权限
mysql> grant all on *.* to 'root'@'%';
Query OK, 0 rows affected (0.00 sec)
刷新使权限生效
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
四、#安装redis
1、编译安装redis
Redis 编译需要 gcc 环境,先执行:
更新软件源
apt update
安装编译依赖
apt install -y gcc make libjemalloc-dev
#下载 Redis 源码
进入/usr/local目录(统一安装路径)
cd /usr/local
下载Redis 6.2.14源码包(稳定版)
wget https://download.redis.io/releases/redis-6.2.14.tar.gz
解压源码包
tar -zxvf redis-6.2.14.tar.gz
重命名为redis(简化目录名)
mv redis-6.2.14 redis
#编译并安装 Redis
进入redis目录
cd /usr/local/redis
编译源码(-j4表示用4核编译,更快)
make -j4
安装Redis到指定目录
make install PREFIX=/usr/local/redis
2、#配置 Redis(关键,适配若依)
- 复制配置文件并修改
复制默认配置文件到安装目录
cp /usr/local/redis/redis.conf /usr/local/redis/bin/
编辑配置文件
vim /usr/local/redis/bin/redis.conf
修改以下内容





3、#启动 Redis
进入redis的bin目录
cd /usr/local/redis/bin
启动Redis(指定配置文件)
./redis-server redis.conf
#查看端口是否启动成功

4、# 创建系统服务文件
vim /etc/systemd/system/redis.service
Unit
Description=Redis Server
After=network.target
Service
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli shutdown
Restart=always
User=root
Install
WantedBy=multi-user.target
保存退出后,执行:
重新加载系统服务
systemctl daemon-reload
设置开机自启
systemctl enable redis
启动Redis服务(也可用此命令启停)
systemctl start redis
查看Redis状态
systemctl status redis
五、配置若依
1、#下载若依的代码

若依的后端代码(Java)需要部署到 Tomcat中运行,所以后端代码必须放在Tomcat 所在的虚拟机;
若依的前端代码(Vue)通常需要放在 Nginx 中部署
Redis 和 MySQL 是服务依赖,不需要把项目代码克隆到它们的虚拟机,只需在项目配置文件中填写 Redis、MySQL 的连接地址即可。
2、#将若依文件中的sql目录中的内容导入数据库
将sql目录scp传到mysql服务器下
scp sql root@192.168.20.32:/root/sql
1. 登录MySQL
/usr/local/mysql/bin/mysql -uroot -proot123
#创建存放若依sql目录的数据库
create database `ry-vue`;
2. 切换到ry-vue数据库
USE `ry-vue`;
3. 导入SQL文件(注意路径是绝对路径)
SOURCE /root /sql/ry_20250522.sql;
4. 导入定时任务SQL
SOURCE /root /sql/quartz.sql;
#查看表
SHOW TABLES;

3、#配置若依后端
(1)#修改数据库连接
cd RuoYi-Vue\ruoyi-admin\src\main\resources\
vim application-druid.yml


(2)#修改Redis连接信息
vim application.yml

(3)#修改文件路径
vim application.yml

这个profile路径是若依项目用来存放上传文件(比如图片、附件)的目录 ,你需要在服务器(也就是你部署 Tomcat 的虚拟机)上创建一个真实存在的目录
建议在/opt目录下创建(管理更方便)
mkdir -p /opt/ruoyi/uploadPath
chmod 755 /opt/ruoyi/uploadPath
(4)#日志存储路径调整【可选】
logback.xml文件中的路径,根据实际情况调整
vim logback.xml

#创建对应的路径
mkdir -p /opt/ruoyi/logs
给目录加读写权限
chmod 755 /opt/ruoyi/logs
(5)#将pom.xml打包成war包
vim /RuoYi-Vue-master/ruoyi-admin/pom.xml


#排除内置tomcat
<!-- 关键新增:排除Spring Boot内置Tomcat依赖(避免与外部Tomcat冲突) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> <!-- provided表示由外部容器提供,打包时不
包含 -->
</dependency>

#下载maven
更新软件源
apt update
安装Maven(默认会安装较新的稳定版)
apt install -y maven
查看Maven版本
mvn -v
#打包
不要在ruoyi-admin子目录单独打包,先回到项目根目录:
cd ~/RuoYi-Vue-master
先编译整个项目的所有模块
mvn clean install -DskipTests
cd ruoyi-admin
mvn clean package -DskipTests

生产了新的目录
cd target

(6)#运行若依后端文件
cd target
java -jar ruoyi-admin.war

4、#进行若依前端配置
进入前端目录内
cd RuoYi-Vue\ruoyi-ui
#安装
node.js和npm(前端依赖安装的基础)
apt update && apt install -y nodejs npm
安装依赖
npm install --registry=https://registry.npm.taobao.org
上面 的命令用不了就用这个
npm install --registry=https://registry.npmmirror.com --unsafe-perm=true --allow-root
#打包生成前端dist文件,构建生产环境
npm run build:prod

5、#创建一个目录存放若依前端的包
mkdir -p /app/ruoyi-ui/
cd ~/RuoYi-Vue-master/ruoyi-ui
cp -r dist /app/ruoyi-ui/
六、#将后端文件放置tomcat/webapps/
ruoyi-admin.war包重命名为ROOT,移动到webapps下
cp -r ruoyi-admin.war /opt/tomcat8090/webapps/ROOT.war
cp -r ruoyi-admin.war /opt/tomcat8091/webapps/ROOT.war
cp -r ruoyi-admin.war /opt/tomcat8092/webapps/ROOT.war
#删除原本tomcat webapps下的ROOT,将war包改名为ROOT.war
rm -rf ROOT/
mv ruoyi-admin.war ROOT.war
#关闭tomcat
/opt/tomcat8091/bin/shutdown.sh
/opt/tomcat8092/bin/shutdown.sh
/opt/tomcat8093/bin/shutdown.sh
#启动tomcat
/opt/tomcat8091/bin/startup.sh
/opt/tomcat8092/bin/startup.sh
/opt/tomcat8093/bin/startup.sh
七、#修改nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
#添加负载均衡模块
upstream ruoyi_tomcat {
server 192.168.20.30:8090 weight=1;
server 192.168.20.30:8091 weight=1;
server 192.168.20.30:8092 weight=1;
}
location / {
root /app/ruoyi-ui/dist; è写dist目录的路径
try_files uri uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_pass http://ruoyi_tomcat/; è这里是因为我把若依后端的包改名成ROOT所以不需要写之前的名字,Tomcat 会直接匹配 webapps/ROOT 下的应用
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
#检测文件正确性
/usr/local/nginx/nginx -t
#启动nginx
/usr/local/nginx/nginx -s stop
/usr/local/nginx/nginx
八、#验证
#访问前端
192.168.20.30

#访问后端
192.168.20.30:8090
192.168.20.30:8091
192.168.20.30:8092

至此结束!