前几天腾讯云的客服打电话过来,告知网站内容不符合个人备案的要求,不能出现外部链接,给了一周的整改时间。个人不太想修改之前的内容,所以购买了阿里云的香港服务器,重新部署网站,小结网站迁移的过程
内容列表
- 之前网站架构概述
- 迁移网站架构介绍
- 源码管理
Nginx
部署
之前网站架构概述
在阿里云上申请了域名和解析,将静态文件部署到腾讯云上。之前网址:https://www.zhujian.tech
迁移网站架构介绍
- 域名/解析
- 实现一:阿里云
- 实现二:
Namesilo/DNSPod
- 转发服务器:腾讯云
- 部署服务器:阿里云(香港)
在Namesilo
上申请了新的域名,在DNSPod
上解析到香港服务器:https://blog.zhujian.life
之前的网址进行反向代理;同时新设置了一个二级域名,解析到阿里云服务器上:https://blog.zhujian.tech
源码管理
- 对于源码而言,其托管到三个远程服务器:
Gitlab
(本地)、Github
和aliyun code
- 对于编译文件而言,其托管到两个远程服务器:香港服务器和
aliyun code
使用Docker Jenkins
进行自动化操作,,其传送编译文件到Github
和香港服务器很困难,所以实现如下:
- 在本地发送源代码到
Gitlab
(本地)、Github
和aliyun code
Gitlab
触发Jenkins
进行编译,发送编译文件到aliyun code
;另外新建一个仓库,加入一个test
文件(内容自定),推送到腾讯云服务器- 在腾讯云服务器仓库中,通过
hooks
文件post-receive
将新的推送消息发送给阿里云服务器 - 在阿里云服务器仓库中,通过
hooks
文件post-receive
下载aliyun code
仓库的编译文件,进行工作目录和裸仓库分离
就是因为卡,所以通过腾讯云服务器到推送消息发送到阿里云香港服务器;并利用aliyun code
进行编译文件的传送
因为服务器在香港,所以通过travis-ci
的方式进行编译构建可能会更简单
在腾讯云和阿里云服务器中,创建用户git
,创建仓库地址/data/repositories/blogs.git
,创建工作目录地址/data/workspace/blogs
腾讯云post-receive
文件实现如下:
1 2 3 4 5 6
| #!/bin/sh
git config --global user.name "xxx" git config --global user.email "xxx@xxx.com"
git push --force git@blog.zhujian.life:/data/repositories/blogs.git master
|
阿里云post-receive
文件实现如下:
1 2 3 4 5 6 7 8 9 10 11
| #!/bin/bash
git --work-tree=/data/workspace/blogs --git-dir=/data/repositories/blogs.git remote add origin git@code.aliyun.com:zjZSTU/blog.zhujian.life.git
git --work-tree=/data/workspace/blogs --git-dir=/data/repositories/blogs.git fetch origin master
git --work-tree=/data/workspace/blogs --git-dir=/data/repositories/blogs.git checkout -f
git --work-tree=/data/workspace/blogs --git-dir=/data/repositories/blogs.git reset --hard origin/master
git --work-tree=/data/workspace/blogs --git-dir=/data/repositories/blogs.git remote remove origin
|
注意 1:在云服务器上的操作均是在git
用户下实现,需要额外配置/etc/sudoers
,保证git
用户能够在data
路径下操作
1 2 3 4 5
| ... # User privilege specification root ALL=(ALL:ALL) ALL git ALL=(ALL:ALL) ALL ...
|
注意 2:需要配置.ssh/config
,防止上传时需要人工确认
1 2 3 4 5 6
| $ cat config Host blog.zhujian.life StrictHostKeyChecking no $ cat config Host code.aliyun.com StrictHostKeyChecking no
|
Nginx部署
使用Docker Nginx
进行网站转发和部署,同时需要注意ssl
证书的配置。腾讯云上的Nginx
配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| $ cat proxy.conf server { listen 9980; server_name zhujian.tech www.zhujian.tech;
charset utf-8;
ssl on; ssl_certificate cert/a.pem; ssl_certificate_key cert/a.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 阿里云和腾讯云会有差别 ssl_prefer_server_ciphers on;
location / { proxy_buffering on; proxy_buffers 128 8k; proxy_buffer_size 8k; proxy_pass https://blog.zhujian.life/; } }
|
阿里云上的配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| server { listen 443 ssl; server_name blog.zhujian.life;
charset utf-8;
ssl_certificate /etc/nginx/conf/1_blog.zhujian.life_bundle.crt; ssl_certificate_key /etc/nginx/conf/2_blog.zhujian.life.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on;
location / { root /opt/www; index index.html index.htm; }
error_page 404 /404.html; } server { listen 80; server_name blog.zhujian.life; return 301 https://$host$request_uri; }
|
相关阅读