本网站使用阿里云服务器部署,涉及的技术栈有:Docker + Nginx + Vue + SpringBoot + MySql + 二级域名
部署前知识难点:二级域名如何设置以及转发到对应的服务
直接开干!
在部署之前,首先在Linux服务器上安装Docker,以及先安装好Mysql对应版本的镜像,然后运行容器。将java工程对应的sql文件导入mysql。再将SpringBoot项目数据库连接到对应的服务器地址。
部署api服务
将SpringBoot工程打包,将jar包复制到/usr/hongcheng/api-manage目录下面,然后在该目录下新建dockerfile文件
# Docker image for springboot file run
# VERSION 0.0.1
# Author: hongcheng
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER hongcheng
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为api-manage.jar
ADD manage-0.0.1-SNAPSHOT.jar api-manage.jar
# 运行jar包
RUN bash -c 'touch /api-manage.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/api-manage.jar"]
然后执行以下命令
# 制作镜像(别忘记最后一个符号 . )
docker build -t api-manage-1.0.1 .
# 将制作好的镜像作为容器运行
docker run -d -p 8088:8088 --name=hongcheng_manage_8088
打开浏览器访问你的服务器域名+端口号就可以成功访问到接口了,这样我们的api服务已经搭建好了。
部署管理后台
将Vue后台项目打包成dist文件夹,然后将该文件夹复制到/usr/hongcheng/web-manage,然后在这个目录下分别新建dockerfile文件、nginx-manage.conf配置文件
# dockerfile 文件
FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY nginx-manage.conf/ /etc/nginx/conf.d/default.conf
# nginx-manage.conf配置文件
upstream api_manage {
server { 你的服务器ip }:8088;
keepalive 5000;
}
server {
listen 80; #监听的端口
server_name { 你的二级域名 }; #监听的URL
root /usr/share/nginx/html; #项目路径
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
rewrite ^.+api/?(.*)$ /$1 break;
proxy_pass http://api_manage; #node api server 即需要代理的IP地址
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
接着在/usr/hongcheng/web-manage目录下面,分别执行以下命令,管理后台到这就是基本部署好了
# docker镜像打包命令
docker build -t nginx-manage-1.0.1 .
# docker生成容器命令
docker run -d -p 8087:80 --name=nginx-manage-8087 镜像id
部署博客网站
将Vue博客项目打包成dist文件夹,然后将该文件夹复制到/usr/hongcheng/web-blog,然后在这个目录下分别新建dockerfile文件、nginx-blog.conf配置文件
# dockerFile文件
FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY nginx-blog.conf/ /etc/nginx/conf.d/default.conf
# nginx.conf配置文件
upstream api_manage {
server { 你的服务器ip }:8088;
keepalive 5000;
}
server {
listen 80; #监听的端口
server_name { 你的二级域名 }; #监听的URL
root /usr/share/nginx/html; #项目路径
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
rewrite ^.+api/?(.*)$ /$1 break;
proxy_pass http://api_manage; #node api server 即需要代理的IP地址
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
接着在/usr/hongcheng/web-blog目录下面,分别执行以下命令,博客网站到这就是基本部署好了
# docker 镜像打包命令
docker build -t nginx-blog-1.0.1 .
# docker 运行容器命令
docker run -d -p 8086:80 --name=nginx-blog-8086 镜像id
部署Nginx负责二级域名转发
走完上面的过程,我们的部署可以算是完毕了,可以通过 域名 / ip + 端口号的形式去访问我们对应的服务。但是呢,逼格不够高,这时我们再引进二级域名访问呢,提升档次。 首先,进入到阿里云控制台的云解析DNS那里,新增二级域名,成功后通过二级域名是访问到我们的公网ip+80端口。
!
接着在/usr/hogncheng/nginx-manage目录,这里负责我们整个二级域名访问的转发,将监听到的二级域名转发到我们对应服务的ip地址上去。 新增nginx.conf配置文件:
events {
worker_connections 1024; ## Default: 1024
}
http{
server {
listen 80; #监听的端口
server_name { 你的二级域名 }; #监听的URL
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://{ 你的服务器ip }:8086;
}
}
server {
listen 80; #监听的端口
server_name { 你的二级域名 }; #监听的URL
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://{ 你的服务器ip }:8087;
}
}
}
新增一个容器运行nginx,注意,我们将上面的nginx.conf文件挂载到容器内对应的nginx配置文件,然后以后可以直接通过修改上面的配置文件,来控制nginx的配置
# 拉取nginx镜像
docker pull nginx
# 执行命令,运行容器
docker run -p 80:80 --name=hongcheng_nginx_80
-v /usr/shc/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/shc/nginx/dist/:/usr/share/nginx/html -d nginx
这就是我的博客网站服务器部署的过程了,算是一个搭建起来非常简单的demo了,,对于一个网站未来的升级与维护,还是需要更多具体到位的部署过程的~。
更多Java后端开发干货,可以关注我的微信公众号「 红橙呀 」。