环境
把hexo的静态文件部署到nginx,环境是ubuntu。
nginx
参考默认的站点,改成blog目录:
1 | sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-enabled/blog |
修改其中的root为$HOME/blog。然后重启服务:
1 | sudo service nginx restart |
创建站点目录,使用www-data组。
1 | sudo usermod -a -G www-data $myuser |
此时重新登陆下用户,便于这个用户可以chgrp到www-data。
1 | sudo mkdir /var/www/blog |
注意,不能放到$HOME下面,因为ubuntu的$HOME对其他用户是隐藏的。
创建仓库
用这个git仓库的post-hook来实现自动checkout,这样就能做到push到这个仓库即静态发布。
创建裸仓库目录:
1 | mkdir $HOME/repos |
设置post-hook:
1 | cd $HOME/repos/blog.git/hooks |
注意,这个仓库是发布仓库,用于存放发布后的网页,而不是本blog的源码仓库。
安装hexo
在本地安装node.js,然后安装hexo,如果全局安装:
1 | npm install hexo-cli -g |
我使用局部安装。
对目录进行init。因为不是全局安装,所以用npx来调用当前目录的module。
1 | mkdir $HOME/blog && cd $HOME/blog |
本地预览:
m
1 | npx hexo s |
blog目录用仓库管理:
1 | git init |
默认 ignore了 本地json module:
1 | ✗ cat .gitignore |
从hexo默认页面也可以看到几个关键的操作(都有缩写):
1 | $ hexo new "My New Post" |
为deploy配置好部署到远程git的操作。
修改_config.yml当中的deploy配置:
1 | deploy: |
部署:
1 | ✗ npx hexo d |
观察远程文件没生效,后来发现post-hook需要去掉exec:
1 | #exec git update-server-info |
成功。
关于git的权限配置
git仓库的权限就是ssh的权限,为了直接用key访问,把本地的pub key放到远程的 ~/.ssh/authorized_keys
里面即可。
关于备案号
方法一
因为theme是在module代码里面的,所以最好找一个已经支持的,比如Fluid,然后配置_config.yml里面的beian即可。
安装参考:
1 | https://github.com/fluid-dev/hexo-theme-fluid |
先
1 | npm install --save hexo-theme-fluid |
然后到主_config.yml里面指定:
1 | theme: fluid |
到主题的_config.yml里面设定:
1 | # 国内大陆服务器的备案信息 |
方法二
直接修改
1 | ./node_modules/hexo-theme-landscape/layout/_partial/footer.ejs |
在里面加代码即可。