前言
hexo是一个静态blog引擎,可以直接部署在VPS上,用它自带的服务运行,也可以用它生成静态html,然后由caddy或者ngix反向代理。
参考2:通过 Git Hooks 自动部署 Hexo 到 VPS
Windows 10 安装Hexo
安装node.js
在windows上安装node.js最佳方式是nvm(HEXO官网是那么说的)。安装nvm的最佳方式是下载nvm-setup(这是我说的)
下载好后一路next,可以指定目录,然后就可以安装node.js了。这里再推荐一个软件cmder。
安装node.js的稳定版本:
1 | nvm install stable |
完成之后,安装Hexo
1 | npm install -g hexo-cli |
安装Hexo的git插件,否则提交时会提示:ERROR Deployer not found: git
1 | npm install hexo-deployer-git --save |
Hexo初始化
安装 Hexo 完成后,请执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件。
1 | hexo init <folder> #指定hexo的目录 |
初始化完成后,在folder文件夹中的结构如下:
1 | . |
VPS配置
安装Git
1 | root@ubuntu:~$ sudo apt-get update |
添加git用户
1 | root@ubuntu:~$ adduser git #注意,useradd不会创建home文件夹,要用adduser |
为git用户添加sudo权限
- 方法一
1 | root@ubuntu:~$ gpasswd -a git sudo |
- 方法二
1 | root@ubuntu:~$ chmod 740 /etc/sudoers #修改权限 |
找到
1 | root ALL=(ALL:ALL) ALL |
添加一行:git ALL=(ALL:ALL) ALL
1 | root@ubuntu:~$ chmod 440 /etc/sudoers #收回权限 |
生成SSH公钥
1 | root@ubuntu:~$ cd ~ |
上服务器把id_rsa和id_rsa.pub拷贝到自己的电脑里。
设置相关目录
先创建git的目录
1 | root@ubuntu:~$ su git |
创建网站目录
1 | root@ubuntu:~$ mkdir /var/www/blog |
要确保/home/git/blog.git和/var/www/blog的用户组权限正确,如果不对用chown命令
配置Git Hooks
创建post-receive文件
1 | root@ubuntu:~$ su git |
在post-receive中添加下面的内容,目的是将git仓库中的文件自动推送到/var/www/blog里。
1 |
|
保存并退出后,给文件授权
1 | git@ubuntu:~$ chmod +x post-receive |
配置本地电脑上的Git
Windows 上设置Git,使用Bash Here
1 | git config --global user.name "你的用户名" |
由于Hexo通过Git部署不支持密码登陆,所以设置SSH PublicKey。使用Bash Here
1 | cd ~ |
这里我用过ssh-copy-id -i ~/.ssh/id_rsa.pub git@服务器ip地址命令,但显示permission deny(Public),估计和我设置了VPS登陆必须使用key有关。所以我就把VPS上生成的id_rsa和id_rsa.pub两个文件拷贝到本地计算的这个文件夹里~/.ssh,覆盖上一步用命令生成的文件,输入下面命令试一下是否可以免密登陆。
使用Bash Here
1 | ssh git@服务器IP地址 -p 端口 |
注意,此处用了-p参数,当远程端口不是默认22的时候。
但是在hexo的配置里面,不支持这种格式,所以需要在本地计算的~/.ssh文件夹里面,新建一个config文件,内容如下:
1 | Host 服务器IP |
配置Hexo
打开本地hexo根目录下的_config.yml文件,将deploy的配置,修改为:
1 | Deployment |
安装Caddy
使用脚本安装
一种是源码安装,需要安装Go,小白就不搞了,用脚本安装,一句搞定
1 | root@ubuntu:~$ curl https://getcaddy.com | bash -s personal |
Caddy配置
首先把 caddy 配置成一个服务,这样就可以开机自动运行,方便控制
1 | root@ubuntu:~$ sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service # 从 github 下载 systemd 配置文件 |
创建caddy配置文件
1 | root@ubuntu:~$ sudo vim /etc/caddy/Caddyfile |
测试caddy
编辑一个html网页测试一下
1 | root@ubuntu:~$ sudo vi /var/www/index.html |
简单的html
1 |
|
1 | root@ubuntu:~$ sudo systemctl start caddy |
Windows中,如果执行 hexo deploy 后,出现error deployer not found:git 的错误处理
输入代码:
1 | npm install hexo-deployer-git --save |