将个人网站部署到vps

不知为何,某一个用来搭梯子的美国节点的vps今天被墙了,然后这个网站也是部署在那台vps上的,于是也光荣地牺牲了。想一想国内的vps只买了腾讯云的一台,于是只能再麻烦一次把网站迁移到腾讯云上了。所以记录一下迁移过程。

在本地上传ssh公钥

1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@123.207.143.168

下面的操作未特别说明的话都是登录服务器在服务器上进行操作

安装git和nginx

服务端更新

1
sudo apt-get update

服务端安装git和nginx

1
sudo apt-get install git-core nginx

配置git

初始化git仓库

1
2
3
mkdir hexo.git
cd hexo.git
git init --bare

创建网站目录

1
2
cd /var/www
mkdir hexo

配置git hooks

1
cd ~/hexo.git/hooks

写入post-receive文件

1
vim post-receive

文件内容:

1
2
3
4
5
6
7
GIT_REPO=~/hexo.git
TMP_GIT_CLONE=/tmp/hexo
PUBLIC_WWW=/var/www/hexo
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

赋予post-receive可执行权限

1
chmod +x post-receive

配置nginx

将ssl证书上传到vps上

1
scp ~/Desktop/214812723670307.* root@123.207.143.168:/etc/nginx/cert

配置hexo的nginx配置文件

1
vim /etc/nginx/conf.d/hexo.conf

文件内容:

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
36
server {
listen 80;
server_name 123.207.143.168;
return 301 https://limengting.site;
}

server {
listen 443 ssl http2;
root /var/www/hexo;
server_name 123.207.143.168;
ssl on;
ssl_certificate /etc/nginx/cert/214812723670307.pem;
ssl_certificate_key /etc/nginx/cert/214812723670307.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/hexo_access.log;
error_log /var/log/nginx/hexo_error.log;
location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
root /var/www/hexo;
access_log off;
expires 1d;
}
location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
root /var/www/hexo;
access_log off;
expires 10m;
}
location / {
root /var/www/hexo;
if (-f $request_filename) {
rewrite ^/(.*)$ /$1 break;
}
}
}

修改nginx默认监听端口

修改/etc/nginx/sites-available/default/etc/nginx/sites-enabled/default的80端口为1000以上的端口,否则和/etc/nginx/conf.d/hexo.conf中监听同一个端口会导致冲突。

/etc/nginx/sites-available/default/etc/nginx/sites-enabled/default文件中的

1
2
3
4
server { 
listen 80 default_server;
listen [::]:80 default_server;
...

修改成

1
2
3
4
server { 
listen 8080 default_server; ## 改成1000以上的端口都可以
listen [::]:8080 default_server;
...

重启nginx

1
/etc/init.d/nginx restart

修改部署位置重新部署

修改本地源码中hexo根目录下的_config.yml的deploy

1
2
3
4
deploy:
- type: git
repo: root@123.207.143.168:hexo.git
branch: master

删除部署文件,再重新部署

1
2
rm -rf .deploy_git/
hexo g && hexo d

修改域名解析

部署位置变化相应地也要在购买域名的官网的域名管理面板上修改域名解析。

至此就全部完成了。

谢谢小天使请我吃糖果
0%