建站小故事:阿里云、nginx、hexo和git

一点点关于搭建个人网站的经验总结以及对原有教程的补充。

建站又是一阵折腾…… 参考教程 从零搭建Hexo博客并部署阿里云服务器 常常苦口婆心地讲,要授人以渔,而这恰恰说明授人以渔是鲜有人做到。 虽然是跟随这个教程,但是仍然遇上了不少问题,折腾了很久,最终解决了,以下作为记录。

  1. 建设逻辑:
    • hexo作为网页框架引擎:用hexo的插件把网页代码部署到远程仓库,同时还可以备份到github
    • git作为部署的工具:服务器上创建git账号,用于ssh登录和管理自定义的git仓库
    • ngnix作为web服务器
    • 用阿里云服务器,系统 CentOS 8.2
  2. 即便自定义git仓库可以push,也仅仅只是压缩储存了提交的内容,如果需要把这个自定义git仓库里的源代码提取出来,还需要用到git hook。在自定义的git仓库中应该有自动生成的hooks文件夹,其中的文件会按照文件名在特定的git命令执行时运行。我需要利用它来把本地上传的代码从仓库里部署到ngnix的网站根目录
  3. git hook用法: 编辑文件blog.git/hooks/post-receive
    1
    2
    #!/bin/sh
    git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f
    hooks文件夹里的脚本会按照命名在特定时候触发运行。这里运行bash命令。/home/www/website是nginx的服务器目录。将hexo生成的public文件夹中的文件提交到此blog.git仓库后就会用checkout命令将文件同步到服务器的目录。上传部署就完成了
  4. ssh 密钥配置方法 ssh密钥简单来说就是有两点:
    • 服务端必须在ssh服务设置中允许rst验证
    • 服务端被登录的账号下有.ssh/authorized_keys文件,将客户端的公钥拷贝进去即为安装密钥
  5. git账户(或者你用于远程部署git仓库的账户)必须要有对应的修改权限
  6. hexo-deployer-git插件配置方法
    • 关键是多个git仓库如何配置,如下,在本地的hexo博客设置文件_config.yml中配置
      1
      2
      3
      4
      5
      6
      7
      deploy:
      type: git
      repo:
      <repo name 1>: https://github.com/<who>/<repo>,<branch>
      <repo name 2>: <user>@<IP>:/<repo>,<branch>
      github: https://github.com/TuoLiYinLi/BlogBackup.git,master
      ...

最后的插曲。其实用github.io更简单不少,不仅解决了域名和备案的问题,而且成本是零,于是两周后我还是用回了github🤣


建站小故事:阿里云、nginx、hexo和git
http://tuoliyinli.github.io/2022/07/01/建站小故事/
作者
TuoLiYinLi
发布于
2022年7月1日
许可协议