通过Hexo在VPS上建站小结

0. 说明

0.1. 关于操作系统及参数

VPS的系统是Debian9

本机操作系统是Windows10

0.2. 关于搭建思路

在本地端,通过Hexo把markdown文件转化为html页面,再通过git将本地的仓库与远程的仓库同步。

在服务器端,通过设置hooks(钩子),来实现把git仓库里的文件自动化放到网站目录下。通过nginx来处理请求。

1. 服务器端

1.1. 安装git

1
$ sudo apt install git

1.2. 关于git账户的设置

1.2.1. 创建git账户

1
$ sudo adduser git

1.2.2. 修改git用户权限

1
$ vim /etc/sudoers

找到以下内容:

1
2
# User privilege specification
root ALL=(ALL:ALL) ALL

在root那一行下添一行

1
git ALL=(ALL:ALL) ALL

保存文件并退出。

1.2.3. 配置SSH密钥登录

如何生成SSH密钥网上有很多教程,随便找一篇即可,下面假设你已经生成好了SSH密钥。

1
2
3
4
$ su git
$ cd ~
$ mkdir .ssh
$ vim authorized_keys

将生成的.pub后缀的公钥内容拷贝到authorized_keys文件内

1.2.4. 创建网站目录

1
2
$ cd /var/www/              
$ mkdir blog #今后blog静态文件就存在该目录下

1.2.5. 创建git仓库

1
2
3
4
$ cd ~
$ mkdir blog.git
$ cd blog.git
$ git init --bare #使用--bare参数初始化为裸仓库,不包含工作区

1.2.6. 修改Hooks文件

1
2
3
4
5
6
$ cd ~/blog.git/hooks
$ vim post-receive
#将下列内容拷贝到post-receive中
#!/bin/sh
git --work-tree=/var/www/blog --git-dir=/home/git/blog.git checkout -f
#保存退出

1.2.7. 禁止git用户shell权限

1
2
3
4
5
$ sudo vim /etc/passwd
#将最后一行的
git:x:1001:1001:,,,:/home/git:/bin/bash
#修改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

1.3. 关于Nginx的设置

1.3.1. 安装Nginx

1
$ sudo apt install nginx

1.3.2. 配置Nginx

1
$ sudo vim /etc/nginx/nginx.conf

修改nginx的配置文件,可参考如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
server {
listen 80 default; //默认监听80端口
root /var/www/blog; //网站根目录
server_name www.shannon.best; //网址
access_log /var/log/nginx/blog_access.log;
error_log /var/log/nginx/blog_error.log;
error_page 404 = /404.html;

location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ {
root /var/www/blog;
access_log off;
expires 1d;
}

location ~* ^.+\.(css|js|txt|xml|swf|wav)$ {
root /var/www/blog;
access_log off;
expires 10m;
}

location / {
root /var/www/blog;
if (-f $request_filename) {
rewrite ^/(.*)$ /$1 break;
}
}

location /nginx_status {
stub_status on;
access_log off;
}
}
1
2
3
$ sudo systemctl start nginx #运行nginx
$ sudo systemctl enable nginx #设置nginx开机自启
$ sudo systemctl status nginx #显示active(running),运行正常

这里的配置文件只是凑活够用,关于配置文件的进阶操作,可以访问我的另一篇文章,使全网站Https化,用户的访问更安全。

2. 客户端(本地)

2.1. 安装cmder

访问cmder官网,安装了cmder,便可在windows系统下使用Linux的shell。

下载Mini版的即可。

2.2. 安装git

windows系统去git官网下载git

下载好后在cmder中运行git --version若查看到git的版本号,则说明git安装成功。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 一些关于git的设置
$ git config --global user.name "你的用户名"
$ git config --global user.email "你的邮箱地址"
# 如果接下来用git时非常卡,可用以下设置走代理
$ git config --global http.proxy socks5://127.0.0.1:1080
$ git config --global https.proxy socks5://127.0.0.1:1080
# 一步搞定
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
# 取消代理
$ git config --global --unset http.proxy
$ git config --global --unset https.proxy
# 查询当前已设置代理
$ git config --global http.proxy
$ git config --global https.proxy

2.3. 安装Node.js

Hexo是Node.js的一个包,因此安装Hexo必须先安装Node.js。与安装git类似,访问Node.js官网,安装时一直next即可,在cmder中运行node --version,若查看到Node.js的版本号,则说明安装成功。

2.4. 安装Hexo

1
2
$ npm install -g hexo-cli # command line interface
$ npm install hexo-server --save #安装save模块,便于在本地测试,可选

2.5. 配置本地SSH密钥登陆

将生成的私钥存放在C:\Users\当前用户文件夹\.ssh

2.6. 本地博客初始化

在自己喜欢的地方新建一个文件夹,通过cd命令,使cmder处于该目录下

1
$ hexo init

若命令行中显示INFO Start blogging with Hexo!则说明安装成功。

2.7. 配置文件_config.yml

在刚刚init的文件夹里找到_config.yml,如果VPS修改了ssh端口号,在配置文件_config.yml中建议用ssh协议,打开配置文件找到depoly,修改如下:

1
2
3
4
deploy: 
type: git
repo: ssh://username@ip:port/home/git/blog.git
branch: master