hexo 同步部署服务器和GitHub 超详细教程

背景介绍

之前用Hexo、GitHub Pages、netlify 搭建并托管我的个人博客。尽管这种方式极为便捷,但国内访问速度时常受限。最近买了个服务器,刚好学习 Linux 和 Web 部署的相关知识,本文记录下hexo 如何同步部署服务器和GitHub。

目的

  1. 实现博客内容同时推送到GitHub和阿里云服务器。
  2. 掌握宝塔面板的基础网站配置方法。
  3. 学习Nginx 基础配置技巧。

基础条件

  1. 已在本地及GitHub上已成功搭建Hexo博客环境。
  2. 已有阿里云服务器。
  3. 已有域名和 SSL 证书。

安装流程

安装 git

服务器端安装 git。

1
sudo yum install git

创建博客文件夹

服务器端创建文件夹。

1
sudo mkdir -p /blog/html

设置正确的权限。

1
2
sudo chown root:root /blog/html
sudo chmod 755 /blog/html

创建 git 仓库

在服务器端配置 git 仓库接收本地推送,注意设置一个全局分支名称,我的是 main。

1
2
3
4
cd /root
sudo git init --bare blogit.git #创建一个叫blogit的仓库
git config --global init.defaultBranch main #配置全局默认分支名

使用 hooks 实现自动部署

1
sudo vim /root/blogit.git/hooks/post-receive

创建一个钩子文件,将下面的内容,放在 post-receive 里。初学者建议学习下 vim 语法。

1
2
#!/bin/sh
git --work-tree=/blog/html --git-dir=/root/blogit.git checkout -f main

保存文件,给权限。

1
chmod +x /root/blogit.git/hooks/post-receive

vim 基本语法

点击 insert 切换模式,点击 esc 退出编辑模式,注意在英文输入法状态下才可以输入命令。

1
2
:wq #保存
:%d #全部删除

修改 hexo 配置

在 hexo 的 _config.yml 文件deploy 设置中增加阿里云 git 信息。

1
2
3
4
5
6
7
deploy:
- type: git
repository: git@github.com:[对应的项目名].github.io.git #注意替换[]内容
branch: main
- type: git
repository: root@[域名]:/root/blogit.git #注意替换[]内容
branch: main

注意做这一步之前需要将本地电脑的公钥,放在服务器 authorized_keys 文件里。这样就可以通过本地 ssh 连接服务器了,可以通过下面的代码测试是否连接成功。

1
ssh root@[域名]

经过上述过程后,在本地文件夹 利用 hexo 三连,测试是否将博客同时发布到服务器和 GitHub。

1
2
3
hexo clean
hexo g
hexo d

成功同步

安装宝塔

在阿里云里面可以重装带有宝塔的系统,也可以执行下面的命令

1
if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec

安装 nginx

进入宝塔页面,会推荐安装 nginx,其他工具的根据自己情况安装。

配置 html 项目

由于我是用的 hexo 主题为 fulid 很多 css 用的是 https ,需要申请证书,如果没有添加证书,很多效果无法展示,因此需要在阿里云服务器里申请免费的 SSL 证书,个人证书只有 90 天的权限,具体步骤直接在服务器搜索,这里略过不提。

在宝塔内点击网址-html 项目-添加项目,添加域名、根目录信息,点击确定。

在新增的html网站项目里,点击部署 SSL 证书,将阿里云上的证书下载下来,把 key 和 pem 复制到对应的位置,点击确定即可。

用下面代码检查一下配置是否正常,若一切正常,重载配置,浏览域名就可以看到内容啦。

1
nginx -t

nginx 配置

用这种方法不用去折腾 nginx 配置,会自动生成,在宝塔网站管理界面可以看到,以下是示例,实际有 SSL 证书的会复杂一些。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
listen 80;
server_name wenmao.xyz; # 替换为你的域名或IP地址
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_connect_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;

root /blog/html; # 替换实际路径
index index.html index.htm;

location / {
try_files $uri $uri/ /index.html;
}

# 访问日志和错误日志
access_log /www/wwwlogs/hexo_blog_access.log;
error_log /www/wwwlogs/hexo_blog_error.log;
}

结语

折腾了一圈,总算是成功了,这个过程中,基本熟悉了网站部署的流程,购买域名、备案、设置证书,宝塔、nginx 配置。第一次做感觉非常麻烦,完成之后梳理一遍觉得收获了不少,对 liunx、宝塔、1panel 更感兴趣了,另外过程中还进一步了解 hugo、astro、Docusaurus 等网站框架的部署,对比之后还是坚持 obsidian+hexo 的笔记流程,理由是 obsidian 是我主力的笔记软件,不用更换文档的属性,不用更换文件夹,加上hexo 配置好后,三连配合GitHub page 或者netlify 可以非常方便的部署。

总之,整个过程主要的收获初步是了解了Linux 项目部署相关知识。

参考资料

https://blog.csdn.net/weixin_44975887/article/details/117267259

已部署博客

欢迎收藏,有什么问题可以在公众号后留言~

1
2
3
https://wenmao.xyz/
https://wenmaochen.netlify.app/
https://maoyu92.github.io/

BY

纯个人经验,如有帮助,请收藏点赞,如需转载,请注明出处。
微信公众号:环境猫 er
CSDN : 细节处有神明


hexo 同步部署服务器和GitHub 超详细教程
https://maoyu92.github.io/2025/01/24/04 经验分享/nginx 部署hexo 静态网站/
作者
陈文茂
发布于
2025年1月24日
许可协议