阿里云搭建Hexo博客

目前比较流行的博客搭建免费方案有hexo和jekyll,两者优缺点对比可参考博客博客搭建可行性方案( jekyll , hexo , Wordpress ),博主选择了hexo来搭建博客。

一开始博主没有自己的服务器,就借助github搭建了hexo。hexo+github搭建博客步骤可参考博客5分钟 搭建免费个人博客,next主题配置可参考博客hexo搭建个人博客–NexT主题优化

后来博主拥有了自己的服务器,想着把博客全部迁移到自己的服务器上,就先在服务器搭建了一个git仓库,使得博客从GitHub迁移到了服务器的git。hexo部署到个人服务器参考从 0 开始搭建 hexo 博客

但是这样还有一个不足之处,就是hexo是部署到本地的,使用多台电脑同时写博客就需要在两台电脑都搭建hexo环境。如何才能将hexo环境搭建在服务器上,而本地只需要一个git呢?解决思路就是,在服务器上搭建一个hexo环境,本地git上传hexo编译之前的文件到服务器git,然后触发钩子去执行一个脚本,到hexo文件夹下拉取最新提交,重新编译并部署一下hexo到服务器git,服务器git触发一个钩子将部署的文件克隆到一个利用nginx可以访问到的文件夹下。服务器git就需要存储hexo编译之前和之后的文件,存储编译之前的文件主要是方便多台电脑编写博客,所以git仓库分为两个分支,master分支和hexo分支,hexo分支存储编译之后的文件,master分支存储编译之后的文件。当然,也可以使用两个git仓库来分别存储编译之前和之后的文件。

接下来就是详细的教程了。

注:此教程只适用于习惯hexo并且需要在多台电脑同时编写博客的童鞋。

环境准备

服务器 阿里云(Ubuntu 16.04 64位)

创建git用户

  1. 创建一个git用户,用来运行git服务。

    1
    $ sudo adduser git
  2. 增加git用户执行sudo的权限,并免密执行。

    1
    $ sudo visudo

    root ALL=(ALL:ALL) ALL下添加一行git ALL=(ALL:ALL) ALL

    %admin ALL=(ALL) ALL下添加一行%git ALL=(ALL) NOPASSWD: ALL

    执行Ctrl+O保存,回车,执行Ctrl+X退出。

  3. 切换到git用户。

    1
    $ su git

    以下操作均在git用户下执行。

