RuoYi若依项目部署实战
环境
- OS: Amazon Linux 2 x86_64
- Host: c5.2xlarge
- Kernel: 5.10.173-154.642.amzn2.x86_64
mysql
root密码为yourpasswd@2023
,数据库名ruoyi
,端口3306
下面是详细的部署过程。
准确工作
主要是安装redis
和mysql5.7
,nginx
,JDK1.8
以下过程仅供参考。不同的发行版本会略有不同。
redis6.2.11 安装
项目中使用redis做为缓存。版本要求:Redis >= 3.0。
# 安装redis
yum install redis
# 启动服务
systemctl start redis
# 服务设置开机启动
systemctl enable redis
校验是否安装成功,可以运行
redis-cli
如下返回值说明是成功了!
[root@ip-172-31-34-78 ec2-user]# redis-cli
127.0.0.1:6379>
安装出来的版本为6.2.11
符合要求。
mysql 5.7安装
- 下载 MySQL yum包
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
- 安装MySQL源
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
- 升级Public key
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
- 安装MySQL服务端,需要等待一些时间
yum install mysql-server
- 启动MySQL
systemctl start mysqld.service
- 检查是否启动成功
systemctl status mysqld.service
- 获取临时密码,MySQL5.7为root用户随机生成了一个密码
grep 'temporary password' /var/log/mysqld.log
这里的我临时密码是*gMSdnc#Z8u_
- 通过临时密码登录MySQL,进行修改密码操作
mysql -uroot -p*gMSdnc#Z8u_
使用临时密码登录后,不能进行其他的操作,否则会报错,这时候我们进行修改密码操作
- 修改密码
这里我设置的密码为yourpasswd@2023
可自行修改
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpasswd@2023';
- 授权其他机器远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpasswd@2023' WITH GRANT OPTION;
FLUSH PRIVILEGES;
- 开启开机自启动
先退出mysql命令行,然后输入以下命令。
systemctl enable mysqld
systemctl daemon-reload
- 设置MySQL的字符集为UTF-8,令其支持中文
vim /etc/my.cnf
改成如下,然后保存
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysql]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-storage-engine=INNODB
character_set_server=utf8
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
- 重启一下MySQL,令配置生效
service mysqld restart
- 测试连接
mysql -uroot -pyourpasswd@2023
如果可以正常连接,基本没有什么问题了。
nginx
安装nginx
yum install -y nginx
# 启动服务
systemctl start nginx
# 查看服务状态
systemctl status nginx
# 服务设置开机启动
systemctl enable nginx
https证书设置
具体操作可参考:
https://github.com/acmesh-official/acme.sh/wiki/%E8%AF%B4%E6%98%8E
这里以backend-admin.ruoyi.cn
为例,其他几个域名操作一样。
生成证书
acme.sh --issue -d backend-admin.ruoyi.cn --nginx
copy证书
前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:
- 创建一个目录用于保存证书文件
mkdir -p /etc/nginx/cert/
- 安装证书
acme.sh --install-cert -d backend-admin.ruoyi.cn \
--key-file /etc/nginx/cert/backend-admin.ruoyi.cn.key \
--fullchain-file /etc/nginx/cert/backend-admin.ruoyi.cn.pem \
--reloadcmd "service nginx force-reload"
(一个小提醒, 这里用的是 service nginx force-reload, 不是 service nginx reload, 据测试, reload 并不会重新加载证书, 所以用的 force-reload)
其他的域名:
ruoyi.cn
acme.sh --issue -d ruoyi.cn --nginx
acme.sh --install-cert -d ruoyi.cn \
--key-file /etc/nginx/cert/ruoyi.cn.key \
--fullchain-file /etc/nginx/cert/ruoyi.cn.pem \
--reloadcmd "service nginx force-reload"
hw-auth-v1.ruoyi.cn
acme.sh --issue -d hw-auth-v1.ruoyi.cn --nginx
acme.sh --install-cert -d hw-auth-v1.ruoyi.cn \
--key-file /etc/nginx/cert/hw-auth-v1.ruoyi.cn.key \
--fullchain-file /etc/nginx/cert/hw-auth-v1.ruoyi.cn.pem \
--reloadcmd "service nginx force-reload"
站点nginx 配置
/etc/nginx/conf.d 目录下保存以下文件
- backend-admin.ruoyi.cn.conf
- ruoyi.cn.conf
- hw-auth-v1.ruoyi.cn.conf
分别对应3个不同的域名。
backend-admin.ruoyi.cn.conf
server {
listen 443 ssl;
server_name backend-admin.ruoyi.cn;
index index.html index.htm;
ssl_certificate /etc/nginx/cert/backend-admin.ruoyi.cn.pem;
ssl_certificate_key /etc/nginx/cert/backend-admin.ruoyi.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /var/www/ruoyi/;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8180/;
}
}
server {
listen 80;
server_name backend-admin.ruoyi.cn;
return 301 https://$host$request_uri;
}
ruoyi.cn.conf
server {
listen 443 ssl;
server_name ruoyi.cn;
index index.html index.htm;
ssl_certificate /etc/nginx/cert/ruoyi.cn.pem;
ssl_certificate_key /etc/nginx/cert/ruoyi.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /var/www/ruoyim/;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8180/;
}
}
server {
listen 80;
server_name ruoyi.cn;
return 301 https://$host$request_uri;
}
hw-auth-v1.ruoyi.cn.conf
server {
listen 443 ssl;
server_name hw-auth-v1.ruoyi.cn;
index index.html index.htm;
ssl_certificate /etc/nginx/cert/hw-auth-v1.ruoyi.cn.pem;
ssl_certificate_key /etc/nginx/cert/hw-auth-v1.ruoyi.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /var/www/hwauth/;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8180/;
}
}
server {
listen 80;
server_name hw-auth-v1.ruoyi.cn;
return 301 https://$host$request_uri;
}
配置完成后,可以运行
service nginx force-reload
使配置生效。
jdk1.8
从oracle官网下载后解压,并配置环境变量就可以了。如下:
#JAVA_HOME
export JAVA_HOME=$HOME/.soft/JDK/jdk1.8.0_331
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
PATH=$JAVA_HOME/bin:$PATH
数据库初始化
进入mysql的命令行,如下:
mysql -uroot -pyourpasswd@2023
- 创建用户
CREATE DATABASE `ruoyi` CHARACTER SET UTF8;
- 执行初始化脚本
use ruoyi;
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
source /home/ruoyi/ruoyi.sql;
前端项目部署
前端的部署目录在/var/www
ruoyi
对应 backend-admin.ruoyi.cnruoyim
对应ruoyi.cnhwauth
对应hw-auth-v1.ruoyi.cn
这里有个注意点,这些目录更新以后,要保证nginx有访问权限。如果没有权限可以通过以下命令设置权限:
chmod -R 777 /var/www/
后端项目部署
程序保存路径如下:
/home/ruoyi/projects/ruoyi/ruoyi-admin.jar
运行以下命令就可以启动后端服务:
nohup java -jar ruoyi-admin.jar > ruoyi-admin-log.out 2>&1 &
查看日志:
tail -f ruoyi-admin-log.out
参考
https://cloud.tencent.com/developer/article/1886339
https://blog.csdn.net/qq_48403611/article/details/122763479