将Hexo博客部署到云主机

摘要:

在腾讯云主机上搭建一个git裸仓库,然后使用nginx作为网页服务器,就可以轻松将Hexo博客通过git部署到云主机上。

我的博客FKoom之前部署Github Pages上,挺不错的,就是有一点慢。作为一个喜欢折腾的人,我突然打算使用CDN加速一下访问速度,然而,国内的CDN服务要求网站必须备案。所以,自己买了一台腾讯云的服务器,由于还是学生,顺便买了一个域名。。。有优惠,我就不放优惠链接啦。。。。

本地环境

Node.js

$ brew install node

创建 Hexo 目录

$ mkdir "your hexo dir name"
$ cd "your hexo dir name"

安装 Hexo

$ npm install -g hexo-cli

如果上面这行安装命令报错了,可以试试看下面这行

$ sudo npm install -g hexo-cli --unsafe

安装完成之后

$ hexo init
$ npm install
$ hexo d -fg
$ hexo serve

打开 http://localhost:4000 如果看到 hexo 的初始页面证明安装成功。

生成 SSH 公钥密钥

$ cd ~/.ssh
$ ssh-keygen

它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。

GitHub Help - Generating a new SSH key and adding it to the ssh-agent

服务器环境

准备工作

我的云主机的操作系统是Centos7.4 64位。不妨假设它的IP地址是111.22.33.44(我当然不会告诉你真实IP),你需要做的第一步就是配置SSH公钥登陆,这样Hexo通过git部署博客时就不需要输入密码了。
一般买云主机都会有的。。。。

# SSH公钥登陆将不需要输入密码
ssh [email protected]

当然你也可以用iTerm2 配置登录,很方便,快捷。。。

为了省事,我将直接使用root用户,这是不符合安全规范的。但是,一方面我只是为了部署博客,不担心黑客干坏事;另一方面,我也做了必要的安全防范,比如配置腾讯云安全组,禁止SSH密码登陆以及配置UFW防火墙。

安装 Git & Node.js

$ yum install git
$ curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
$ yum install -y nodejs

创建 git 用户 & 禁用 git 用户的 shell 登录权限

$ adduser git
$ vim /etc/passwd

git:x:1001:1001:,,,:/home/git:/bin/bash

改为

git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell

添加证书登录

前面已经生成了公钥,现在把 .pub 公钥里的内容添加到服务器的
/home/.ssh/authorized_keys 文件中

初始化 Git 仓库

目录可自己选择,此处用 your-git-dir 代替目录

$ mkdir your-git-dir
$ cd your-git-dir
$ git init --bare hexo.git

使用 --bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

配置 git hooks

在 hexo.git/hooks 目录下新建一个 post-receive 文件:

$ cd /your-git-dir/hexo.git/hooks
$ vim post-receive

在 post-receive 文件中写入如下内容:

#!/bin/sh
git --work-tree=/www/hexo --git-dir=/your-git-dir/hexo.git checkout -f

其中 /www/hexo 为部署目录,/your-git-dir/hexo.git 为该 git 仓库。

设置这个文件的可执行权限:

$ chmod +x post-receive

设置拥有者

$ chown -R git:git hexo.git
$ chown -R git:git /www/hexo

安装Nginx

推荐用宝塔面板,可以一键搭建LNMP,会自动集成所需要的环境。。。。

本地配置

现在配置 hexo 的 deploy。

修改 hexo 目录下的 _config.yml 找到 deploy, 修改为:

repo 的地址为你自己的地址以及 git 仓库目录

deploy:
    type: git
    repo: [email protected]:/your-git-dir//hexo.git
    branch: master

开始使用

新建文章:

$ hexo new "post name"

生成 & 部署:

$ hexo clean && hexo g && hexo d	 

参考

阿里云VPS搭建自己的的Hexo博客
在 VPS 上搭建 Hexo 博客,使用 Git 部署