Hexo 部署到个人服务器

我身为一名后端的 Web 开发人员,在有了一定的技术能力之后一直想亲手打造一个自己的博客。

在折腾了很久之后终于意识到简单、简洁、够用就好,于是物色了 Hexo 这个静态博客框架,打算部署到自己的服务器上,遂有此文。

配置远程服务器

我的远程主机系统为:Ubuntu 16.04 LTS 版本,使用 LNMP 一键安装包 安装,并且以 root 用户身份远程登录,如果以普通用户身份登录的话,下面的某些步骤需要提权。

安装 Git

apt install git

创建 Git 用户

为了方便,专门创建一个 Git 用户来进行仓库的相关操作。

adduser git

遇到密码输入密码,其它的尽管回车就好。

免密登录

这一步比较重要,因为在配置了 Hexo 自动部署以后,如果没有免密登录的话每次自动部署的时候都需要输入密码,为了避免麻烦直接配置成免密登录,平时在个人电脑上连接远程主机的时候也很好用,一个命令就可以连接到远程服务器了。

本机上执行以下代码生成公钥和私钥(详情参考这里)

然后将 ~/.ssh/id_rsa.pub 里的内容添加到远程服务器上的 /home/git/.ssh/authorized_keys 文件里。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

初始化 Git 仓库

通过 LNMP 一键安装包 安装的环境,网站的根目录为 /home/wwwroot,我把仓库放到 git 用户的家目录 /home/git/repo 下,名为 blog.git

mkdir /home/git/repo && cd /home/git/repo

git init --bare blog.git

Git Hooks

这一步来配置一个 post-receive 的 Hook,仓库在接收到新的 Push 之后会运行这个 Hook,在这个 Hook 里写上去项目目录下拉取新代码的脚本,关于 Hook 详情参考这里

/home/git/repo/blog.git/hooks/post-receive 文件中写入以下内容:

#!/bin/sh
git --work-tree=/home/wwwroot/blog --git-dir=/home/git/repo/blog.git checkout -f

/home/wwwroot/blog 换成你自己的博客项目目录,然后给目录添加执行权限:

chmod +x post-receive

将仓库和项目目录的拥有者改为 Git 用户:

chown -R git:git /home/git/repo/blog.git

chown -R git:git /home/wwwroot/blog

Hexo 配置自动部署

在本地机上的 _config.yml 配置文件的最下面的 deploy 选项改为以下,把 localhost 换成你的远程服务器的 IP 地址,并把仓库的目录改为你自己的:

deploy:
  type: git
  repo: git@localhost:/var/repo/blog.git

自此,使用 hexo g -d 命令就可以直接部署到远程服务器了。


 上一篇
Mac 上使用 Charles 抓包进行网络分析 Mac 上使用 Charles 抓包进行网络分析
近期想给 Chrome 编写一个关于 Github 插件,有一个地方通过 Github 现有的 API 不知道如何快速方便地拿到我需要的数据,但 OhMyStar 2 上可能会有相关的操作,我就想着去借鉴一下它是如何实现的,于是需要用到抓包
2019-02-24
本篇 
Hexo 部署到个人服务器 Hexo 部署到个人服务器
我身为一名后端的 Web 开发人员,在有了一定的技术能力之后一直想亲手打造一个自己的博客。 在折腾了很久之后终于意识到简单、简洁、够用就好,于是物色了 Hexo 这个静态博客框架,打算部署到自己的服务器上,遂有此文。 配置远程服务器我的远程
2019-01-01
  目录