hexo自动更新到阿里云

Feb 16, 2022

博客从几年前开始就一直有的没的写着,近一年来更一篇都没更新……

博客由几个平台、个人服务间来回了几次,图片都丢失得差不多了,最后的都在lofter里,它估计也差不多到了寿终正寝的时刻,竟然没了“导出”功能,估计过两天要一篇的移过来了。

目前在hexo里,今天花一整天的时间去研究如何直接发布到“阿里云”的服务器里去

废话少说

先说下操作思路:

  1. 在本地安装 hexo
  2. 在服务端(阿里云)安装 git
  3. …… 本地执行 hexo d 的时候,直接通过 git 自行 push 到服务器 hexo 仓库(文件夹)
  4. 再由上述“中介”推送到 hexo 站点文件夹
  5. 通过 Nginx 配置站点,也可以用 Apache 等。这有两个目的,一是配置站点,另一个是绑定域名,可被外部访问到。

1、本地安装 hexo

安装教程
根据上面的官方教程,可以很简单的安装完,具体操作和 hexo 的操作方法我就不说了,网上的教程非常多。

2、服务端需要 Git

这也不说了,度娘能解决……

相对于网上的教程,唯一比较想说的,别单独创建用户——专门给 git 专用……

别管这样的建议,到需要考虑这些内容的时候,你大概率不需要这些知识。

所以当 git --varsion 能操作的时候(显示出版本号,没报 command not found),就证明你已经可以在服务端用 git

3、这部分在服务端操作

接下来同样在服务端(阿里云)上,建两个文件夹,这是为了区分 git 作业文件,和 hexo 站点文件。

如,希望放 hexo 的路径里是:/var/www/blog

那请操作:

$ mkdir /var/www/blog                    #新建文件夹,放 hexo 站点
$ mkdir /var/www/repo                    #新建文件夹,存放 git 文件(git 仓库)
$ cd /var/www/repo                        #进入刚后创建的 repo 文件夹
$ git init --bare blog.git                 #初始化 git 仓库
$ cd blog.git/hooks                      #初始化 git 仓库
vim post-receive                      #创建一个文件且打开

post-receive 作为个“勾子”,作用是告诉 git 当下面有更新上来时,把文件直接推到 hexo 文件夹里去。现在粘贴些内容:

#!/bin/sh
git --work-tree=/var/www/blog --git-dir=/var/www/repo/blog.git checkout -f

上述代码的前面路径是你放 hexo 站点路径,后面路径是刚才创建的放 git 地址

退出 vim

把上面的代码粘贴进去后,按 esc(就是键盘左上角),然后输入 :wq,再按回车,即可退出 vim

下面我们需要给刚才的文件添加可执行权限:

chmod +x post-receive        # 添加可执行权限

测试

在本机上制作:

git clone root@服务器IP:/var/www/repo/blog.git

如果能拉下来就表示 OK

4、Nginx 创建站点

安装找度娘……

vim /etc/nginx/conf.d/blog.conf

添加如下代码:

server {
    listen        80;
    server_name   域名1, 域名2;
    location /    {
            root          /var/www/blog;
            index         index.html index.htm;
    }
} 

上述“域名1”、“域名2”为你的域名,切记:baidu.com 和 www.baidu.com 是两个域名,需如上形式添加

退出 vim(如上文)

测试

上传一个 html 文件,改文件名为 index.html,然后通过你刚输入的域名进行访问,看是否能访问到,过后记得删除……

5、配置本机 hexo

到本地 hexo 项目的根目录下,找到 _config.yml

deploy:
    type: git
    repository: root@服务器IP:/var/www/repo/blog.git
    branch: master

然后打开本地终端

$ hexo clean        # 清除缓存和静态文件
$ hexo g            # 生成静态文件,在 hexo 项目的根目录下的 public 里。
$ hexo d            # 通过你设置的路径布署到线上