当前位置: 首页 > article >正文

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


下面是详细的部署过程。

准确工作

主要是安装redismysql5.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安装

  1. 下载 MySQL yum包
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
  1. 安装MySQL源
rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
  1. 升级Public key
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
  1. 安装MySQL服务端,需要等待一些时间
yum install mysql-server
  1. 启动MySQL
systemctl start mysqld.service
  1. 检查是否启动成功
systemctl status mysqld.service
  1. 获取临时密码,MySQL5.7为root用户随机生成了一个密码
grep 'temporary password' /var/log/mysqld.log 

这里的我临时密码是*gMSdnc#Z8u_

  1. 通过临时密码登录MySQL,进行修改密码操作
mysql -uroot -p*gMSdnc#Z8u_

使用临时密码登录后,不能进行其他的操作,否则会报错,这时候我们进行修改密码操作

  1. 修改密码
    这里我设置的密码为yourpasswd@2023 可自行修改
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpasswd@2023';
  1. 授权其他机器远程登录
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpasswd@2023' WITH GRANT OPTION; 
FLUSH PRIVILEGES;
  1. 开启开机自启动
    先退出mysql命令行,然后输入以下命令。
systemctl enable mysqld
systemctl daemon-reload
  1. 设置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
  1. 重启一下MySQL,令配置生效
service mysqld restart
  1. 测试连接
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到相应的位置, 例如:

  1. 创建一个目录用于保存证书文件
mkdir -p /etc/nginx/cert/
  1. 安装证书
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
  1. 创建用户
CREATE DATABASE `ruoyi` CHARACTER SET UTF8;

  1. 执行初始化脚本
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.cn
  • ruoyim对应ruoyi.cn
  • hwauth 对应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


http://www.kler.cn/a/9263.html

相关文章:

  • Python教程笔记(1)
  • 【智谱开放平台-注册/登录安全分析报告】
  • Sam Altman:年底将有重磅更新,但不是GPT-5!
  • 多线程和线程同步复习
  • Android S长按文件或视频或编辑中文字或输入框中文字不会弹出分享菜单
  • 分布式----Ceph部署(上)
  • 自学大数据第14天NoSQL~MongoDB及其命令
  • Web 攻防之业务安全:Response状态值修改测试(修改验证码返回值为 true)
  • 【Kubernetes 企业项目实战】11、掌握 Kubernetes Kustomize 技术从入门到企业实战(下)
  • 蓝桥杯基础12:BASIC-3试题 字母图形
  • 从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala
  • 2023年PMP报考时间安排攻略!
  • ARM 编译器 Arm Compiler for Embedded 6 相关工具链简介
  • 内核dpc定时器
  • Python 虚拟环境迁移到其他电脑
  • 2023最新8个电脑必装软件,新电脑装完好用又高效
  • 静态工具类中如何注入spring容器
  • AttributeError: module ‘torch‘ has no attribute ‘compile‘
  • HTML5 <head> 标签、HTML5 <i> 标签
  • OBCP第八章 OB运维、监控与异常处理-灾难恢复
  • 数据结构之线性表3
  • 【中级软件设计师】—操作系统考点总结篇(二)
  • 蓝桥杯嵌入式第十二届初赛题目解析
  • Baumer工业相机堡盟相机如何使用BGAPI SDK实现相机资源的正确释放(C++)
  • Redis使用教程之jedis客户端sendCommand方法的byte[]入参,防止混淆string的byte与数值byte的区别
  • 电脑误删除的文件怎么恢复