赞
踩
本次整体部署操作使用阿里云服务器,这里我选择的是香港地区的2核2G ECS(可以省略域名备案操作)。
涉及到的中间件如下:
- Nginx
- MySQL
- Redis
- 后端项目
- 前端项目
首先登录到阿里云的官网,选购一台公网服务器,由于本次我部署项目体量比较小,所以这里选择的ECS服务器配置如下:
- 系统:CentOS 7.9
- 配置:2核2G(按量) + 公网ip
- 地区:中国香港
选购完毕服务器后,将本次部署需要的安全组进行开放:
首先在阿里云服务器上安装好Docker和DockerCompose
,在后续部署过程中需要通过Docker方式,具体安装步骤参考下述文章第1节:
https://blog.csdn.net/weixin_46594796/article/details/122750009
通过下述命令可以判断是否安装成功:
前端后端打包之前,需要将项目配置信息进行调整,主要是将前后端项目配置文件中的本地地址调整为你申请的阿里云ECS公网ip地址,后端配置
举例:
配置调整完毕后,需要前端代码和后端代码进行打包操作。
针对前端:执行npm run build
打包完成后,可以看到前端dist
文件
针对后端:执行mvn clean package -Dmaven.test.skip=true
打包完成后,可以看到后端jar
文件
将后端jar
和前端dist
文件夹中的内容上传到阿里云ECS根目录(~
),然后按照下述操作进行:
# 创建文件夹 mkdir /opt/project mkdir /opt/project/backend mkdir /opt/project/ssl mkdir /opt/project/nginx mkdir /opt/project/nginx/html mkdir /opt/project/nginx/log mkdir /opt/project/mysql mkdir /opt/project/mysql/conf mkdir /opt/project/mysql/data mkdir /opt/project/redis mkdir /opt/project/redis/conf mkdir /opt/project/redis/data # 移动前后端项目文件 cd ~ mv project-test.jar /opt/project/backend mv index.html /opt/project/nginx/html mv static /opt/project/nginx/html
Dockerfile的作用是将后端SpringBoot的项目Jar包build成Docker镜像。
首先创建Dockerfile文件:
# 进入到backend目录
cd /opt/project/backend
# 创建Dockerfile文件
vim Dockerfile
将下述内容同步到Dockerfile中:
# 基础镜像:构建JDK8镜像依赖
FROM openjdk:8
# 作者
MAINTAINER 徐志斌
# 宿主机文件 COPY 镜像(类似COPY,不过COPY不能自动解压文件、访问网络资源)
ADD project-test.jar /project-test.jar
# 运行成容器时的端口
EXPOSE 9999
# 容器启动时执行(类似CMD)
ENTRYPOINT ["java", "-jar", "project-test.jar"]
构建SpringBoot项目jar镜像:
# docker build -t 镜像名 -f 文件名 工作目录
docker build -t project-test -f Dockerfile /opt/project/backend
构建成功后,通过命令docker images
查看刚刚生成的镜像:
这样就说明Dockerfile没有任何的问题,此时就可以通过命令将SpringBoot项目JAR镜像删除:
docker rmi 镜像id
进入目标目录,创建好Nginx配置文件:
# 进入目录
cd /opt/project/nginx
# 创建配置文件
vim nginx.conf
将下述配置复制到nginx.conf文件中(注意换成自己的公网ip):
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name 8.210.65.213; location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; index index.html index.htm; } location /user/ { proxy_pass http://8.210.65.213:9999; proxy_redirect default; rewrite ^/user/(.*) /$1 break; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
DockerCompose的作用是批量操作Docker容器,这样就可以一键部署好我们的环境了。
首先进入到目标目录,创建docker-compose.yml
文件:
# 进入目标目录,创建文件
cd /opt/project
vim docker-compose.yml
将下述内容复制到文件中:
version: '3' services: # Nginx nginx: image: nginx:latest container_name: nginx ports: - 80:80 - 443:443 volumes: - /opt/project/nginx/html:/usr/share/nginx/html - /opt/project/nginx/log:/var/log/nginx - /opt/project/nginx/nginx.conf:/etc/nginx/nginx.conf - /opt/project/ssl:/etc/nginx/ssl privileged: true # MySQL mysql: image: mysql:8.0.27 container_name: mysql environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: Xuzhibin123. MYSQL_DATABASE: bingo ports: - 3306:3306 volumes: - /opt/project/mysql/data:/var/lib/mysql - /opt/project/mysql/conf:/etc/mysql/conf.d privileged: true restart: always # Redis redis: image: redis:6.2.6 container_name: redis ports: - 6379:6379 environment: TZ: Asia/Shanghai privileged: true restart: always # 后端JAR backend-project: image: backend-project container_name: backend-project build: ./backend # 运行Dockerfile ports: - 9999:9999 depends_on: # mysql,redis启动后在启动 - mysql - redis
# 运行 docker-compose.yml
cd /opt/project
docker-compose up -d
此时就可以通过输入ip地址
访问到部署完毕的SpringBoot + Vue项目了:
注意:国内ECS服务器想要配置域名需要进行备案操作(时间非常久),所以我本篇文章我选择的ECS服务器地区为香港,这样可以省略掉域名备案操作!
关于配置域名和SSL证书流程请参考如下文章:
https://blog.csdn.net/weixin_46594796/article/details/130446464
注意:
配置好域名后,需要将前端项目中的公网ip切换成域名地址!
最后 Nginx 大致如下:
worker_processes 1; events { use epoll; worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream backend { server 8.210.65.213:9999 max_fails=2 fail_timeout=30s; } # HTTP转为HTTPS server { listen 80; server_name www.xuzhibin.top; rewrite ^(.*) https://www.xuzhibin.top; } server { listen 443 ssl; server_name www.xuzhibin.top; ssl_certificate /etc/nginx/ssl/xuzhibin.top.pem; ssl_certificate_key /etc/nginx/ssl/xuzhibin.top.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; index index.html index.htm; } location ^~/user/ { proxy_pass http://backend; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。