hexo博客同时部署到github和VPS上
前言
有一台VPS一直空闲,未免有点浪费,所以想把博客部署到VPS上,并且绑定域名
之前尝试过这么做过,但是一直都没有成功,因为这其中有很多细节都是需要注意的,所以还是写一篇博客来记录这次的部署过程
以后换VPS的时候就不用像这次一样到处查找资料了
原理
部署到VPS的原理即是在VPS上搭建git服务器,然后每次提交public文件夹中的文件到VPS时,通过git-hooks钩子来同时复制文件到网站的根目录上
其实关键的是git服务器的搭建,因为想要免密码ssh登录的话需要配置一系列东西
部署到github就不说了,因为这个非常好部署,github其实也是一个git服务器,但是其已经搭建好了,我们只需要将公钥交给github即可完成免密码登录
git服务器的搭建
安装git并配置用户与邮箱
首先创建好git用户并且输入密码
1 | $ useradd git |
随后就是配置git的用户名和邮箱
1 | $ git config --global user.name "username" |
配置完成后生成SSH密钥
1 | $ ssh-keygen -t rsa -C "mail@gmail.com" |
我们选择保存在 /home/git/.ssh/id_rsa中,以后这个文件夹还是有用的
添加公钥
新建一个名为authorized_keys的文件,并将公钥复制进去
1 | $ vim .ssh/authorized_keys |
随后打开RSA认证
1 | $ vim /etc/ssh/sshd_config |
找到下面这一行,修改为
AuthorizedKeysFile .ssh/authorized_keys
这样公钥就已经配置好了
修改权限
修改权限这一步是非常重要的,我之前的原因应该就是卡在这一步,所以无法达到免密码ssh登录
1 | $ chmod 700 .ssh |
关闭git的shell登录
为了安全起见,我们拒绝git的shell权限
修改下面文件内容
1 | $ vim /etc/passwd |
Nginx的配置与Githooks的脚本实现
Nginx配置文件
修改配置文件前先备份
1 | $ cd /etc/nginx/sites-available |
然后在文件中输入下面配置内容
1 | server { |
修改完保存,重启nginx
1 | $ sudo service nginx restart |
新建blog.git
新建blog.git裸仓库与网站根目录
1 | $ cd /home/git |
然后修改用户组权限
1 | $ chown git:git -R /var/www/blog |
记住每个仓库都需要这样设置权限
配置Git Hooks
新建post-receive文件
1 | $ cd /home/git/blog.git/hooks |
保存完之后赋予可执行权限
1 | $ chmod +x post-receive |
hexo本地配置
在站点配置文件中deploy修改为下面内容,your_ip代表了服务器的地址
1 | deploy: |
如果服务器端口不是默认22,则需要在本地的.ssh文件夹中创建config配置文件
输入下面内容
1 | Host |
Host与HostName均为你的服务器IP地址
然后输入
1 | hexo g -d |
即可完成一次对两个服务器的部署