ruoyi项目部署
- 说明
- 一、环境准备
- 1. 创建虚拟机
- 2. 项目准备
- 3. 环境准备
- 3.1 配置Java开发环境
- 3.2 配置Node.js环境
- 3.3 安装Mysql数据库
- 3.4 Redis服务配置
- 3.5 配置Nginx服务器
- 二、项目部署
- 1. 前端部署
- 2. 后端部署
说明
部署系统:Linux(CentOS7)
使用工具:VMware Workstation Pro、Xshell7、XFtp7
介绍:以网络上前后端分离的Spring Boot项目ruoyi为例,将其部署至云服务器上(这里用虚拟机代替。为方便免去权限问题,以root用户操作)。
一、环境准备
1. 创建虚拟机
用虚拟机代替云服务器进行配置,使用VMware Workstation Pro建立CentOS7虚拟机环境,
创建虚拟机方式参考:
vmware创建虚拟机并安装centos7系统
2. 项目准备
从码云上直接下载即可。
https://gitee.com/y_project/RuoYi-Vue
3. 环境准备
Ruoyi项目需要主要需要的环境和服务有:
Java环境、node.js环境、Mysql服务、Redis服务和Nginx服务,后端在Windows中打包,故服务器端可以不装maven环境。
3.1 配置Java开发环境
在CentOS中配置Java开发环境。
- 首先删除系统自带的OPENJDK
查找已安装的OpenJDK包
rpm -qa | grep java
若存在相关的包,使用命令卸载
yum -y remove xxx
- 把准备好的jdk安装包放在root下(jdk-8u291-linux-x64.tar.gz),在/usr/local下创建java文件夹,并进入到java文件夹下
- 将root目录下的JDK解压到/usr/local/java下,解压完成,出现一个jdk1.8.0_291目录
tar -zxvf /root/jdk-8u161-linux-x64.tar.gz -C ./
- 编辑/etc/profile文件,在文件末尾加入JDK环境配置
export JAVA_HOME=/usr/local/java/jdk1.8.0_291
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
然后执行命令,使环境变量生效
source /etc/profile
查看Java环境
3.2 配置Node.js环境
- 下载安装包(node-v14.16.1-linux-x64.tar.xz)放在root目录下,在/usr/local下创建node文件夹,并进入到node文件夹下
- 将root目录下安装包解压至/usr/local/node中,解压完成,出现一个目录。
tar -xJvf /root/ node-v14.16.1-linux-x64.tar.xz -C ./
- 编辑~/.bash_profile文件,加入node的配置信息
export PATH=/usr/local/node/node-v12.16.3-linux-x64/bin:$PATH
- 执行命令,使环境生效,并验证安装结果
source ~/.bash_profile
3.3 安装Mysql数据库
- 卸载自带的Mariadb,方法与卸载OpenJDK相同
- 准备安装包mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz放到root目录下,将其解压到/usr/local目录,并重命名为mysql
tar -zxvf /root/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql
- 准备mysql配置文件,在/etc目录下新建my.cnf文件
写入以下配置:
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
skip-name-resolve
#设置3306端⼝
port = 3306
socket=/var/lib/mysql/mysql.sock
# 设置mysql的安装⽬录
basedir=/usr/local/mysql
# 设置mysql数据库的数据的存放⽬录
datadir=/usr/local/mysql/data
# 允许最⼤连接数
max_connections=200
# 服务端使⽤的字符集默认为8⽐特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使⽤的默认存储引擎
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
同时创建/var/lib/mysql目录,修改权限
mkdir /var/lib/mysql
chmod 777 /var/lib/mysql
- 安装Mysql
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --
datadir=/usr/local/mysql/data
创建完成后给出初始密码:
- 复制启动脚本到资源目录./support-files/mysql.server/etc/init.d/mysqld,修改/etc/init.d/mysqld,写入
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
- 设置Mysql系统服务并开启自启动
首先增加mysqld服务控制脚本执行权限:
chmod +x /etc/init.d/mysqld
同时将mysqld服务加入系统服务:
chkconfig --add mysqld
- 在~/.bash_profile上加入mysql环境变量
export PATH=$PATH:/usr/local/mysql/bin
然后执行source ~/.bash_profile使其生效。
- 首次登陆更改密码步骤省略
- 设置远程主机登陆,进入到mysql后,更改user表中数据
mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;
- 注意若在Windows主机上无法连接mysql,则需要更改/etc/sysconfig/iptables防火墙文件,开放端口3306,重启防火墙后即可生效
service iptables restart
3.4 Redis服务配置
- 准备安装包redis-5.0.8.tar.gz放在root目录下,在/usr/local下创建redis文件夹并进入,将redis-5.0.8.tar.gz文件解压至/usr/local/redis下出现目录redis-5.0.8
tar zxvf /root/redis-5.0.8.tar.gz -C ./
- 进入到redis-5.0.8/src目录下,编译、安装
cd src
make install
- 进入redis-5.0.8/目录下utils目录下,执行redis服务
./install_server.sh
- 启动redis-cli客户端,并对redis测试
(存入foo到bar的映射,并取出) - 此时redis只能在本地访问,要设置远程连接,编辑redis配置文件/etc/redis/6379.conf,将bind 127.0.0.1修改为0.0.0.0
然后重启redis服务:
systemctl restart redis_6379.service
- 远程连接设置后,与mysql一样,需要开放6379端口使得外部可接入,编辑vim /etc/sysconfig/iptables,加入下图的指令开放6379端口后重启防火墙。
service iptables restart
- 设置密码
编辑redis配置文件/etc/redis/6379.conf,找到#requirepass foobared这行,设定密码为111111
然后重启redis服务:
systemctl restart redis_6379.service
3.5 配置Nginx服务器
- 准备nginx-1.17.10.tar.gz安装包放在root目录下,在/usr/local/目录下建立nginx目录,将安装包解压至/usr/local/nginx下,解压完成后在目录下会出现nginx-1.17.10目录
tar zxvf /root/nginx-1.17.10.tar.gz -C ./
- 安装其他依赖:
yum -y install pcre-devel
yum -y install openssl openssl-devel
yum -y install gcc-c++
- 编译安装Nginx
cd nginx-1.17.10
./configure
make && make install
- 安装完成后,Nginx可执行文件位于/usr/local/nginx/sbin/nginx
- Nginx启动和关闭
在安装目录下启动
./nginx
关闭:
先查询nginx主进程号
ps -ef | grep nginx
使用kill关闭进程
kill 端口号
附:kill的几种方式:
杀死进程:kill 端口号
强制关闭:kill -9 端口号
退出进程:kill -3 端口号 等同 Ctrl + /
中断:kill -2 端口号 等同 Ctrl + c
至此,部署ruoyi项目需要用到的环境及服务准备完毕。
二、项目部署
Ruoyi项目前后端分离,前端项目为ruoyi-ui,单独部署。
1. 前端部署
- 在root目录下新建workspace目录,用于存放整个项目的文件
- 将ruoyi-ui通过XFTP上传至服务器的/root/workspace目录下
- 执行命令,下载项目所需的依赖
npm install --unsafe-perm --registry=https://registry.npm.taobao.org
- 对ruoyi-ui打包:
npm run build:prod
打包后生成dist文件
- 更改Nginx的配置文件/usr/local/nginx/conf/nginx.conf,将url请求转移到ruoyi-ui打包而成的dist中
location / {
root /root/workspace/ruoyi-ui/dist;
index index.html index.htm;
}
与mysql与redis一样的操作,将80端口开放。
此时已经可以通过访问服务器地址192.168.83.129来查看前端页面,但是还没有后端程序,所以只有一个页面,可以看到验证码是无法加载的。
前端部署成功
2. 后端部署
- 首先在Windows上更改后端项目的相关配置,主要是数据库连接和redis的连接。
更改Mysql
更改redis - 后端共6个模块
Spring Boot项目内置tomcat服务器,在Windows上分别打包为jar包,并将六个jar包上传至服务器/root/workspace/ruoyi目录下 - 执行ruoyi-admin.jar,运行后端程序
nohup java -jar ruoyi-admin.jar &
- 此时前后端项目均已运行,但是二者没有关联,查看网页中的request URL,找到转发路径prod-api。
- 再次更改Nginx的配置文件/usr/local/nginx/conf/nginx.conf,将request的转发路径传给后端程序处理,将prod-api的请求全部代理给后台程序。
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 代理请求
proxy_pass http://192.168.83.129:8080/;
}
更改后,重启Nginx
/usr/local/nginx/sbin/nginx -s reload
- 更改完成,再次访问页面:
已有验证码,说明redis缓存开始运行,后端已经能够接收到响应了
登陆后,可以正常访问
整个项目部署完成。