hexo博客部署并同步更新到服务器
使用github pages部署博客虽然可以避免服务器过期这样的情况,但是国内访问速度实在是太慢。所以可以将代码托管到github同时使用webhook实现GitHub与服务器同步推送代码。
购买服务器
注意:国内的服务器有学生有优惠套餐,但是只可选择大陆地区的服务器,并且大陆地区服务器需要备案才能使用,备案流程麻烦并且时间长。但是比较便宜。可以根据需求自行选择。
这里我使用的是宝塔控制面板,方便直观的操作。
后期如有需要使用其他类型的可重置系统。
购买域名
域名可以选择自己喜欢名称。建议在万网购买,实名认证方便快捷。
解析域名
在域名管理处,点击添加域名
将购买的域名添加到这里,点击解析设置
点击添加记录
一个主机记录选择@
(直接输入域名即可进入网站),一个选择www
(域名前面加上www即可进入网站),也可以自定一个前缀,记录类型选择A,指向一个IPv4地址,记录值填写自己的服务器ip。
进入宝塔面板
此处我在选择系统的时候选择安装的宝塔面板,不需要手动安装。需要手动安装的可以根据官方教程安装。
如果安装后不能正常使用,则需要在服务器管理面板放行端口。
进入面板后可以一键安装自己需要的软件。可以选择极速安装。
创建站点
宝塔面板安装完成后,导航栏点击网站,添加站点。
hexo页面是纯静态页面,不需要ftp以及数据库,php版本选择纯静态。
添加的域名要解析在服务器上才可正常使用。
使用webhook实现同步页面
虽然服务器配置好以后,宝塔面板并不支持代码托管,也就是说使用hexo d
命令推送的代码并不能推到宝塔上来实现更新网站。于是使用webhook来实现与github代码同步。
原理:
安装宝塔webhook
在宝塔面板导航栏点击软件商店,搜索webhook,点击安装。
安装完成后点击设置,添加
名称和脚本任意填写,填写以后可以编辑。
#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#git项目路径
gitPath="/www/wwwroot/zhaosheng2000.github.io"
#git 网址
gitHttp="https://github.com/ZhaoSheng2000/ZhaoSheng2000.github.io.git"
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
#拉取最新的项目文件
sudo git reset --hard origin/master
sudo git pull origin master
#设置目录权限
sudo chown -R www:www $gitPath
echo "End"
exit
else
echo "该项目路径不存在"
echo "End"
exit
fi
注意:git项目路径必须要在服务器上面真实存在并且不能删除,git地址是你的github项目clone项目的https地址
随后点击保存。
编辑完成后,点击查看密钥,复制url,建议复制&
前面的内容
进入GitHub项目,选择settigs,WebHooks,点击Add webhook
配置完成后点击Add webhook
注意:webhook需要打开7777端口,需要在服务器安全组放行端口,否侧会出现连接失败
返回到面板,点击测试,在日志中查看效果。或者更新一篇文章,查看是否有拉取记录。
同时回到github的webhook界面,点击edit编辑刚刚的钩子
此时表明服务器自动钩取github仓库的master分支已经成功来取到服务器上。(红色的错误是因为没有放行7777端口导致的)
此时,当你在你的本地电脑执行hexo g -d
的时候,文章就会同步更新到你的云服务器上了。