搭建Git仓库

  1. 安装git。

    1
    $ sudo apt-get install git
  2. 创建git用户的git仓库目录。

    1
    2
    $ sudo mkdir blog.git
    $ sudo chown -R git:git blog.git
  3. 生成密钥,并复制到/home/git/.ssh/authorized_keys中。此步骤是为了服务器上的hexo向git部署时不必输入密码。

    1
    2
    3
    $ ssh-keygen -t rsa
    $ sudo chmod 700 /home/git/.ssh/
    $ sudo chmod 600 /home/git/.ssh/authorized_keys
  4. 初始化Git仓库。

    1
    $ git init --bare blog.git
  5. 设置钩子。

    1
    $ vi blog.git/hooks/post-receive
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/bin/bash
    # 读取被提交的分支
    # refs/heads/hexo
    # refs/heads/master
    read mes mes ref
    if [ "$ref" == "refs/heads/hexo" ]; then
    rm -rf /tmp/blog
    rm -rf /usr/huihui/hexo/source/_post/*
    git clone -b hexo /usr/huihui/git /tmp/blog
    \cp -rf /tmp/blog/* /usr/huihui/hexo
    unset GIT_DIR
    cd /usr/huihui/hexo
    hexo clean
    hexo g
    hexo d
    elif [ "$ref" == "refs/heads/master" ]; then
    rm -rf /tmp/blog
    git clone /usr/huihui/git /tmp/blog
    rm -rf /var/www/blog/html/*
    cp -rf /tmp/blog/* /var/www/blog/html
    fi
  6. 赋予脚本执行权限。

    1
    $ sudo chmod u+x /usr/local/blog.git/hooks/post-receive

安装Nodejs

  1. 执行检查可更新的软件。

    1
    $ sudo apt-get update
  2. 安装Nodejs。

    1
    2
    3
    $ sudo apt-get install nodejs 
    $ sudo apt install nodejs-legacy
    $ sudo apt install npm
  3. 更换淘宝镜像。

    1
    $ sudo npm config set registry https://registry.npm.taobao.org
  4. 查看配置是否生效 。

    1
    $ sudo npm config list
  5. 安装更新版本的工具N。

    1
    $ sudo npm install n -g
  6. 跟踪Nodejs版本。

    1
    $ sudo n stable
  7. 查看Nodejs版本。

    1
    $ nodejs -v

安装Hexo

  1. 安装hexo。

    1
    $ sudo npm install -g hexo-cli
  2. 创建hexo目录,修改hexo目录拥有者。

    1
    2
    $ sudo mkdir hexo
    $ sudo chown -R git:git hexo
  3. 初始化hexo。

    1
    2
    $ cd hexo
    $ hexo init
  4. 测试运行,-p可指定访问端口。

    1
    $ hexo s -p 8085
  5. 测试。

    通过PC端浏览器访问http://你的服务器ip地址:8085,可以看到Hexo博客的首页。

  6. 部署配置。

    1
    $ vi _config.yml

    将deploy处改为:

    1
    2
    3
    4
    deploy:
    type: git
    repository: git@101.200.55.12:/usr/local/blog.git
    branch: master
  7. 安装hexo部署工具。

    1
    $ sudo npm install --save hexo-deployer-git
  8. 初始化git仓库,并将编译之前的文件推送到hexo分支。

    1
    2
    3
    4
    5
    6
    7
    8
    $ git init
    $ git config --global user.email "你的邮件"
    $ git config --global user.name "你的名字"
    $ git remote add origin git@你的服务器id地址:/usr/local/blog.git
    $ git checkout -b hexo
    $ git add .
    $ git commit -m "初始的hexo"
    $ git push origin hexo
  9. 编译部署hexo。

    1
    2
    $ hexo g
    $ hexo d

    此时可以成功部署到git服务器。

安装Nginx

  1. 安装Nginx。

    1
    $ sudo apt-get install nginx
  2. 启动Nginx。

    1
    $ service nginx start
  3. 测试。

    客户端浏览器访问http://你的服务器ip地址,可以看到Nginx的欢迎界面。

  4. 创建中间目录和博客目录。

    1
    2
    3
    4
    5
    $ sudo mkdir /tmp/blog
    $ sudo chown -R git:git /tmp/blog
    $ sudo mkdir -p /var/www/blog/html
    $ sudo chown -R git:git /var/www/blog/html
    $ sudo chmod -R 755 /var/www
  5. 创建虚拟主机配置文件。

    1
    $ vi /etc/nginx/conf.d
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    server {
    listen 8086;
    listen [::]:8086;
    root /var/www/blog/html;
    index index.html index.htm index.nginx-debian.html;
    server_name eliyar.biz www.eliyar.biz;
    location / {
    try_files $uri $uri/ =404;
    }
    }

    端口号可根据个人需求配置。

  6. 重启Nginx。

    1
    $ sudo service nginx restart
  7. 测试。

    1
    $ vi /var/www/blog/html/index.html
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
    <head>
    <title>Welcome to Blog!</title>
    </head>
    <body>
    <h1>Success! The Blog server block is working!</h1>
    </body>
    </html>

    浏览器访问http://你的服务器ip地址:8086,可以访问到页面。

最后

现在我们已经可以在多台电脑编写博客了,只需要在每台电脑上安装git即可。当需要换另一台电脑编写博客时,拉取远程git仓库hexo分支的代码,编写完成之后推送到hexo分支。

-------------本文结束感谢您的阅读-------------

本文标题:阿里云搭建Hexo博客

文章作者:huihui

发布时间:2018年10月16日 - 19:10

最后更新:2019年02月14日 - 19:02

原始链接:http://101.200.47.120:8011/2018/10/16/阿里云搭建Hexo博客/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。