博客从GitHub Pages上迁移到个人VPS
记下博客从GitHub Pages上利用Git迁到VPS上的过程,以及中间遇到的各种问题。
本地安装Hexo搭建网站就不多讲了,可参考俺写的Linux下搭建Hexo个人博客 ,然后配置好本地SSH密钥,可参考俺写的使用SSH密钥进行Git协议传输 ,本地准备妥当,就开始折腾VPS上面了。
安装配置git
打开终端ssh root@vpsip
,输入密码,进入vps,以下操作都在服务器上进行。
安装和创建git用户
apt install git
//安装git
adduser git
,根据提示设置密码 //创建git用户
赋予git用户sudo权限
1 | chmod 740 /etc/sudoers |
找到下面内容
root ALL=(ALL:ALL) ALL
在下面添加 git ALL=(ALL:ALL) ALL
,如下
1 | root ALL=(ALL:ALL) ALL |
保存退出后,修改回文件权限
chmod 440 /etc/sudoers
关闭git用户shell权限
注意:这一步非windows用户不需要修改
命令:vi /etc/passwd
最后一行的git:x:1001:1001:,,,:/home/git:/bin/bash
修改为git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
初始化git仓库
切换到git用户su git
,这一步很关键,下面操作都是git用户
1 | cd /home/git //切换到git用户目录 |
创建网站目录
1 | cd /var/www/ //切换目录 |
配置SSH
1 | cd /home/git //切换到git用户目录 |
本地执行cat ~/.ssh/id_rsa.pub
,把里面的内容复制到刚打开的authorized_keys文件里面。
用户组管理
确保blog.git、.ssh、blog目录的用户组权限为git:git
1 | sudo chown git:git -R /var/www/blog |
配置Git Hooks
为什么要配置Git Hooks呢?因为本地hexo d
命令实际上只deploy了本地的public文件夹到Git仓库,当Git仓库收到最新的push时,Git Hooks会将Git仓库接受到的内容复制到VPS上的网站目录内,相当于完成了手动将public文件夹复制到VPS的网站根目录。
创建post-receive文件
git用户下命令:
1 | su git //切换到git用户 |
复制下面的内容到post-receive文件中:
1 |
|
保存后,命令:chmod +x post-receive
赋予可执行权限。
尝试连接
本地打开终端:
ssh git@vpsip
提示 “welcome to ……” 说明连接成功了。
若默认端口不是22,则需要在后面加上端口号:
ssh git@vpsip -p 22
本地配置Hexo
打开本地博客根目录下的_config.yml文件,找到最后的deploy配置,修改为:
1 | deploy: |
服务端配置Nginx
安装Nginx
1 | apt-get install nginx |
配置Nginx
安装完成后修改Nginx的server文件
1 | cd /etc/nginx/sites-available //切换目录 |
简单修改配置文件,其实这一步有挺多讲的,篇幅有限,下一篇再说,
1 | server { |
systemctl start nginx
//保存,启动Nginx
systemctl enable nginx
//设置开机自动启动
systemctl status nginx
//查看运行状态,显示running表示成功运行
nginx -s stop
//立刻停止运行Nginx
到此,Hexo建站就全部配置部署完毕,后面就是例行的文章发布。