一、环境准备
服务器
阿里云 ECS服务器
在安全组中开启端口(可以通过快速添加加入)
软件
本次部署采用的是 docker,软件环境都在 docker 上
需要提前 MySQL ,Redis,Nginx镜像
二、运行镜像
通过XShell远程连接
MySQL安装
docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \
--restart unless-stopped \
-v /home/mysql8.0.20/mysql:/etc/mysql \
-v /home/mysql8.0.20/logs:/logs \
-v /home/mysql8.0.20/data:/var/lib/mysql \
-v /home/mysql8.0.20/mysql-files:/var/lib/mysql-files \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.20 \
--lower_case_table_names=1
mysql安装之后需要进行一些才能远程连接
进入mysql容器
docker exec -it mysql /bin/bash
mysql -u root -p
use mysql;
update user set host = ‘%’ where user = ‘root’;
ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;
select user,host,plugin from user;
flush privileges;
配置成上图就可以用电脑端的navicat远程连接数据库了
然后新建ry-vue数据库,把ruoyi的数据库导入
redis安装
docker run -p 6379:6379 --name redis -v /home/redis/data/:/data -d redis:3.2 redis-server --appendonly yes
Nginx安装
docker run \
-d \
-p 80:80 \
--name nginx \
-v /home/nginx/conf:/etc/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/logs:/var/log/nginx \
nginx
运行完之后,发现总是会自动退出,需先创建挂载目录,然后再运行命令
先删除刚刚的镜像nginx
docker rm nginx
先在/home.nginx/conf中新建nginx.conf文件
添加如下配置,注意修改成自己的服务器ip
user root;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name 120.26.196.113; # 可以用服务器ip代替
location / {
root /usr/share/nginx/html/dist/;
index index.html index.htm ;
try_files $uri $uri/ /index.html;
}
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://120.26.196.113:8080/; # 可以用服务器ip代替
}
}
include /etc/nginx/conf.d/*.conf;
}
然后重新运行
docker run --name nginx01 -p 80:80 \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/logs:/var/log/nginx \
-d nginx
可以用 docker ps 看到nginx不会自动退出即安装成功
三、打包项目并部署
前端
修改vue.config.js 中 devServer节点映射端口,与后端端口一致,我改了ip地址
然后运行
npm run build:prod
会在本地生成 dist 目录,将dist目录放入阿里云服务器的/home/nginx/html中
这时可以打开网页 阿里云ip:80 查看到前端登录页面了
后端
修改 application.yml 端口、文件上传路径
修改logback.xml 日志生成路径log.path
修改 MySQL、Redis地址
application-druid.yml中修改数据库连接
运行以下命令:
mvn clean
mvn package
在 ruoyi-admin的 target下生成了一个 jar 包,那就是我们需要的
使用的是 Dockerfile + jar 打包成镜像的部署方式(jar包上一步已生成)
创建一个Dockerfile文件
FROM java:8
VOLUME /jiang
ADD ruoyi-admin.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]
在服务器中新建一个文件夹,将dockerfile文件和jar包放进去
生成镜像
docker build -t ruoyi-vue .
运行生成的镜像即可
docker run -d -p 8080:8080 --name mxy-vue ruoyi-vue
可以看到正在运行
如果正在运行的镜像中没有后端镜像,应该后端是报错了,大概率是有些端口没有改到,需要重新修改后,打成jar包,删除mxy-vue容器(docker rm mxy-vue)重新部署,可以查看日志输出查看具体报错
docker logs -f mxy-vue
成功部署截图 打开120.26.196.113:80