1.环境准备
1.centos 7
2.docker
3.mysql 8.0.16
4.java 8
5.nginx latest
6.redis latest
2.项目配置文件的修改以及项目打包
2.1后端文件修改
①application.yml 修改服务器的HTTP端口,默认为8080,根据需求修改
②application-druid.yml修改数据库mysql和redis连接配置
2.2后端项目打包
虽然RruoYI是多模块,但是ruoyi-admin模块依赖其他模块,所以只需要获取admin模块的jar包即可,但是打包的时候需要全局打包。
找到项目的根目录进行全局打包。然后在ruoyi-admin模块下找到生成target目录将ruoyi-admin.jar存储在桌面,方便后续传到服务器。
2.3前端文件修改
①修改vue.config.js文件
2.4前端打包
①运行npm run build:prod命令生成dist文件夹并存放在桌面,方便后续传输到服务器
2.5.文件传输到服务器
通过xshell连接服务器,然后在通过Xftp将dist和ruoyi-admin.jar传输到服务器
3.服务器端
1.软件:docker的下载和nginx、redis、mysql的镜像的拉取
2.镜像的启动:
mysql:
docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \ //让容器具有root的权限
--restart unless-stopped \ //自动重启
-e MYSQL_ROOT_PASSWORD=****** \ //密码谨慎配置不要123456了,不然黑客会找到你!!!
-d mysql \
--lower_case_table_names=1 //建表时候所有字符转为小写
注意:除了设置复杂的密码外,最好将mysql默认的root用户名修改,这样黑客暴力破解就更难了
redis:
docker run \
-p 6379:6379 \
--name redis \
--restart=always \
-v /home/redis/data/:/data \
-d redis:3.2 redis-server \
--appendonly yes //必须持久化
注意:运行镜像的时候一定要设置持久化操作--appendonly yes,然后运行redis镜像后,最好进入redis设置相应的密码,不然后面你会吃很多亏(也可以--requirepass 123456设置密码,但是有时候不生效)。
1.进入redis
docker exec -it 容器id /bin/bash
2.运行命令:
redis-cli
3.查看现有的redis密码:
config get requirepass
4.设置redis密码
config set requirepass 密码
5.exit
nginx:
docker run --privileged -p 80:80 -p 443:443 \
-d --restart=always \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
-v /home/nginx/html:/usr/share/nginx/html:rw \
-v /home/nginx/logs:/var/log/nginx -d nginx
注意:nginx的挂载目录需要事先创建好,不然启动nginx的时候会秒退。
然后进入nginx.conf配置文件增加以下内容
server {
listen 80;
server_name 服务器ip; # 用服务器ip代替
location / {
root /usr/share/nginx/html/dist/;
index index.html index.htm index login;
try_files $uri $uri/ /index.html last;
}
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://服务器ip:8085/; # 可以用服务器ip代替
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
注意:在nginx.conf增加以上内容后,与此同时需要修改/home/nginx/conf/conf.d文件夹下的default.conf文件,因为nginx.conf是引入了default.conf,需要将default.conf文件的相应server部分删除,不然前端配置文件 /usr/share/nginx/html/dist/会不生效。但是你也可以只改动default.conf文件的server部分就需要改动nginx.conf文件了
3.DockerFile的创建
3.1 首先将ruoyi-admin.jar 包和dockerFile文件放在同一目录下
3.2 创建
FROM java:8
EXPOSE 8085
VOLUME /tmp
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localhosttime && echo "{TZ}" > /etc/timezone
ADD ruoyi-admin.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
运行下面命令生成镜像:
docker build -t ruoyi-vue .
注意:不要少一个 .
通过docker images查看redis、mysql、nginx、ruoyi-vue,java五个镜像是否存在
然后运行镜像:
docker run -d -p 8085:8085 --name vue ruoyi-vue
通过 docker ps 命令查看正在运行的镜像,redis、mysql、nginx、ruoyi-vue都正常运行
最后通过ip:8085就可以正常游览器访问了!!!
提醒:1.若启动镜像时,发现启动成功了,但是过一会用docker ps 又查看不到正在运行,可以用docker logs 容器id 来查看日志,然后通过相应的报错来解决问题
2.若你的springBoot项目里的功能与系统的时间有关联,则需要将系统时间与现实时间相统一,不然你的项目会报错!
3.启动镜像的时候最好设置--restart=always,同时docker也要设置开机自启,以防意外原因退出。
4.所有任务完成后,防火墙设置开启指定端口(80,3306,6379,8085)后,开启防火墙!!!
祝大家一切顺利!!!