将hexo博客从github和coding迁移至自己买的腾讯云服务器

本来博客部署在coding上的,经常访问速度超级慢。索性就研究了一下怎么部署到自己买的云服务器上。

我买的是腾讯云的服务器。网上其实有蛮多教程的。我这里还是做了一次整理。

在服务器上安装git

1
yum install -y git

创建git用户

1
2
3
4
adduser git
passwd git
chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容

1
root ALL=(ALL) ALL

在它后面添加一行

1
git ALL=(ALL) ALL

保存并退出,将权限修改回来

1
chmod 400 /etc/sudoers

配置密钥

在windows本地的git bash中创建密钥(如果已经设置好环境变量,直接在cmd命令行执行即可)

1
ssh-keygen -t rsa

一路回车即可

回到云服务器。切换至 git 用户,创建 .ssh 文件夹以及 authorized_keys 文件并将本地的 id_rsa.pub 文件内容粘贴到里面。

1
2
3
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

修改权限

1
2
3
cd ~
chmod 600 .ssh/authorzied_keys
chmod 700 .ssh

配置nginx(省略)

自动化部署

建立git仓库

1
2
3
su root
cd /home/git/repo # 在 git 用户目录下创建
git init --bare blog.git

修改目录所有者

1
chown git:git -R blog.git

使用git-hooks同步网站目录

1
2
cd /home/git/repo
vim blog.git/hooks/post-receive

写入内容【这里要考虑权限问题,git用户是否有权限向web目录/www/wwwroot/hexo下创建新的文件,可以使用git用户进行测试】

1
2
#!/bin/sh
git --work-tree=/www/wwwroot/hexo --git-dir=/home/git/repo/blog.git checkout -f

保存后赋予可执行权限

1
chmod +x /home/git/repo/blog.git/hooks/post-receive

本地配置

hexo 根目录下的 _config.yml 文件,找到 deploy。

1
2
3
4
5
6
7
deploy:
type: git
repo:
#github: https://github.com/xxxx/xxx.github.io.git
#coding: https://git.coding.net/xxx/xxx.git
server: git@100.1.1.100:/home/git/repo/blog.git
branch: master

执行部署命令即可

1
hexo g -d