VPS部署Hexo

本地Hexo部分

安装Node.js

安装Git

下载安装最新版

安装Hexo

sudo npm install -g hexo

生成本地静态网站

  1. 进入要创建网页文件夹
    hexo init
  2. 更换主题
    cd themes
    git clone 需要下载的主题地址
  3. 配置主题
    具体见主题

VPS部分

安装配置Git

创建git用户

1
adduser git

添加root权限

1
2
chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容

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

在下面添加一行
git ALL=(ALL) ALL
保存退出后改回权限
chmod 400 /etc/sudoers

设置Git用户的密码

sudo passwd git

设置Git免密登录

切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

1
2
3
4
5
6
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
#将本地执行 cat ~/.ssh/id_rsa.pub | pbcopy ,将公钥复制粘贴到authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh

执行ssh 测试一下
ssh -v git@SERVER_IP

安装Nginx:

  • 在线安装:apt-get install nginx
  • 源码编译安装:可以安装最新版
    nginx -t
    nginx配置

自动化部署

建立git裸库

裸仓库就是只保存git信息的Repository

1
2
3
su git
cd ~
git init --bare blog.git

使用Git Hooks同步网页

配置Git Hooks
使用 post-receive钩子,当git有收发的时候就会调用此钩子
在裸库的 hooks文件夹中,新建post-receive文件
vim ~/blog.git/hooks/post-receive

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

保存后,赋予可执行权限
chmod +x post-receive

配置_config.yml

打开 _config.yml, 找到 deploy

1
2
3
4
5
deploy:
type: git
repo: git@SERVER:/home/git/blog.git //<repository url>
branch: master //这里填写分支 [branch]
message: 提交的信息 //自定义提交信息 (默认为 Site updated: {{ now('YYYY-MM-DD HH:mm:ss') }})

测试

hexo g -d

https配置

问题:

按照官方配置后local_search无法使用:

文章含有特殊字符
打开开发者工具,转到网络模块
直接访问search.xml,解析错误,
查看返回包(response),找到文件中特殊字符的所在位置

git 换行符LF与CRLF转换问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Git设置
git config --global core.autocrlf false
git config --global core.safecrlf true

#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

#提交时转换为LF,检出时不转换
git config --global core.autocrlf input

#提交检出均不转换
git config --global core.autocrlf false

#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

#允许提交包含混合换行符的文件
git config --global core.safecrlf false

#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn