部署 HEXO 到自己的 VPS

此文为将 Hexo 部署于自己的 VPS 服务器上的经验。

0.转载说明

作者:JackYao
链接:https://www.jianshu.com/p/a8796a963fe9
来源:简书

有删减。

1.将 Hexo 安装在本机

以下:

1
2
3
4
5
npm install hexo-cli -g #全局安装hexo脚手架工具
hexo init blog #初始化项目,命名为blog
cd blog
npm install #安装依赖库
hexo server #启动nodejs服务, 访问localhost:4000可预览

2.服务器配置

2.1登录服务器

购买服务器以后,可通过ssh登录服务器操作

1
ssh root@ipaddress -p port #ipaddress和port可从供应商处获取,默认为22号端口

2.2安装相关软件

git

1
yum install git

配置git

1
2
git config --global user.email "emial地址"
git config --global user.name "用户名"

配置git仓库(通过git hook完成自动部署)

以下

1
2
3
4
5
6
7
cd /opt #进入opt目录
mkdir hexo.git #创建hexo.git文件夹
cd hexo.git
git init --bare #初始化仓库
cd hooks #进入git钩子脚本目录
touch post-receive #创建post-receive
chmod +x post-receive #增加可执行权限

post-receive文件是当接收到git提交的数据后会执行的钩子脚本,接下来需要编辑该文件。

1
vi post-receive #编辑post-receive文件

内容如下, 具体信息请看注释

1
2
3
4
5
6
7
8
9
#! /bin/bash -l
echo "接收到提交"
GIT_REPO=/opt/hexo.git # Git 项目路径(与你上面初始化的仓库地址路径相同)
TMP_GIT_CLONE=/tmp/64mb # 临时路径
PUBLIC_WWW=/var/www/html/blog/public # Web 目录
rm -rf ${TMP_GIT_CLONE} # 删除临时路径下的文件
git clone $GIT_REPO $TMP_GIT_CLONE # 将提交上来的文件 clone 到临时路径
rm -rf ${PUBLIC_WWW}/* # 删除 Web 目录下的文件
cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW} # 临时路径下的文件复制到 Web 目录下

编辑完成按 esc ,输入 :wq 保存

上面脚本中将仓库转存到了 /var/www/html/blog/public 中。

Ngnix

1
yum install nginx

配置nginx

nginx 的配置文件目录可用以下命令查看

1
nginx -t

确定以后进行配置

1
cd /usr/local/nginx/conf

配置站点访问路径

1
2
touch hexo.conf #创建hexo.conf
vi hexo.conf #编辑hexo.conf文件

hexo.conf 文件内容如下,location /表示用来配置根域名的访问路径

1
2
3
4
location / {
root /var/www/html/blog/public;
index index.html;
}

之后在 nginx 的主配置文件 nginx.conf 中引入 hexo.conf ,进入编辑模式 vi nginx.conf :

1
2
3
4
5
server {
listen 80;
server_name www.yaotiancheng.cn yaotiancheng.cn;
include hexo.conf; #引入hexo.conf
}

重新加载 nginx ,使配置生效

1
nginx -s reload

安装推送插件

在本地 hexo 仓库中,使用以下命令,安装 hexo-deployer-git 插件:

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

推送到服务器

在本地 hexo 仓库中,打开配置文件 _config.yml,修改 deploy 字段

1
2
3
4
5
deploy:
type: git
message: 提交的信息
repo: username@域名/ipadress:git仓库地址
branch: master

需要补充说明的是:

关于 repo 字段包含三个部分

  • username: 登陆服务器用户名, 一般为root
  • 域名 / ipdaress : 已解析的域名或者服务器 ip 地址
  • git仓库地址: 此处为 /opt/hexo.git

这里需要注意的是服务器的ssh协议使用是22号端口号进行通信的。此处我们需要将服务器的端口号更改为默认值22。登陆服务器后修改配置文件。

1
vi /etc/ssh/sshd_config  #将Port字段为22

修改完成后需要重启ssh服务

1
service sshd restart

同时,还需要在 _config.yml 文件中配置 url 字段和 root 字段,否则无法找到样式文件

1
2
url: http://www.yaotiancheng.cn #主域名
root: /

之后通过命令

1
2
hexo g -d  
#输入后会提示ssh密码 输入即可

即可将文件推送到服务器。

安装git推送插件

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

打开浏览器, 输入网址,正常显示。

Done!