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
  • 注意,/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

在Linux上安装Git:https://www.cnblogs.com/lhbryant/p/6928894.html

部署教程

阿里云VPS搭建自己的的Hexo博客:https://segmentfault.com/a/1190000005723321
Hexo个人博客部署到CentOS个人服务器:https://segmentfault.com/a/1190000010680022
部署Hexo到个人服务器:https://www.huangtengxq.com/2017/08/19/BuildHexoOnVps/
HEXO部署到unbuntu服务器详细指南:http://www.laoyuyu.me/2017/10/10/hexo_deploy_vps/
服务器部署Hexo博客:https://dogorgod.github.io/2017/03/24/%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%83%A8%E7%BD%B2Hexo%E5%8D%9A%E5%AE%A2/
Hexo博客部署到服务器:https://i.jakeyu.top/2016/12/06/Hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B9%B6%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2/
通过Git将Hexo博客部署到服务器:https://www.jianshu.com/p/e03e363713f9
部署Hexo博客到linux云主机并实现自动发布:https://ghui.me/post/2016/07/host-hexo-vps/
将Hexo博客部署到云主机:https://blog.fundebug.com/2017/05/18/deploy-hexo-on-cloud/
配合Travis CI,将Hexo博客自动部署到你的服务器上:https://blog.keep.moe/2015/11/06/hexo-and-travis-ci/
使用Git Hook自动部署Hexo到个人VPS:http://www.swiftyper.com/2016/04/17/deploy-hexo-with-git-hook/
VPS Centos7安装Git服务器,部署Hexo静态博客:https://www.micronbot.com/blog/8.html
在Ubuntu 14.04服务器上部署Hexo博客:https://cloud.tencent.com/developer/article/1004587
阿里云ubuntu部署hexo,并与本地同步,实现自动部署:http://blog.csdn.net/nghuyong/article/details/54430093
阿里云搭建Git服务,实现Hexo自动部署:https://imys.net/20160303/hexo-nginx-auto-deploy.html
hexo博客部署到linux服务器上:https://lvshen9.github.io/2018/01/08/Hexo%E5%8D%9A%E5%AE%A2%E9%83%A8%E7%BD%B2%E5%88%B0Linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A/

文章目录
  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. 部署教程