最近更换了服务器, 需要把自己的 Hexo Next 重新部署到新服务器上, 本文记录一下在 VPS 上搭建 hexo 博客的过程.
在 VPS 上搭建 hexo 博客需要下面这些工具:
Nginx: 用于博客展示
SSH: 用于 Git 推送
Git: 用于将生成的静态文件推送到 VPS 上
本文服务器环境为 CentOS 7.6
整体流程为:
设置 SSH 登录
想要完成 Git 推送, 首先得设置 SSH 登录. 过程如下:
- # 添加 hexo 用户
- adduser hexo
- # 切换到 hexo 用户目录
- cd /home/hexo
- # 创建. SSH 文件夹
- mkdir .SSH
- # 创建 authorized_keys 文件并编辑
- VIM .SSH/authorized_keys
- # 如果你还没有生成公钥, 那么首先在本地电脑中执行 cat ~/.SSH/id_rsa.pub | pbcopy 生成公钥
- # 再将公钥复制粘贴到 authorized_keys
- # 保存关闭 authorized_keys 后, 修改相应权限
- chmod 600 .SSH/authorzied_keys
- chmod 700 .SSH
测试是否设置成功:
SSH -v hexo@服务器 ip
Git
安装 Git
yum install Git
配置 post-update 钩子
Git 的钩子脚本位于版本库. Git/hooks 目录下, 当 Git 执行特定操作时会调用特定的钩子脚本. 当版本库通过 Git init 或者 Git clone 创建时, 会在. Git/hooks 目录下创建示例脚本, 用户可以参照示例脚本的写法开发适合的钩子脚本.
钩子脚本要设置为可运行, 并使用特定的名称. Git 提供的示例脚本都带有. sample 扩展名, 是为了防止被意外运行. 如果需要启用相应的钩子脚本, 需要对其重命名 (去掉. sample 扩展名).
post-update
该钩子脚本由远程版本库的 Git receive-pack 命令调用. 当从本地版本库完成一个推送之后, 即当所有引用都更新完毕后, 在远程服务器上该钩子脚本被触发执行.
因此我们需要配置 post-update 钩子以便可以及时更新我们在 VPS 上存放 Hexo 静态文件的目录.
- # 回到 hexo 目录
- cd /home/hexo
- # 变成 hexo 用户
- su hexo
- # 使用 hexo 用户创建 Git 裸仓库, 以 blog.Git 为例
- Git init --bare blog.Git
- # 进入钩子文件夹 hooks
- cd blog.Git/hooks/
- # 启用 post-update
- mv post-update.sample post-update
- # 添加执行权限
- chmod +x post-update
- # 配置 post-update
- VIM post-update
注释如下行:
exec Git update-server-info
添加如下代码:
Git --work-tree="静态文件 VPS 存放目录" --Git-dir="刚才新建的 VPS git 地址" checkout -f
例:
Git --work-tree=/home/hexo/blog --Git-dir=/home/hexo/blog.Git checkout -f
例:
Nginx
安装 Nginx
yum install nginx
使用 nginx -v 查看, 显示版本号则安装成功.
Nginx 配置
- server {
- # 默认 80 端口
- listen 80 default_server;
- listen [::]:80 default_server;
- # 修改 server_name 为自己之前注册好的域名, 没有就不用更改
- server_name morethink.cn;
- # 修改网站根目录, 在这里存放你的 Hexo 静态文件, 请自行选择或创建目录
- root /home/hexo/blog;
- # 其他保持不变
- # Load configuration files for the default server block.
- include /etc/nginx/default.d/*.conf;
- location / {
- }
- error_page 404 /404.html;
- location = /40x.HTML {
- }
- error_page 500 502 503 504 /50x.HTML;
- location = /50x.HTML {
- }
- }
配置本地 Hexo
找到本地 Hexo 博客的站点配置文件_config.YAML, 找到以下内容并修改:
- deploy:
- type: Git
repo: hexo@你的服务器 IP:/home/Git/blog.Git
branch: master
然后在根目录执行以下命令:
- hexo clean
- hexo g -d
遇到的问题总结
如果无法推送到 VPS, 请检查 hexo 用户是否有权限操作所需目录
关于 nginx root 403 问题: 在我配置 nginx 碰到一个 403 问题, 改了文件权限还是 403, 后来发现是 nginx.conf 中 user 默认设置错了, 把 user nginx 改成 user root 就好了.
deploy 成功之后无法访问
查看 VPS 静态目录是否有 HTML 文件, 没有就是 Git 推送问题
查看 Nginx 配置是否成功
参考文档:
https://www.worldhello.net/gotgit/08-git-misc/070-hooks-and-templates.html
来源: https://www.cnblogs.com/morethink/p/10867173.html