Hexo搭建技术博客部署在阿里云服务器上教程

Coding和Github的Pages服务还是有点慢,IP通常也是在国外,使用ping的时候秒秒钟就能周游世界,之前买的阿里云服务一直都空闲着,现在想着把自己的博客部署在阿里云提升博客的访问速度,所以果断舍弃了这个把hexo搭建到了我的阿里云服务器上

博客的架构

先搞明白Hexo博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。不然只跟着步骤过了一遍,却不知道为什么这么做。
hexo的架构
整个流程就是本地将 *.md 渲染成静态文件,然后Git推送到服务器的repository,服务器再通过 git-hooks 同步网站根目录。

搭建流程

第一步: 安装node.js以及本地Hexo初始化
第二步: 服务器环境搭建,包括安装 GitNginx配置 、创建 git 用户
第三步: 使用Git自动化部署发布博客

本地环境

本地环境我就不介绍了查看下面两篇文章

服务器环境搭建

安装nginx

  • 因为我们是拿nginx做Web服务器,所以我们需要安装部署好nginx,如果没有安装,推荐使用LNMP一键安装包,不过我使用的是宝塔的主机面板管理主机。
  • 我们可以专门为hexo创建一个部署目录,比如我创建了/home/www/hexo文件夹,并把nginx的配置文件nginx.conf中的部署目录改为/home/www/hexo,
    配置文件一般在/usr/local/nginx/conf里;同样可以使用默认目录,nginx的默认目录为/var/www/html,如果使用宝塔的主机面板,则默认的部署目录为/www/wwwroot/hexo

安装Git

1
yum install git
  • 检查安装信息:git --version

创建git用户

1
2
3
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers

找到以下内容

1
2
## Allow root to run any commands anywhere
root ALL=(ALL) ALL

在下面添加一行

1
git     ALL=(ALL)       ALL

保存退出后改回权限:chmod 400 /etc/sudoers

  • 然后给新加的用户git设置权限,编辑/etc/passwd将:git:x:1003:1003:,,,:/home/git:/bin/bash 改成:git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell 这样git就只能使用git-shell而不能使用bash。
  • git服务器打开RSA认证
    vim /etc/ssh/sshd_config
    在sshd_config中开启以下几项:
1
2
3
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
  • 随后设置Git用户的密码
1
2
#需要root权限
sudo passwd git

配置ssh

切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限

1
2
3
4
5
6
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
#然后将电脑中执行 cat ~/.ssh/id_rsa.pub | pbcopy ,将公钥复制粘贴到authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh
  • 然后就可以执行ssh 命令测试是否可以免密登录ssh -v git@SERVER 至此,Git用户添加完成

创建仓库

执行命令:sudo git init --bare hexo.git

使用–bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

改变 hexo.git 目录的拥有者为git用户:sudo chown -R git:git hexo.git

配置钩子

hexo.git/hooks 目录下新建一个 post-receive 文件,进入cd /home/git/hexo.git/hooks/,编辑这个文件vim post-receive
post-receive 文件中写入如下内容:

1
2
#!/bin/bash
git --work-tree=/www/wwwroot/hexo --git-dir=/home/git/hexo.git checkout -f
  • 设置这个文件的可执行权限:chmod +x post-receive
  • 更改配置目录的权限:chown -R git:git /www/wwwroot/hexo/
  • 注意,/www/wwwroot/hexo 要换成你自己的部署目录,正如上文所说,我是的配置目录是/www/wwwroot/hexo。其中/home/git/hexo.git是git仓库的位置。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。

下面这种方式我也试过总是提示删除文件夹没有权限

1
2
3
#!/bin/sh
rm -rf /www/wwwroot/hexo
git clone /home/git/hexo.git/ /www/wwwroot/hexo/

配置目录的权限是更改了的:chown -R git:git /www/wwwroot/hexo/ 但是就是没有成功也许是我的方法不对,再此记录下。

参考资料

安装Git

部署教程

个人微信公众号技术交流QQ群
文章目录
  1. 1. 博客的架构
  2. 2. 搭建流程
  3. 3. 本地环境
  4. 4. 服务器环境搭建
    1. 4.1. 安装nginx
    2. 4.2. 安装Git
      1. 4.2.1. 创建git用户
    3. 4.3. 配置ssh
    4. 4.4. 创建仓库
    5. 4.5. 配置钩子
      1. 4.5.1. 下面这种方式我也试过总是提示删除文件夹没有权限
  5. 5. 参考资料
    1. 5.1. 安装Git
    2. 5.2. 部署教程