实战如何用一台服务器 部署多个不同的 WEB 专案 (use nginx in docker)
写这篇文章的目的呢,主要是因为最近在部署一个网站。
部署网站这个活儿,说简单不简单——因为它要涉及到配置服务器环境的问题。
说难也不难——因为它也仅仅需要涉及这些问题,它是可控、可复制的。
也就是说,当你学会一次部署网站,之后就都会了。
最后,觉得整篇文章太长了的同学,可以直接拉到最底下,有总结性的理论一篇,字数很少,解释的我认为很清楚。
在说一切问题之前,我们先来跟大家回顾一下软件开发的总流程。
首先,软件开发的种类分为以下两种:
工程类软件包括:
也就是说,工程类软件主要是如下四大类的:
(算法类的我不太熟悉,就不在这里献丑了,但是我认为目前的算法岗位,人工智能的需求比较多。)
本篇文章所述的呢,属于 WEB - 浏览器端 SPA 应用开发 的一篇相关技术。
也就是把 单页应用(SPA) 部署到一个服务器上,并且让使用者可以通过域名访问它的全流程。
闲话不多说,我们现在开始。
购买腾讯云 / 阿里云服务器的最主要原因,是为了获得一个 固定公网 IP 地址。
理论上来说,我们自己的个人计算机也是拥有成为一台服务器的可能性的。
但是由于没有一个固定 IP,固其它的人不可以很方便的访问到我们这个服务器。
在这里我提供了一个购买腾讯云服务器的连结地址,大家可以通过它购买一台腾讯云的 CVM 云服务器。
貌似还是挺便宜的....
另外,操作系统建议大家使用 CentOS,本文也将以 CentOS 作为案例。
(选型原因:有一次在与一个身在新加坡的运维朋友聊天的时候,他跟我说,他们很少用 Ubuntu,老莫名其妙宕机)
点选上面的网址,进入腾讯服务器的控制台。
找到 重置密码按钮,按提示重置 SSH 密码。
按照上述网址,找到自己对应平台所需要的 SSH 软件,下载并安装。
(由于我使用的是 macos,故下文均以 finalshell 作为演示截图)
1、remove old version
2、安装必要工具
3、新增软件源资讯
4、更新 yum 快取:
5、安装 Docker-ce:
6、启动 Docker 后台服务
docker composer 是一个很好用的 Docker 进阶工具。
我们可以通过撰写 docker-composer.yml 档案并执行 docker-compose up -d 来更快速的安装某一套环境。
上面的两部操作中,我们让 Portainer
——也就是我们的 Docker 视觉化管理系统执行在了服务器的9000 埠上。
这个原因就是,我们没有配置腾讯云的安全组协议。
腾讯云的安全组是什么意思呢?
就是说,腾讯云会帮你拦截访问你服务器基本上所有埠的 HTTP 请求,
除非你对某个埠单独配置了安全组协议。
所以说,我们现在需要配置下安全组协议好让 9000 埠可以被访问。
点选上面的网址,进入安全组配置,点选“新增入站规则”,按如下方式新增:
在阿里云中购买域名,并且解析到你的服务器 IP 地址上去。
当你有多个 WEB 应用都要部署到同一个服务器上时,请确保解析了多个二级域名在同一个服务器上。
(一级域名 ;二级域名: 或 csm.xxx.org)
这里值得注意的是——域名解析的意思。
首先,先在我们的服务器中的 root 目录下面建立资料夹 nginx-reverse-proxy,并在其中建立三个子资料夹:
接下来,我们在 conf 资料夹下建立一个档案 nginx.conf:(其内容如下)
最后,我们执行 docker 命令:
首先,先在我们的服务器中的 root 目录下面建立资料夹 nginx-www,并在其中建立三个子资料夹:
去配置安全组,让其可以访问 90 埠
我们现在把我们的 vue 专案打包,执行 npm run build,将专案档案下的 dist 资料夹下面的内容复制到目录:
在 portainer 中重启 container(访问之前的 ip:9000 即可)
此时我们在浏览器中输入 ip:90,即可看到我们托管的网站。
首先,先在我们的服务器中的 root 目录下面建立资料夹 nginx-cms,并在其中建立三个子资料夹:
去配置安全组,让其可以访问 100 埠
当我们修改完 nginx.conf,我们需要使用如下指令让其生效:
并且最后需要在 portainer 中重启 container
需求:将多个 WEB 专案,部署在一台服务器上。并且每一个专案,都有一个自己的域名可以访问。
解决方案: