部署若依分离版本

实验核心思想:

前端: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

wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.113/bin/apache-tomcat-9.0.113.tar.gz

解压并创建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(关键,适配若依)
  1. 复制配置文件并修改

复制默认配置文件到安装目录

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

至此结束!

相关推荐
代码游侠14 小时前
ARM开发——阶段问题综述(二)
运维·arm开发·笔记·单片机·嵌入式硬件·学习
张祥64228890414 小时前
误差理论与测量平差基础笔记十
笔记·算法·机器学习
云边散步18 小时前
godot2D游戏教程系列二(4)
笔记·学习·游戏开发
BORN(^-^)18 小时前
《产品经理方法论》阅读笔记
笔记·产品经理
jrlong18 小时前
DataWhale大模型基础与量化微调task4学习笔记(第 2 章:高级微调技术_RLHF 技术详解)
笔记·学习
傻小胖18 小时前
13.BTC-思考-北大肖臻老师客堂笔记
笔记·区块链
風清掦19 小时前
【江科大STM32学习笔记-04】0.96寸OLED显示屏
笔记·stm32·学习
胡西风_foxww19 小时前
ObsidianAI_学习一个陌生知识领域_建立学习路径和知识库框架_写一本书
人工智能·笔记·学习·知识库·obsidian·notebooklm·写一本书
AI视觉网奇19 小时前
huggingface-cli 安装笔记2026
前端·笔记
idontknow23321 小时前
DPDK学习笔记(1):二层转发应用例代码解析
c语言·网络·笔记·学习