三年前写过一篇,但是不够详细,恰逢清明假期,又因疫情封校,刚好租了一年的服务器,在时间条件和硬件条件同时满足的前提下,抽出时间来重温一遍部署过程。
1.服务器端操作
1.1 创建博客页面目录
hexo博客属于静态页面,我们要设置一个特定的目录用于存放博客页面。
mkdir -p www/blog
创建好之后我们的博客文件都会放到blog文件夹下
1.2 配置git仓库
本地的hexo博客需要通过git来更新到我们的服务器中,所以我们要在服务器上创建一个git仓库,并且配置hook更新到服务器上存放博客页面的文件中。
mkdir blog
cd blog
git init --bare
创建好仓库之后我们需要配置hooks
vim ~/blog/hooks/post-receive
输入内容为
git --work-tree=/home/mts/www/blog -git-dir=/home/mts/blog checkout -f
保存后添加可执行权限
chmod +x ~/blog/hooks/post-receive
(补充:配置完之后需要将本机的ssh公钥放在服务器上才可以使用git直接进行更新)
1.3 安装nginx
sudo apt install nginx
1.4 配置nginx
nginx可以用来反向代理,可以使用nginx来访问我们的博客文件
sudo vim /etc/nginx/sites-available/default
将文件中root后面改为/home/mts/www/blog
重启nginx
sudo service nginx restart
2配置本地hexo博客
2.1 本地安装博客
此处省略一万字,可以参考之前发的那篇
2.2 远程部署
首先需要修改_config.yml文件,修改deploy字段
url: http://dandeseed.cn
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
deploy:
type: git
repo: mts@dandeseed.cn:www/blog
branch: master
之后在本地博客文件下面远程部署
hexo clean
hexo g # generate
hexo d # deploy
部署会出现的问题:
TypeError [ERR_INVALID_ARG_TYPE]: The “mode” argument must be integer. Received an instance of Object
这是因为hexo版本低,nodejs版本高导致。去官网https://nodejs.org/zh-cn/download/下载12.14.0即可