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

部署教程