Spring Boot项目部署——以ruoyi为例

说明

部署系统: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 ./

jdk解压

  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

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

source /etc/profile

查看Java环境
查看Java环境

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 ./

解压node

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

node安装结果

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

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

  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的映射,并取出)
    redis测试
  2. 此时redis只能在本地访问,要设置远程连接,编辑redis配置文件/etc/redis/6379.conf,将bind 127.0.0.1修改为0.0.0.0
    修改redis配置
    然后重启redis服务:
systemctl restart redis_6379.service
  1. 远程连接设置后,与mysql一样,需要开放6379端口使得外部可接入,编辑vim /etc/sysconfig/iptables,加入下图的指令开放6379端口后重启防火墙。
service iptables restart

开放6479端口

  1. 设置密码
    编辑redis配置文件/etc/redis/6379.conf,找到#requirepass foobared这行,设定密码为111111
    设置redis密码
    然后重启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
    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目录,用于存放整个项目的文件
    workspace
  2. 将ruoyi-ui通过XFTP上传至服务器的/root/workspace目录下
    ruoyi-ui上传
  3. 执行命令,下载项目所需的依赖
npm install --unsafe-perm --registry=https://registry.npm.taobao.org

下载前端依赖

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

前端打包
打包后生成dist文件
dist文件

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

nginx路径更改
与mysql与redis一样的操作,将80端口开放。
此时已经可以通过访问服务器地址192.168.83.129来查看前端页面,但是还没有后端程序,所以只有一个页面,可以看到验证码是无法加载的。
前端部署成功
前端部署成功

2. 后端部署

  1. 首先在Windows上更改后端项目的相关配置,主要是数据库连接和redis的连接。
    更改Mysql
    mysql
    更改redis
    redis
  2. 后端共6个模块
    后端6模块
    Spring Boot项目内置tomcat服务器,在Windows上分别打包为jar包,并将六个jar包上传至服务器/root/workspace/ruoyi目录下
    后端打包上传
  3. 执行ruoyi-admin.jar,运行后端程序
nohup java -jar ruoyi-admin.jar &

执行后端

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

  2. 再次更改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
  1. 更改完成,再次访问页面:
    已有验证码,说明redis缓存开始运行,后端已经能够接收到响应了
    收到后端处理
    登陆后,可以正常访问
    正常访问

整个项目部署完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值