菠菜的Hexo博客部署

菠菜的Hexo博客终于在本地跑起来了,不过这才是第一步,菠菜还要把博客放到服务器上。
通常,大家都使用Github和Coding的Pages服务,免费发布自己的个人博客。
GitHub和Coding的使用方式基本一致,而且都提供自定义域名访问。不过因为GitHub的服务器在国外,访问起来速度较慢。Coding在国内有服务器,但是没有升级会员或首页未放标识语的话,来访者每日首次到访要看五秒广告。
除了类似GitHub和Coding的免费Pages服务外,大家要是有可用的服务器,可以把博客放在自己的服务器上,然后找个免费的云加速,浏览体验也是杠杠的!但是服务器在国内的话,域名需要备案,而且免费的云加速不支持https。

基于GitHub Pages发布

首先,请使用邮箱注册Gitub,并且前往邮箱点击确认注册信息激活账号,然后登陆你的GitHub。

创建代码库

为了你能使用YourName.github.io访问你的博客,首先你要创建一个name为“YourName.github.io”的代码库(Repository )。
菠菜丛林历险记

菠菜丛林历险记
创建成功后,你将可以看到一个git仓库地址。

1
git@github.com:xiehaib/xiehaib.github.io.git

菠菜丛林历险记

配置本地Git和GitHub公钥

1.假如你是第一次使用git的话,你需要配置用户名和邮箱

1
2
$ git config --global user.name 'YourName'
$ git config --global user.email 'YourEmail'

2.生成秘钥,并将公钥上传到GitHub

1
$ ssh-keygen -t rsa -C 'YourEmail'

输入上面这行命令,然后一路回车,不出意外的话,你将在~/.ssh目录下发现id_rsa和id_rsa.pub,前者就是你的私钥,后面的就是公钥。然后你需要用cat命令输出公钥,然后把它复制粘贴到你的GitHub里面,这边就OK了!

1
2
$ cat id_rsa.pub
ssh-rsa AAAA*****************************bdZd0i9 YourEmail

菠菜丛林历险记
菠菜丛林历险记

安装hexo-deployer-git插件

在你的Hexo根目录下执行以下命令安装hexo-deployer-git插件

1
$ npm install hexo-deployer-git --save

配置部署方式

编辑站点配置文件_config.yml,查找到deploy字段,更改配置如下:

1
2
3
4
deploy:
type: git
repo: git@github.com:xiehaib/xiehaib.github.io.git #创建的git代码库
branch: master

代码发布

输入以下命令就可以发布了

1
hexo clean && hexo g && hexo d #清楚缓存、生成静态文件、发布一步到位

设定自定义域名

现在代码已经发布到GitHub上了,你就可以通过YourName.github.io访问属于你自己的博客了。
假如你自己申请了一个域名,还可以把申请的域名绑定到GitHub Pages上。

菠菜丛林历险记

  1. 在你的GitHub Pages上绑定的的域名,
  2. 在你的blog资源目录(blog/source)新建一个CNAME文件,文件内容是你自定义的域名(这会让用户访问YourName.github.io转向到你自定义的域名上)
  3. 你现在需要给你的域名增加一条CNAME解析记录。

菠菜丛林历险记
现在,你就可以直接通过自己的域名访问了!不过,正常情况下,在国内直接访问GitHub Pages的速度真心不太好。

基于Coding Pages发布

Coding的部署方式和GitHub类似,我这里就不累述了。详细步骤可以参考:开始使用 Coding Pages
相对GitHub Pages而言,Coding在大陆访问的速度较快,而且支持自定义域名的https。
不过,假如你在Coding上绑定了个性域名,并且你不是付费会员,那么在访客通过你的个性域名进入博客是会出现跳转页。
菠菜丛林历险记
下面,我只简单说下绑去除这个跳转页的方法(其实是复制Coding Pages等待跳转页面说明)。

  1. 最简单粗暴的方式,直接升级金牌和钻石会员,这种土豪的方式我没有体验过,这里就跳过了,你可以冲个会员试试效果。
  2. 选择放置「Hosted by Coding Pages」广告。首先你要完善你的个人资料成为一名银牌会员,并在你博客的首页任意位置放置「Hosted by Coding Pages」的广告,然后在部署Pages时勾选「已放置Hosted by Coding Pages」选项,通过审核后(一个工作日内)就不会显示跳转页了。

