Hexo博客部署到云服务器
条评论一年前用开源博客框架Hexo和Gitee搭建了个人博客,今年由于gitee停用了page服务,正好有一台闲置的云服务器,所以打算将博客部署到这台云服务器上,下面是部署过程。
准备工作
构建完毕的Hexo项目
可以参考这篇博客:个人博客搭建
安装git
本地和服务器都需要安装git
如果你使用了宝塔、1panel等Linux管理软件,那么git应该是已经捆绑安装了的,可跳过这个步骤。
安装web服务软件
Hexo博客是纯静态网页,因此不需要后端服务,只需要一个web服务器用于分发网页即可。我这里用的是OpenResty
部署
git同步配置
新建一个文件夹用于存放web资源文件,在1panel下可以很方便地用OpenResty创建一个网站,网站目录是/opt/1panel/apps/openresty/openresty/www/sites/dianwind.cn,dianwind.cn是我的域名`
在网站目录下建立一个裸仓库(“blog.git”是自定义的仓库名)用于存放git配置并修改权限
特别要注意文件和文件夹的归属用户和权限问题,归属用户要与下面_config.yml中的配置对应
1 | git init --bare blog.git |
执行上面的命令需要在网站目录下执行,如果在其他目录请使用绝对路径,像下面这样
1 | git init --bare /opt/1panel/apps/openresty/openresty/www/sites/dianwind.cn/blog.git |
使用下面的命令修改归属
1 | chown -R [username]:[username] blog.git |
新建钩子文件
1 | vim ./blog.git/hooks/post-receive |
将下面的内容复制到钩子文件中
1 |
|
/opt/1panel/apps/openresty/openresty/www/sites/dianwind.cn/index是网站的默认存放位置,本地的Hexo项目编译后就推送到这里。
/opt/1panel/apps/openresty/openresty/www/sites/dianwind.cn/blog.git是git配置文件的存放位置,保存了相关的同步信息。
本地hexo项目部署配置
在本地hexo博客项目中修改.\_config.yml文件,将deploy项修改为下面:
1 | deploy: |
/opt/1panel/apps/openresty/openresty/www/sites/dianwind.cn/blog.git是服务器git配置文件存放位置
username要与网站存放目录归属用户一致,否则会因为不能修改导致部署失败
将本地hexo博客部署到云服务器:
1 | # 清除已经生成的编译文件 |
常见问题
- 如果用户没有配置密钥登录,那么在执行
hexo d就需要输入服务器用户密码 - 钩子文件中
work-tree和git-dir的值不对 - 网站目录和git目录的权限和用户归属问题
