首页 > 技术知识 > 正文

历经一个月,我的域名fizz.ink终于备案成功了。于是开始了新一轮的网站折腾。 折腾的目的是想要学习网站部署的细节以及相关知识,域名解析,一台服务器部署多个二级域名的项目。以及Docker的配置。

我的资源

已备案的域名 一台腾讯云服务器(已安装Docker) 配置4核8G 2M带宽

要部署的服务有这些。

fizz.ink 是网站入口,有以下链接 gitlab 使用 gitlab.fizz.ink访问 rancher 使用 rancher.fizz.ink访问 tool 使用 tool.fizz.ink访问 node-red 使用 node-red.fizz.ink访问 promethus 使用 promethus.fizz.ink访问 scratch 使用 scratch.fizz.ink访问 jenkins 使用 jenkins.fizz.ink访问 grafana 使用 grafana.fizz.ink访问 首先配置好我的域名解析 如下图

优雅地部署多个项目到一台服务器,并配置多个二级域名

具体启动方式是使用Docker将各个项目起来,最后使用Nginx将各个端口代理起来,都使用listen 80端口

具体做法如下

mkdir -p /home/fizz/nginx/{config,www,cert}

递归在/home/fizz/nginx下创建config(存放配置文件),www(存放网站静态文件),cert(存放SSL证书)三个文件夹

使用Docker运行各个项目

Fizz docker run -d -p 8001:80 –name=fizz fizz

(ps:请使用自己的容器名)

Rancher docker run -d –restart=unless-stopped –name=rancher -p 8002:80 -p 8003:443 rancher/rancher Tool docker run -d -p 8004:80 –name=tool tool

(ps:请使用自己的容器名)

GitLab sudo docker run –detach \ –hostname gitlab.mczaiyun.top \ –publish 8005:443 –publish 8006:80 –publish 222:22 \ –name gitlab \ –restart always \ –volume /srv/gitlab/config:/etc/gitlab \ –volume /srv/gitlab/logs:/var/log/gitlab \ –volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest Grafana docker run -d -p 8007:3000 –name=grafana grafana/grafana Prometheus docker run -d –name=prometheus -p 8008:9090 prom/prometheus Node-RED docker run -d -p 8009:1880 –name=node-red nodered/node-red Scratch docker run -d -p 8010:80 –name=scratch scratch

(ps:请使用自己的容器名)

Jenkins docker run -d -p 8011:8080 –name=jenkins jenkinsci/blueocean 项目启动完成后

项目启动完成后,需要先使用IP验证一下服务是否可以访问,如果不能访问检查下防火墙,安全组。查看下日志 使用命令

# 查看容器日志 docker logs [容器名] # 查看运行的容器 dcoker ps

项目启动完整无误后,需要编写nginx配置文件 如下

创建项目的配置文件

touch fizz.conf gitlab.conf grafana.conf jenkins.conf node-red.conf prometheus.conf rancher.conf scratch.conf tool.conf

内容分别是

fizz.conf server { listen 80; server_name fizz.mczaiyun.top; location / { proxy_pass http://127.0.0.1:8001; } } rancher.conf map $http_upgrade $connection_upgrade { default Upgrade; close; } server { listen 443 ssl; server_name rancher.mczaiyun.top; ssl_certificate /etc/nginx/cert/rancher.mczaiyun.top.pem; ssl_certificate_key /etc/nginx/cert/rancher.mczaiyun.top.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; add_header Access-Control-Allow-Origin *; location / { proxy_pass http://127.0.0.1:8002; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_read_timeout 900s; } }
<
gitlab.conf server { listen 80; server_name gitlab.mczaiyun.top; location / { proxy_pass http://127.0.0.1:8006; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_read_timeout 900s; } } node-red.conf server { listen 80; server_name node-red.mczaiyun.top; location / { proxy_pass http://210.22.22.150:1862; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_read_timeout 900s; } }

tool.conf,grafana.conf,prometheus.conf, scratch.conf 与fizz.conf 的内容一致,除了端口号不一样。

最后一步:启动网关Nginx代理 # 将config目录挂载到nginx的配置文件目录conf.d # 将www目录挂载到nginx的/html目录 # 将cert目录挂载到nginx的cert目录 docker run -p 443:443 -p 80:80 –name nginx \ -v /home/fizz/nginx/config:/etc/nginx/conf.d \ -v /home/fizz/nginx/www:/usr/share/nginx/html \ -v /home/fizz/nginx/cert:/etc/nginx/cert \ -d nginx 写在最后

其中最主要是使用Nginx配置文件中的server_name监听不同的域名访问,分别代理到不同的真实服务中,此外,http转发https,证书配置,以及websocket的转发。都是本次探索获取的知识点。

猜你喜欢