CentOS 6 搭建 Nginx+Hexo全过程

辛辛苦苦搭好的博客,纪念一下搭建过程吧。希望他人搭建的时候更加轻松

(假定读者能基本使用Linux)

总共分3部分:

第一部分,最早搭建在Azure上,Git+Nginx+Hexo 。

第二部分,将站点迁移到Github Page上的过程。

第三部分,Reference(Hexo基本操作)


第一部分

主要参考的是 在VPS上搭建hexo博客,利用Git更新,事实又一次证明了教程是多么重要:一个教程或是方法遗漏了那么一点点关键步骤,就好比一个软件工程少了那么几行代码。。。

VPS操作(CentOS 6.5)

Nginx:

安装:

1
2
yum update && apt-get upgrade -y #更新内核
yum install nginx -y

配置:(不推荐新手按照参考去改动/conf.d/hexo.conf)

1
2
3
vim /etc/nginx/nginx.conf
##change
service nginx restart

要改的主要在 server{}中。 其中, listen是监听端口,即访问网站使用的端口,默认80。 root 是网站文件的根目录。server_name 填ip或者域名即可。

设置防火墙

1
2
3
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

之后记得再去VPS的管理页面开启防火墙策略组,开放80端口。正常的话外网就能访问你的博客了。如果不行,先建议换个端口比如1011(配置文件、iptables、策略组都要改),以免像我一样浪费时间在检查自己配置上。Azure的VPS确实过滤了80端口,没法用。

Git:

安装Git

1
yum install git-core

新建git用户添加sudo权限

1
2
3
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers

在vi编辑中找到如下内容:

1
2
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

在下面添加一行

1
git ALL=(ALL) ALL

保存并退出后执行

1
chmod 440 /etc/sudoers

创建网站目录并赋予git对网站目录的所有权:

1
2
3
cd /var/www
mkdir hexo
chown git:git -R /var/www/hexo

配置git hooks:

1
2
3
su git
cd /home/git/hexo.git/hooks
vim post-receive

输入如下内容后保存退出

1
2
3
4
5
6
7
8
#!/bin/bash
GIT_REPO=/home/git/hexo.git #git仓库
TMP_GIT_CLONE=/tmp/hexo
PUBLIC_WWW=/var/www/hexo #网站目录
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}/*
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

(注意上面#和之后的注释不要写入到文件中,否则出错!)

然后赋予脚本的执行权限

1
chmod +x post-receive

Git 仓库:

1
2
3
4
5
6
7
8
9
su git #(如果已经是git用户就无需此命令)
cd ~
mkdir hexo.git && cd hexo.git
git init --bare
cd ~
mkdir .ssh && cd .ssh
touch authorized_keys
vi authorized_keys

接下来有2种办法。

  • 已经有keys的可以直接复制进去。我就是把github的key复制到这里来。好处是一个key两边都能用,操作起来方便
  • 如果没有的话按下面本机操作部分全部执行。

本机操作(Windows)

安装Node.js

Node.js官网下载最新版,一路默认安装。

安装Git

下载Git for windows一路默认安装。
Git这里我们需要注意一下,需要配置一下环境变量
然后我们需要生成SSH密钥,按下面的步骤进行。

1.打开C:\Users\<用户名>\.ssh文件夹,如果没有就新建
2.在空白处单击右键,选择Git Bash Here打开终端
3.设置git用户名

1
2
git config --global user.email "email@example.com"
git config --global user.name "username"

4.生成ssh密钥

1
2
ssh-keygen -t rsa -C "email@example.com"
##一会要用到公钥id_rsa.pub

如果成功的话,会多出几个文件。用TXT打开其中的id_rsa.pub,复制里面的内容到VPS的 authorized_keys中。

测试连接

打开Git Bash, 输入ssh git@VPS的ip 能够远程登录的话,就说明设置正确,可以进行下一步。否则最好找出并解决错误。

安装Hexo

创建网站目录

在你电脑的任意位置创建一个文件夹(例如E:\hexo,下文以此代替),作为网站目录。

安装Hexo

打开cmd,通过cd命令进入hexo文件夹,输入node后执行如下命令 ~

1
2
3
4
5
npm install -g hexo-cli
hexo init
npm install
hexo d -fg
hexo s

打开http://localhost:4000 即可看到你的站点(当然还没有发布到服务器上)。

配置hexo配置文件

位于hexo文件夹下,_config.yml,修改

1
2
3
4
5
6
7
8
# Site
title: XXX (这里就是网站的名字)
deploy:
type: git
message: update
repo: git@192.234.35.236:hexo.git (这里换成VPS的ip即可)
branch: master

特别注意,每个“:”后面都要有空格!

接着在hexo文件夹内,按住shift右击,选择在此处打开命令窗口(当然你也可以用cd命令),运行hexo g hexo d,如果一切正常,静态文件已经被成功的push到了blog的仓库里,如果出现appears not to be a git repo的错误,删除hexo目录下的.deploy后再次hexo g hexo d就可以了。

以上,博客已经完全建好了。如果顺利的话,1个小时应该是足够了。

遇到的坑

  1. Nginx设置按照原教程,在conf.d/hexo.conf 中设置,导致后面的问题出现时更加难以排查
  2. VPS服务商过滤了80端口。导致我一直认为是自己配置不对,反复修改nginx.conf 和conf.d/hexo.conf
  3. 修改_config.yml时,忘记加空格。


第二部分

把第一部分搭好的博客迁移到Github Page上(不要问我为什么不一开始就在Github Page上搭。。谁能预见未来的需求呢……)

假定读者已经有了Github账号。如果没有就去注册一个。

创建仓库

以我为例,Github用户名是 Vast-Stars,则创建的仓库名为:Vast-Stars.github.io

设置SSH秘钥

点击右上角头像,进入`setting→ SSH and GPG keys

  1. 打开本地C:\Documents and Settings\Administrator.ssh\id_rsa.pub文件。准确的复制这个文件的内容,才能保证设置的成功。
  2. add another public keys
  3. 把刚刚用TXT打开的的密钥复制到里面(key文本框中), 点击 add key 就ok了

同样可以在 git bashssh git@github.com来验证SSH是否成功。

(由于我第一部分中使用的key就是从github这生成的,所以自然保证了两边ssh都正常。)

修改_config.yml文件

1
2
3
repo: git@192.234.35.236:hexo.git
#改成
repo: git@github.com:Vast-Stars/Vast-Stars.github.io.git

当然如果已经绑定了域名也可以不用修改



第三部分

本来是想自己写点的,不过既然别人就写了,我就附上链接吧。

有些重要的东西还是自己写下吧。。不定时更新

_config.yml中,设置language: zh-CN

Reference:

在VPS上搭建hexo博客,利用Git更新

如何搭建一个独立博客——简明Github Pages与Hexo教程

史上最详细的Hexo博客搭建图文教程

Next主题的安装 很简洁很漂亮的主题!

[hexo]如何更换主题、删除文章

Hexo常见问题解决方案 很全很好

为Github的Hexo博客启用SSL/TLS

我的博客是如何搭建的(github pages + HEXO + 域名绑定)

Hexo 初始化笔记

配置 官方文档 强力推荐!