此篇文章记录若依前后端分离版本的部署,注意:你需要确保你本地的mysql有对应的数据库并且有redis服务和npm run dev没有任何问题。
参考文章:https://blog.csdn.net/peter__xu/article/details/121898223
1.win10部署
官网:http://doc.ruoyi.vip/ruoyi-vue/document/hjbs.html#nginx%E9%85%8D%E7%BD%AE
1.1.后端jar包部署
首先注意对应的application.yml文件,这里是8090
使用Idea的maven直接打包,clean,package
打包完成后进入ruoyi-admin的target目录,以cmd模式进入上述目录,执行命令
java -jar ruoyi-admin.jar
,出现以下界面即为运行成功!!!
1.2.前端nginx部署
首先查看vue.config.js
文件的内容,target的地址对应的是后端的地址,port端口是打包好后访问的端口,也就是nginx代理的端口,默认是80,这里将其修改为70是为了防止80端口被占用等情况。
进入ruoyi-ui目录,注意以管理员模式开启cmd,执行命令npm run build:prod
,按照官网的说法这是打包正式环境执行的语句,打包成功后dist目录就有如下内容。
下载按照nginx:nginx:下载
编辑nginx.conf
文件
经过上面配置只要是经过:http://192.168.3.244:70/prod-api 发送的请求都会被动态代理到 http://localhost:8090
启动nginx,访问 http://192.168.3.244:70,出现登录页面即为登陆成功
如果登录失败检查端口是否开放
控制面板-防火墙-高级设置-入站规则-新建规则-端口,添加70,默认下一步起个名称
2.CentOS7使用Docker部署
注意:你准备的CentOS7的环境必须先能ping通网络,不然下面的步骤都做不了!
2.1.安装Docker
卸载(可选)
如果以前安装过旧版本的Docker,可以使用下面命令卸载:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
更新本地镜像源
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
然后输入命令安装docker-ce社区免费版
yum install -y docker-ce
启动Docker
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
通过命令启动docker:
# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker
# 重启docker服务
systemctl restart docker
输入命令 docker -v
可以查看docker版本,如下图所示:
2.2.配置镜像加速
docker官方镜像仓库网速较差,我们需要设置国内镜像服务:
参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
2.3.使用Docker安装mysql8
- 拉取mysql镜像,默认是最高版本,这里指定为8.0.26
docker pull mysql:8.0.26
- 在宿主机上创建对应的文件夹来对其进行挂载,易于管理Mysql配置文件,(当前操作是在根目录/home下),创建
mysql
目录并进入创建conf
,data
两个目录。
mkdir -p mysql && cd $_ && mkdir {conf,data}
- 在
conf
目录下创建my.cnf
文件
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Custom config should go here
!includedir /etc/mysql/conf.d/
max_connections=1000
wait_timeout=120
interactive_timeout=300
lower_case_table_names=1
- 创建MySQL容器
docker run \
--restart=unless-stopped \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
-v /home/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /home/mysql/data:/var/lib/mysql \
-d \
mysql:8.0.26
- 进入mysql容器修改加密规则防止远程访问报错
# 进入mysql容器
docker exec -it mysql bash
# 登录mysql,输入密码root,前面 -e参数设置的就是密码
mysql -uroot -p
use mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
- 至此就可以进行远程连接了,使用navicat进行远程连接,导入对应的数据库
2.4.使用Docker安装redis
# 拉取redis镜像
docker pull redis
# 创建并运行redis的持久化容器
docker run --name mr -p 6379:6379 -d redis redis-server --save 60 1 --loglevel warning
# 进入redis容器
docker exec -it mr redis-cli
#ping-->pong即为安装成功
2.5.使用Docker安装nginx
- 拉取nginx镜像
# 拉取nginx镜像
docker pull nginx
- 创建本地文件夹与nginx容器做挂载
mkdir -p /mydata/nginx
mkdir conf html log
在conf文件夹下创建 nginx.conf
文件,编辑内容如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 70;
server_name 172.16.7.102 # 你的IP地址
charset utf-8;
location / {
root /usr/share/nginx/html/dist;
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://172.16.7.102:8090/; # 你的IP地址
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include /etc/nginx/conf.d/*.conf;
}
注意:上面的 listen 70; 对应的是前端配置暴露的端口号,proxy_pass http://172.16.7.102:8090/;对应的是后端的application.yml配置的端口号
将前端打包好的dist文件夹上传到 /mydata/nginx/html
目录下,对其进行挂载并且运行nginx容器:
docker run -d -p 70:70 --name rynginx \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/log:/var/log/nginx \
nginx
2.6.使用Dockerfile创建镜像
- 在
/mydata
文件夹下创建一个文件夹docker
,将后端打包好的jar包和Dockerfile文件拷贝到该目录下,Dockerfile
的文件内容如下:
FROM java:8
VOLUME /tmp
ADD *.jar /app.jar
EXPOSE 8090
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
- 在
/mydata/docker
文件夹下构建镜像
# 注意后面有一个.
docker build -t ruoyi-admin .
- 使用自己的镜像启动容器
docker run -d -p 8090:8090 --name ruoyi ruoyi-admin
- 通过 ip地址:70访问,出行登录界面即为成功