在折腾的过后往往都需要进行总结记录,相比〇〇笔记来说我更喜欢使用博客进行记录。
基本设想
- 本地 Hexo 生成静态文件,使用 Git 同步至服务器仓库
- 服务器仓库收到 push 后 Git Hooks 触发 checkout 命令复制至 Nginx 网站根目录
- 通过 Nginx 转发,实现博客访问
环境约定
- 本地:macOS Mojave 10.14.6
- 服务器:CentOS 7.7 1908
本地环境搭建
Hexo 依赖于 Git 和 Node.js 。由于我装了 Xcode 所以自带 Git 。至于 Node.js 我推荐使用 Node Version Manager 进行管理和安装。
安装 nvm
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
在没有 ~/.bash_profile
的情况下还需手动创建并写入下列内容以添加环境变量。
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
别忘了 source ~/.bash_profile
使其生效
安装 Node.js
安装最新的 LTS 版本
$ nvm install --lts
# 检查版本
$ node -v
v12.16.1
$ npm -v
6.13.4
安装 Hexo
Git 和 Node.js 都安装完成后就可以使用 npm 安装 Hexo 了。
$ npm install -g hexo-cli
接着创建博客的目录并初始化.
$ hexo init blog
$ cd blog
$ npm install
为了使用 hexo d
进行同步我们还需要安装插件和生成密钥
$ npm install hexo-deployer-git --save
$ ssh-keygen -t rsa -C "邮箱地址"
输出密钥内容到屏幕上
$ cat ~/.ssh/id_rsa.pub
至此本地环境配置完毕。
服务器环境搭建
安装 Git
$ yum update -y
$ yum install git -y
配置 Git 用户
# 设置名字和邮件地址
$ git config --global user.name 'name'
$ git config --global user.email 'email'
# 创建 git 用户
$ groupadd git
$ useradd -s /usr/bin/git-shell -g git git
# 配置密钥登入
$ cd /home/git
$ mkdir .ssh
# 在 authorized_keys 中写入本地的公钥信息
$ vi .ssh/authorized_keys
# 设置权限
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
创建裸仓库并配置 Git Hooks
$ git init --bare blog.git
$ vi blog.git/hooks/post-receive
写入如下内容
#!/bin/sh
git --work-tree=/var/www/blog --git-dir=/home/git/blog.git checkout -f
善后工作
# 创建网站根目录
$ mkdir -p /var/www/blog
# 设置目录所有者
$ chown -R git:git /var/www/blog
$ chown -R git:git /home/git
# 设置执行权限
$ chmod +x blog.git/hooks/post-receive
安装 Nginx
这里使用 yum 安装 Nginx ,有需要编译安装的可以看这篇文章。
添加 Nginx 官方源
$ rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ yum install nginx -y
配置 Nginx
# 修改 Nginx 配置文件,指定网页根目录为 /var/www/blog
$ vi /etc/nginx/nginx.conf
# 修改后检查配置文件
$ nginx -t
# 启动 Nginx 并设置开机自启动
$ systemctl start nginx
$ systemctl enable nginx
# 如果开启了防火墙记得开放 http 端口
$ firewall-cmd --zone=public --add-port=80/tcp --permanent
配置 _config.yml
打开本地博客根目录下的 _config.yml 文件,修改最后的 deploy 配置
deploy:
type: git
repo: git@'IP':/home/git/blog.git
branch: master
在写完博文后使用 hexo g -d
就可以轻松部署到服务器上了。