Hexo从github pages迁移到阿里云服务器

本文最后更新于:8 个月前

Hexo部署在github上虽然免费,但是存在一些难以容忍的缺点,如:部署上传慢、偶尔还会上传失败,部署之后无法立即获得更新的结果,绑定自定义域名在部署之后经常会失效。于是决定将hexo博客迁移到阿里云ECS轻量服务器上。

Hexo从github pages迁移到阿里云服务器

一、前置工作

下面是一些需要完成的前置工作,因为我不是第一次使用云服务器了,所以一些需要的配置已经存在了,这里只做一个列举,可以参考其它资料进行安装配置

  • 阿里云服务器安装git
  • 阿里云服务器安装Apache(在CentOS 7 中叫httpd)

二、创建git用户

确保当前登陆的用户为root(需要保证足够的权限)

  • 新建git用户
1
useradd git
  • 设置git用户密码
1
2
passwd git
输入:qiuzcc
  • 添加git用户权限

先扩大对/etc/sudoer的权限,然后编辑

1
2
chmod 740 /etc/sudoers
vim /etc/sudoers

找到指定位置,添加如下:(按i进入编辑模式,添加代码,按esc退出编辑,按:wq保存退出)

image-20220531000353941

修改回对/etc/sudoer的权限

1
chmod 400 /etc/sudoers

三、添加ssh验证

切换到git用户

1
su - git

创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件

1
2
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

按”i”进入编辑模式,将我们在win10中生成的id_rsa.pub文件中的公钥复制到authorized_keys中,按”esc”,然后按”:wq”,保存退出

赋予权限

1
2
chmod 600 /home/git/.ssh/authorized_keys
chmod 700 /home/git/.ssh

测试git连接,在本地端打开git bash,然后输入以下命令(其中git@后面接的是你的服务器公网ip)

1
ssh -v git@120.25.75.176

过程中可能需要根据提示输入一次yes,然后如果没有问题就连接成功啦

image-20220531001455720

四、创建放置hexo的git仓库

切换到root用户

1
su - root

在var目录下创建repo作为Git仓库目录

1
mkdir /var/repo

赋予git用户权限

1
2
chown -R git:git /var/repo
chmod -R 755 /var/repo

接下来创建hexo目录作为网站根目录,并赋予权限:

1
2
3
mkdir /var/hexo
chown -R git:git /var/hexo
chmod -R 755 /var/hexo

接下来创建一个空白的git仓库

1
2
cd /var/repo
git init --bare hexo.git

创建一个新的 Git 钩子,用于自动部署

在 /var/repo/hexo.git 下,有一个自动生成的 hooks 文件夹。我们需要在里边新建一个新的钩子文件 post-receive

1
vim /var/repo/hexo.git/hooks/post-receive

进入编辑模式,然后将下面那两行代码粘贴进去,保存退出。

1
2
#!/bin/bash
git --work-tree=/var/hexo --git-dir=/var/repo/hexo.git checkout -f

修改权限:

1
2
chown -R git:git /var/repo/hexo.git/hooks/post-receive
chmod +x /var/repo/hexo.git/hooks/post-receive

到这里Git仓库已经搭建完毕了

五、修改Apache配置

  • 注释掉/etc/httpd/conf/httpd.conf末尾的两句代码(这样就关闭了node项目的代理)

  • 修改默认主页的目录

编辑/etc/httpd/conf/httpd.conf,找到DocumentRoot这行,修改默认主页的目录为/var/hexo

image-20220531124116579

保存退出

  • 停止node项目进程

进入到之前的Express项目目录下/home/node/BlogSite2

1
pm2 stop ./bin/www

image-20220531011328983

  • 重启httpd服务(这一步很重要!使修改的设置生效)
1
systemctl restart httpd.service

一开始漏了这一步,所以访问公网ip提示错误

image-20220531123036764

官方文档:反向代理设置指南_Apache中文文档 (apachehttpd.com)

扩展

手动停止httpd服务 systemctl stop httpd.service

查看httpd服务状态 systemctl is-enabled httpd.service 或者systemctl status httpd

六、修改本地hexo配置

进入本地电脑hexo博客的根目录,编辑站点配置文件 _config.yml,找到deploy,修改成以下

image-20221124112803658

最后在本地电脑hexo博客的根目录右击,Git Bash Here,输入以下命令部署

1
2
3
hexo clean
hexo g
hexo d

七、给阿里云服务器添加ssl证书

首先申请一个免费的ssl证书,参考:2022阿里云免费SSL证书申请全过程(图文详解)-阿里云开发者社区 (aliyun.com)

然后在Apache服务器上安装SSL证书,参考视频教程:Apache Tomcat及httpd服务器安装SSL证书教程 (aliyun.com)

视频教程中出现的一些有用的命令

1
2
3
httpd -t 	//检查配置文件的正确性
httpd -M //查看httpd下安装的模块
rpm -qc httpd //查看httpd所有配置文件目录

本文参考文章:将Hexo部署到阿里云轻量服务器(保姆级教程) | HJX’s Site (hjxlog.com)


Hexo从github pages迁移到阿里云服务器
http://timegogo.top/2022/06/01/hexo/Hexo从github-pages迁移到阿里云服务器/
作者
丘智聪
发布于
2022年6月1日
更新于
2023年7月16日
许可协议