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

背景介绍

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

目的

  1. 实现博客内容同时推送到GitHub和阿里云服务器。

  2. 掌握宝塔面板的基础网站配置方法。

  3. 学习Nginx 基础配置技巧。

基础条件

  1. 已在本地及GitHub上已成功搭建Hexo博客环境。

  2. 已有阿里云服务器。

  3. 已有域名和 SSL 证书。

安装流程

安装 git

服务器端安装 git。

sudo yum install git

创建博客文件夹

服务器端创建文件夹。

sudo mkdir -p /blog/html

设置正确的权限。

sudo chown root:root /blog/htmlsudo chmod 755 /blog/html

创建 git 仓库

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

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

使用 hooks 实现自动部署

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

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

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

保存文件,给权限。

chmod +x /root/blogit.git/hooks/post-receive
vim 基本语法

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

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

修改 hexo 配置

在 hexo 的 _config.yml 文件deploy 设置中增加服务器git 信息。

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

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

ssh root@[域名]

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

hexo clean
hexo g
hexo d

成功同步

安装宝塔

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

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 复制到对应的位置,点击确定即可。

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

nginx -t

nginx 配置

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

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.youkuaiyun.com/weixin_44975887/article/details/117267259

已部署博客

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

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

BY

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

### Hexo 部署GitHub Pages 的配置教程 为了成功将 Hexo 博客部署GitHub Pages 并确保其能够正常访问,以下是详细的说明: #### 1. 修改 `_config.yml` 文件中的 `deployment` 参数 在根站点文件夹下的 `_config.yml` 中找到 `deployment` 配置项,并按照以下格式设置参数[^1]: ```yaml deploy: type: git repo: git@github.com:yourname/yourname.github.io.git branch: master ``` 上述配置表示通过 Git 方式将博客推送到指定的远程仓库地址。 #### 2. 创建并初始化本地 Hexo 环境 利用 npm 安装 Hexo 框架以及初始化博客项目。具体操作包括以下几个方面[^2]: - 使用命令 `npm install -g hexo-cli` 来全局安装 Hexo CLI 工具。 - 执行 `hexo init <folder>` 初始化一个新的 Hexo 博客项目。 #### 3. 设置 SSH 密钥以便于无密码推送 如果尚未配置过 SSH Key,则需先生成密钥对以方便后续向 GitHub 推送数据[^5]。执行以下命令即可完成此过程: ```bash ssh-keygen -t rsa -C "youremail@example.com" ``` 连续按三次回车键后会自动生成名为 `id_rsa.pub` 的公钥文件,其中存储的就是所需的 SSH Keys 内容。 #### 4. 编辑文章或页面内容 对于每篇文章或者静态网页而言,都需要遵循特定结构来定义元信息(Front-Matter)。例如,在新建 `.md` 文件时应包含如下头部字段[^3]: ```markdown --- title: 教程标题 date: YYYY-MM-DD HH:mm:ss tags: keywords: --- 摘要 <!--more--> 正文部分... ``` #### 5. 构建与发布网站 当所有准备工作完成后,可以通过两条简单指令实现最终目标——构建整个站点并将更改同步上传给远端服务器: ```bash hexo clean && hexo g && hexo d ``` 这里分别代表清理缓存、重新生成HTML文档集合以及实际执行部署动作的过程。 以上步骤涵盖了从零开始直至顺利完成Hexo博客上线所需经历的主要环节。只要严格按照这些指导进行实践操作,就能够顺利达成预期效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

细节处有神明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值