在VPS上搭建自己的hexo博客-for dummies(like me)

(Brandon) Song Li Lv4

记录一下。已過時。

预备

本地

安装 Sublime 用来编辑各种文件,安装 hexo 所需的各种工具。

https://hexo.io/zh-cn/docs/index.html

VPS端

使用 root 账户登录自己的VPS,如果默认的root账户的密码比较繁琐,那就暂时先用繁琐的密码登录一下,然后在VPS的终端输入命令

1
passwd

来将root账户的密码修改成自己想要的。

安装hexo

hexo是由台湾人开发的静态博客框架,有中文文档,官网步骤已经很详细了。

https://hexo.io/zh-cn/docs/index.html

Node.js

1
2
3
4
apt-get install -y build-essential
apt-get install gnupg2
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

此段需要修改(20190903)

然后关闭并重新打开终端。

1
nvm install stable

Hexo

所有必备的应用程序安装完成后,即可使用 npm 安装 Hexo。

1
npm install -g hexo-cli

如果出现 permission denied 报错,可以试试

1
2
3
npm config set user 0
npm config set unsafe-perm true
npm install -g hexo-cli

可选(一):配置Apache

该部分为 Apache 的一些基础配置介绍,有相关经验者可以直接跳过

安装Apache

在Ubuntu服务器下Apache的安装非常简单,只需要一行代码就可以解决:

1
apt-get install apache2

Apache配置文件设置

首先我们在 /etc/apache2/sites-available 中新建一个文件 hexo.conf (这个名字可以按自己意愿随便命名),命令如下:

1
vim /etc/apache2/sites-available/hexo.conf

接下来我们对 hexo 文件进行设置,

1
2
3
4
5
6
7
8
9
<VirtualHost *:8080>
ServerName 12.34.56.78 //此处填写你VPS的IP地址
ServerAlias 12.34.56.78 //此处填写你VPS的IP地址
ServerAdmin [email protected] //我胡填的,不知道有啥用
DocumentRoot /var/www/hexo //此处填写你hexo的目录
DirectoryIndex index.html index.htm index.php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

然后

1
ln -s /etc/apache2/sites-available/hexo.conf /etc/apache2/sites-enabled/

最后,重启Apache上述配置就可以使用了:

1
service apache2 restart

可选(二):配置 nginx

使用lnmp(待补充)

小提示

在使用vi命令编辑内容时,用先ESC再:w来保存并用:q来退出或对于已有文件使用:q!保存并按确认退出;在使用nano来编辑内容时,使用Ctrl+o来保存,使用Ctrl+x来退出,或直接使用Ctrl+x并按Y确认来保存并退出。

如果需要数学公式正常显示,需要更改转义

1
2
3
4
5
6
7
8
9
将node_modules/marked/lib/marked.js里面的
//escape: /^\\([\\`*{}\[\]()# +\-.!_>])/,
修改为
//escape: /^\\([`*\[\]()#$+\-.!_>])/,
以及
//em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
修改为
//em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
注:均不含开头两个斜杠。

使用 Dropbox 同步发布

预备

Dropbox 新政策,Ubuntu 系统下,文件格式需为 EXT4 才可以自动同步。

参考 https://help.ubuntu.com/community/ConvertFilesystemToExt4

安装 Dropbox

1
cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -

然后

1
~/.dropbox-dist/dropboxd

下载官方提供的 cli 来控制和管理Dropbox

1
wget https://linux.dropbox.com/packages/dropbox.py

更改权限:

1
chmod +x ./dropbox.py

启动Dropbox:

1
2
./dropbox.py start i--install y 
./dropbox.py autostart y

关闭局域网广播:

1
./dropbox.py lansync n

排除不需要同步的文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
./dropbox.py exclude add ~/Dropbox/经济学与数学
./dropbox.py exclude add ~/Dropbox/雅趣
./dropbox.py exclude add ~/Dropbox/应用
./dropbox.py exclude add ~/Dropbox/杂项
./dropbox.py exclude add ~/Dropbox/哲学
./dropbox.py exclude add ~/Dropbox/政治
./dropbox.py exclude add ~/Dropbox/白嫖
./dropbox.py exclude add ~/Dropbox/test
./dropbox.py exclude add ~/Dropbox/IFTTT
./dropbox.py exclude add ~/Dropbox/TitaniumBackup
./dropbox.py exclude add ~/Dropbox/Mobile Uploads
./dropbox.py exclude add ~/Dropbox/已发送的文件
./dropbox.py exclude add ~/Dropbox/phD
./dropbox.py exclude add ~/Dropbox/GoodNotes Backup

赋予权限

1
2
3
chmod -R 755 /root/Dropbox/hexo/public
chown www:www /root/Dropbox/hexo/public
chmod +x /root/Dropbox /root/Dropbox/hexo

你的网站可能对应的不是 www:www 用户组,有可能是 www-data:www-data 具体可使用 cat /etc/passwd 查看。

自动运行 Dropbox

参考 https://help.ubuntu.com/community/Dropbox 并将其中user部分修改。

自动生成并发布

监听文章

借助 inotify 来实现监听 _posts 目录下的 markdown 文件变化,重新生成静态网站文件。

1
$ sudo apt install inotify-tools

touch一个 inotify.sh,我放在了 hexo 目录下。内容为

1
2
3
4
5
6
7
8
9
#! /bin/bash

export NVM_DIR="/root/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

/usr/bin/inotifywait -mrq -e modify,delete,create,attrib ~/Dropbox/hexo/source/_posts | while read event
do
cd ~/Dropbox/hexo && hexo clean && hexo generate && hexo deploy && rsync -a --delete ~/Dropbox/hexo/public/ /home/wwwroot/brandonsli.com/
done

然后赋予执行权限

1
chmod +x /root/Dropbox/hexo/inotify.sh

开机启动

借助 systemd 来管理 监听脚本 inotify.sh

创建服务的配置文件:/lib/systemd/system/hexo.service

1
2
3
4
5
6
7
8
9
[Unit]
Description=Hexo Auto Generation

[Service]
ExecStart=/root/Dropbox/hexo/inotify.sh
Restart=always

[Install]
WantedBy=multi-user.target

开启服务

1
sudo systemctl start hexo

设置开机启动

1
sudo systemctl enable hexo
  • 標題: 在VPS上搭建自己的hexo博客-for dummies(like me)
  • 作者: (Brandon) Song Li
  • 撰寫于 : 2017-08-24 02:47:20
  • 更新于 : 2021-10-27 09:19:26
  • 連結: https://brandonsli.com/p/d3a8a9d2.html
  • 版權宣告: 保留所有權利 © (Brandon) Song Li