接上一篇SpringBoot+Tomcat+Coding+Jenkins自动化构建部署(一),上篇文章完成了后端自动化构建部署,这篇文章继续完成前端VUE项目部署并以https的方式访问。

一、部署Tomcat,后端接口服务以https访问

  1. 首先使用启动一个Tomcat容器,然后使用docker ps查看该容器的ID。
docker run -it -d --name=tomcat tomcat:8
  1. 将容器中的目录复制到宿主机。
docker cp a4a4688e0f9e:/usr/local/tomcat/webapps/ /root/data/tomcat/
docker cp a4a4688e0f9e:/usr/local/tomcat/conf/ /root/data/tomcat/
docker cp a4a4688e0f9e:/usr/local/tomcat/logs/ /root/data/tomcat/
  1. 将该容器删除,重新启动一个容器。
docker rm -f a4a4688e0f9e
docker run -it -d --name=tomcat -p 8403:8443 -p 8080:8080 \
-v /root/data/tomcat/webapps/:/usr/local/tomcat/webapps/ \
-v /root/data/tomcat/conf/:/usr/local/tomcat/conf/ \
-v /root/data/tomcat/logs/:/usr/local/tomcat/logs/ tomcat:8
  1. 进入Tomcat容器内部,将webapps.dist中的文件复制到webapps中,复制完成按ctrl+p+q退出容器。
docker exec -it a0245807c1a9 bash
cp -r webapps.dist/* webapps
  1. 将提前准备好的Tomcat域名证书文件复制到容器中,我这里Tomcat的证书文件夹中是pfx文件。
docker cp /root/data/certificate/learning.***.cn_tomcat a0245807c1a9:/usr/local/tomcat/certificate/
  1. 将构建好的war包放到webapps文件中,配置server.xml。
<!--新增https配置-->
 <Connector
        protocol="org.apache.coyote.http11.Http11NioProtocol"
        port="8443" maxThreads="200"
        scheme="https" secure="true" SSLEnabled="true"
        keystoreFile="/usr/local/tomcat/certificate/learning.***.cn_tomcat/learning.***.cn.pfx"
        keystorePass="123456"
        clientAuth="false" sslProtocol="TLS"/>
<!--对不同项目带对应的项目名访问-->
 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
         <Context docBase="project1" path="/project1" reloadable="true"/>
         <Context docBase="project2" path="/project2" reloadable="true"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 </Host>
  1. 现在可以在外部用https访问后端接口,项目1访问的接口前缀是https://learning.***.cn/project1,项目2访问的接口前缀是https://learning.***.cn/project2
  2. 重启docker容器,使上面的配置生效。
docker restart a0245807c1a9

二、部署Nginx,前端页面以https访问

  1. 首先启动一个nginx容器
docker run --name nginx -d -it nginx
  1. 将nginx容器中的目录复制到宿主机本地。
docker cp 46e345a19158:/usr/share/nginx/html /root/data/nginx/
docker cp 46e345a19158:/etc/nginx/nginx.conf /root/data/nginx/
docker cp 46e345a19158:/var/log/nginx /root/data/nginx/logs/
docker cp 46e345a19158:/etc/nginx/conf.d /root/data/nginx/
  1. List item

删除nginx容器,再重新启动一个nginx容器。

docker run --name nginx -d -p 80:80 -p 443:443 -p 8443:8443 --privileged=true \
-v /root/data/nginx/html:/usr/share/nginx/html \
-v /root/data/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /root/data/nginx/logs/nginx:/var/log/nginx \
-v /root/data/nginx/conf.d:/etc/nginx/conf.d nginx
  1. 将nginx的证书文件复制到容器中。
docker cp /root/data/certificate/learning.***.cn_nginx 45929c04b699:/usr/local/certificate/
  1. 在conf.d文件中新建一个配置文件,配置前端访问路由,并配置后端统一接口访问地址。
server{
        listen 443 ssl;
        server_name learning.***.cn;
        ssl on;
        ssl_certificate /usr/local/certificate/learning.***.cn_nginx/learning.***.cn_bundle.pem;
        ssl_certificate_key /usr/local/certificate/learning.***.cn_nginx/learning.***.cn.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
                root /usr/share/nginx/html/project1/learning_***/dist/;
                index index.html;
        }
        #配置后端统一访问接口
        location /project1/ {
                 proxy_pass https://learning.***.cn:8403;
                 proxy_set_header Host $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;
        }

        location /css/ {
                root /usr/share/nginx/html/project1/dist/static/;
        }

        location /js/ {
                root /usr/share/nginx/html/project1/dist/static/;
        }
  1. 重启nginx,使配置生效。
docker restart 45929c04b699
Logo

前往低代码交流专区

更多推荐