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开发环境。

  1. 首先删除系统自带的OPENJDK
    查找已安装的OpenJDK包
rpm -qa | grep java

若存在相关的包,使用命令卸载

yum -y remove xxx
  1. 把准备好的jdk安装包放在root下(jdk-8u291-linux-x64.tar.gz),在/usr/local下创建java文件夹,并进入到java文件夹下
  2. 将root目录下的JDK解压到/usr/local/java下,解压完成,出现一个jdk1.8.0_291目录
tar -zxvf /root/jdk-8u161-linux-x64.tar.gz -C ./

若依 springboot_centos

  1. 编辑/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

若依 springboot_mysql_02

然后执行命令,使环境变量生效

source /etc/profile

查看Java环境

若依 springboot_mysql_03

3.2 配置Node.js环境

  1. 下载安装包(node-v14.16.1-linux-x64.tar.xz)放在root目录下,在/usr/local下创建node文件夹,并进入到node文件夹下
  2. 将root目录下安装包解压至/usr/local/node中,解压完成,出现一个目录。
tar -xJvf /root/ node-v14.16.1-linux-x64.tar.xz -C ./

若依 springboot_linux_04

  1. 编辑~/.bash_profile文件,加入node的配置信息
export PATH=/usr/local/node/node-v12.16.3-linux-x64/bin:$PATH
  1. 执行命令,使环境生效,并验证安装结果
source ~/.bash_profile

若依 springboot_redis_05

3.3 安装Mysql数据库

  1. 卸载自带的Mariadb,方法与卸载OpenJDK相同
  2. 准备安装包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
  1. 准备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
  1. 安装Mysql
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --
datadir=/usr/local/mysql/data

创建完成后给出初始密码:

若依 springboot_若依 springboot_06

  1. 复制启动脚本到资源目录./support-files/mysql.server/etc/init.d/mysqld,修改/etc/init.d/mysqld,写入
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
  1. 设置Mysql系统服务并开启自启动
    首先增加mysqld服务控制脚本执行权限:
chmod +x /etc/init.d/mysqld

同时将mysqld服务加入系统服务:

chkconfig --add mysqld
  1. 在~/.bash_profile上加入mysql环境变量
export PATH=$PATH:/usr/local/mysql/bin

然后执行source ~/.bash_profile使其生效。

  1. 首次登陆更改密码步骤省略
  2. 设置远程主机登陆,进入到mysql后,更改user表中数据
mysql> use mysql;
mysql> update user set user.Host='%' where user.User='root';
mysql> flush privileges;
  1. 注意若在Windows主机上无法连接mysql,则需要更改/etc/sysconfig/iptables防火墙文件,开放端口3306,重启防火墙后即可生效
service iptables restart

3.4 Redis服务配置

  1. 准备安装包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 ./
  1. 进入到redis-5.0.8/src目录下,编译、安装
cd src
make install
  1. 进入redis-5.0.8/目录下utils目录下,执行redis服务
./install_server.sh
  1. 启动redis-cli客户端,并对redis测试
    (存入foo到bar的映射,并取出)
  2. 此时redis只能在本地访问,要设置远程连接,编辑redis配置文件/etc/redis/6379.conf,将bind 127.0.0.1修改为0.0.0.0

    然后重启redis服务:
systemctl restart redis_6379.service
  1. 远程连接设置后,与mysql一样,需要开放6379端口使得外部可接入,编辑vim /etc/sysconfig/iptables,加入下图的指令开放6379端口后重启防火墙。
service iptables restart

若依 springboot_若依 springboot_07

  1. 设置密码
    编辑redis配置文件/etc/redis/6379.conf,找到#requirepass foobared这行,设定密码为111111

    然后重启redis服务:
systemctl restart redis_6379.service

3.5 配置Nginx服务器

  1. 准备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 ./
  1. 安装其他依赖:
yum -y install pcre-devel
yum -y install openssl openssl-devel
yum -y install gcc-c++
  1. 编译安装Nginx
cd nginx-1.17.10
./configure
make && make install
  1. 安装完成后,Nginx可执行文件位于/usr/local/nginx/sbin/nginx
  2. 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. 前端部署

  1. 在root目录下新建workspace目录,用于存放整个项目的文件
  2. 将ruoyi-ui通过XFTP上传至服务器的/root/workspace目录下
  3. 执行命令,下载项目所需的依赖
npm install --unsafe-perm --registry=https://registry.npm.taobao.org

若依 springboot_redis_08

  1. 对ruoyi-ui打包:
npm run build:prod

若依 springboot_centos_09


打包后生成dist文件

若依 springboot_centos_10

  1. 更改Nginx的配置文件/usr/local/nginx/conf/nginx.conf,将url请求转移到ruoyi-ui打包而成的dist中
location / {
            root   /root/workspace/ruoyi-ui/dist;
            index  index.html index.htm;
 }

若依 springboot_mysql_11


与mysql与redis一样的操作,将80端口开放。

此时已经可以通过访问服务器地址192.168.83.129来查看前端页面,但是还没有后端程序,所以只有一个页面,可以看到验证码是无法加载的。

若依 springboot_linux_12


前端部署成功

2. 后端部署

  1. 首先在Windows上更改后端项目的相关配置,主要是数据库连接和redis的连接。
    更改Mysql

    更改redis
  2. 后端共6个模块

    Spring Boot项目内置tomcat服务器,在Windows上分别打包为jar包,并将六个jar包上传至服务器/root/workspace/ruoyi目录下
  3. 执行ruoyi-admin.jar,运行后端程序
nohup java -jar ruoyi-admin.jar &

若依 springboot_redis_13

  1. 此时前后端项目均已运行,但是二者没有关联,查看网页中的request URL,找到转发路径prod-api。
  2. 若依 springboot_若依 springboot_14

  3. 再次更改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/;
}

若依 springboot_mysql_15


更改后,重启Nginx

/usr/local/nginx/sbin/nginx -s reload
  1. 更改完成,再次访问页面:
    已有验证码,说明redis缓存开始运行,后端已经能够接收到响应了

    登陆后,可以正常访问

整个项目部署完成。