Skip to content

Hexo 博客是一款基于 Node.js 的静态博客框架。

安装 Hexo

首先确保本地已经安装Node.js

安装并创建 hexo 博客

bash
cd ~
npm install hexo-cli -g
hexo init blog
cd blog
npm install

安装发布插件

bash
npm install hexo-deployer-git --save

服务器创建静态博客存储 Git 仓库

示例服务器环境:

  • Centos 6.8
  • Git 1.7.1

创建 git 用户

bash
sudo useradd git

创建仓库并附权限

bash
sudo git init --bare /home/git/hexo-server.git
sudo chown -R git:git /home/git/hexo-server.git

给 git 用户附 sudo 权限

bash
visudo

在文件最后一行加上

vim
git ALL=(ALL) NOPASSWD: ALL

给 root 用户创建 ssh-key

bash
sudo mkdir ~/.ssh
sudo ssh-keygen

给 git 用户创建 ssh-key

bash
sudo mkdir /home/git/.ssh
su git
cd ~
ssh-keygen

多用户免密使用 Git

将多用户的 ssh-key 添加到服务器 git 用户的 authorized_keys

本地:

bash
cat ~/.ssh/id_rsa.pub | ssh root@your_host "cat - >> /home/git/.ssh/authorized_keys"

服务器:

bash
cat ~/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys
cat /home/git/.ssh/id_rsa.pub >> /home/git/.ssh/authorized_keys

创建 GitHook

bash
cd /home/git/hexo-server.git/hooks
vim post-receive

创建 post-receive

bash
#!/bin/sh
cd /var/www/hexo-server
unset GIT_DIR
sudo git pull origin master

附权限:

bash
chmod +x post-receive

服务器克隆部署仓库

bash
cd /var/www
su git
sudo git clone git@localhost:/home/git/hexo-server.git

nginx 配置(https 协议):

nginx
server {
    listen               443 ssl http2;

    server_name          your_host;
    server_tokens        off;

    ssl_certificate      /var/www/ssl/chained.pem;
    ssl_dhparam          /var/www/ssl/dhparams.pem;

    location / {
        root             /var/www/hexo-server/;
        index            index.html index.htm;
    }
}

server {
    listen       80;
    server_name  your_host;

    return 301 https://$host$request_uri;
}

本地 Hexo 配置远程部署仓库

bash
cd ~/blog
vim _config.yml

修改 _config.yml :

vim
deploy:
  type: git
  repository: git@your_host:/home/git/hexo-server.git
  branch: master

发布博客

bash
hexo generate && hexo deploy

至此可以在实现本地一键发布 Hexo 博客在私有的服务器了。