现在,你的博客已经完美了!加载速度比较满意,还支持https。唯一的缺点就是,你在Coding所有的仓库不能超过256M,但这对大多数人来说并没有影响。

基于自己的服务器发布

服务器环境搭建

注意:以下操作在CentOS中进行,其他服务器略有区别

  1. 安装Nginx
    因为菠菜的阿里云之前是安装过Nginx的,这个步骤搭建可参考下网上其他的教程。我有空的时候会把这个教程补齐。
  2. 配置Nginx
    菠菜为博客创建了一个目录/opt/www/blog/,这是发布博客用来放置网站所有文件的。然后我们找到Nginx配置文件(菠菜的是/etc/nginx/nginx.conf),然后添加一个Server配置,并测试配置文件和重启nginx

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    [root@XXX www]# makdir /opt/www/blog #创建博客目录
    [root@XXX www]# vim /etc/nginx/nginx.conf #编辑Nginx配置文件
    server{
    listen 80;
    server_name your.domain.com; #你的域名
    charset utf-8;
    index index.html;
    root /opt/www/blog; #创建的目录
    error_page 404 /404.html;
    }
    [root@XXX nginx]# nginx -t #测试配置文件,测试成功输出如下提示
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@XXX nginx]# nginx -s reload #重启nginx
  3. 安装Git
    使用如下命令安装命令安装Git,并创建git用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@XXX home]# yum install git #安装Git
    [root@XXX home]# groupadd git #创建用户组
    [root@XXX home]# useradd -g git git #创建用户
    [root@XXX home]# vim /etc/passwd #使git用户只能使用git-shell,禁止登陆服务器
    #passwd内容最后一行
    git:x:504:504::/home/git:/bin/bash -> git:x:504:504::/home/git:/usr/bin/git-shell
    [root@XXX home]# mkdir /opt/git #创建仓库目录
    [root@XXX home]# chown git.git /opt/git #使仓库目录转为git用户所有
    [root@XXX home]# chmod -R 755 /opt/git #配置目录权限
    [root@XXX home]# vim /home/git/.ssh/authorized_keys #将本地公钥上传(公钥同上传到GitHub上的)
    #在空白行添加
    ssh-rsa AAAA*****************************bdZd0i9 YourEmail
  4. 配置仓库
    首先初始化一个裸仓库,然后配置一个钩子,使得仓库每次更新时,自动将博客内容复制(覆盖)到Nginx博客站点目录/opt/www/blog。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [root@XXX git]# git init --bare hexo.git #初始化裸仓库
    cd hexo.git/hooks/ #切换到钩子目录
    cp -a post-receive.sample post-receive #复制一个钩子模板
    vim post-receive
    #添加一下内容
    GIT_REPO=/opt/git/hexo.git #git目录
    TMP_GIT_CLONE=/tmp/hexo_blog #临时文件目录
    PUBLIC_WWW=/opt/www/blog #Nginx站点目录
    rm -rf ${TMP_GIT_CLONE}
    git clone $GIT_REPO $TMP_GIT_CLONE
    rm -rf ${PUBLIC_WWW}/*
    cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}

更改站点配置文件

编辑站点配置文件_config.yml,查找到deploy字段,更改配置如下:

1
2
3
4
deploy:
type: git
repo: git@YourDomainIp:git/hexo.git #YourDomainIp替换成你的主机IP
branch: master

域名解析与提交部署

你需要在你的域名添加如下记录。注意:假如你的服务在国内,需要备案才能成功解析!
菠菜丛林历险记

与之前一样,一行命令搞定问题。

1
hexo clean && hexo g && hexo d

假如你的Nginx配置没有问题的话,域名DNS解析也没有问题了,那么现在输入你自己的域名,看到的是部署在你服务器上的博客了。

  • 前些天有同学域名是在阿里云注册和备案的,然后解析到Coding上,结果提示说服务器不在阿里云上,要求解析到阿里云服务器或者让备案失效。

后话

基于自己的服务器部署,我们可以去腾讯云或者七牛云为自己的域名申请一个证书开启https。假如自己的带宽足够,那说明你是一个土豪或者就职于一个土豪公司!
假如带宽不够,那就太正常了,但是我们可以使用百度云和七牛云的免费CDN进行加速!菠菜的Hexo博客CDN加速