Hexo 部署到 Aliyun
Hexo 部署到 aliyun
之前个人所有笔记都是放在语雀上,主要除了学生也没啥人看,后面接触多了感觉写写博客好像也蛮不错的。
陆陆续续也搭建过 WordPress 和 Hexo 再三权衡(拖了半年)最后还是选择了 Hexo,并将 Hexo 博客托管在了 GitHub 上并绑定了 yongz.icu 这个域名(现在不用了)。
但总所周知 GitHub 由于某些原因在国内访问速度极慢,hexo deploy 慢的一匹。最后还是下定决心买了阿里云服务器,然后将 Hexo 博客部署到云服务器上,顺便绑个新域名。
[!Note]
本文来自 koenli 大佬:https://www.koenli.com/bda2f0d3.html
1 服务器配置
服务器配置如下表所示(有点破烂):
| CPU | 内存 | 操作系统 | Git | Web |
|---|---|---|---|---|
| 2 核 | 2G | CentOS 7.6 | yum install | 宝塔 |
- CPU / 内存:由于 Hexo 是静态博客,不需要多高的配置,1 核 1G 都是随便跑(
访问量贼大当我没说)。 - 操作系统:这里我必须要吐槽,Ubuntu 为什么不行,我装了三遍都不行,最终认命装了 CentOS 7.6 就可以了(
我敲)。 - Git:大佬博客上写的是 Git 在 CentOS 上版本会很旧,我直接就用 yum 安装了一个,实际试下来,没啥问题。
- Web:可自行安装 Nginx 或 Apache
(不嫌麻烦的话),这里推荐使用宝塔,因为其不仅可以方便的添加网站和开启 HTTPS,还支持对服务器进行资源监控,端口管理等功能,是一款能够有效提升运维效率的服务器管理软件(不是推广)。
2 Git 配置
2.1 创建 Git 用户并配置 sudo 权限
创建一个 Git 用户,用于 SSH 连接:
1 | useradd git |
由于 Git 用户会涉及到 root 命令的使用,配置一下 sudo 权限(CentOS visudo 用的是 Vim,Ubuntu 用的是 Nano):
1 | visudo |
找到 root ALL=(ALL) ALL,在下面一行添加以下内容并保存退出:
1 | root ALL=(ALL) ALL |
2.2 配置 SSH 密钥
在本地机器执行以下命令创建密钥,如果本地机器是 Windows 则在 Git Bash 中执行(可以不用,但是最好要用)。
1 | ssh-keygen |
[!Warning]
如果本地机器已有密钥,可跳过此步,无需重复创建~
生成的公钥文件,Windows 和 Linux 的位置有所不同:
- Windows:
C:/User/%USERNAME%/.ssh/id_rsa.pub - Linux:
~/.ssh/id_rsa.pub
在服务器上执行如下命令,创建 .ssh 目录和 authorized_keys 文件,并修改文件权限(非常重要,权限问题会导致 SSH 连接失败):
1 | # 切换至 git 用户,连同环境变量一起 |
测试从本地机器上是否可以通过 git 用户免密登录服务器:
1 | ssh git@<yourIP> |
2.3 创建网站根目录
[!Info]
- 这里我是直接照搬大佬博客的路径(
其实就是懒)。- 此网站根目录对应 Web 软件的网站发布目录,可自定义。
使用如下命令创建目录,并转移用户所属主和组:
1 | mkdir -p /data/web/blog |
2.4 初始化 Git 裸仓库并配置自动化部署
使用如下命令初始化 git 仓库:
1 | # 创建 git 目录 |
此时在 Git 仓库目录(/data/git/blog.git)下,有一个自动生成的 hooks 目录,在 hooks 目录下创建一个新的钩子 post-receive,用于自动化部署:
1 | vim /data/git/blog.git/hooks/post-receive |
在文件中添加以下内容,根据实际情况修改工作树目录和 Git 目录:
1 | !/bin/bash |
修改文件权限:
1 | chown git:git /data/git/blog.git/hooks/post-receive |
3 安装并配置宝塔
3.1 安装宝塔
- 宝塔 Linux 面板是提升运维效率的服务器管理软件,支持一键 LAMP/LNMP/ 集群 / 监控 / 网站 / FTP / 数据库 / JAVA 等 100 多项服务器管理功能。
- 宝塔官网:https://www.bt.cn/new/index.html。
由于此处我用的是 CentOS,安装命令如下(记得一定要是 == 纯净系统 ==):
1 | cd /tmp ; yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec |
中间会让确认是否默认安装到 /www 目录下,输入 y 回车即可:
1 | Do you want to install Bt-Panel to the /www directory now?(y/n):y |
网络状况良好的情况下大概 3 分钟即可安装完成,安装成功会输出如下内容,其中包括面板的外网、内网访问地址和默认的用户名密码,这些信息也可通过之后再通过 /etc/init.d/bt default 命令查看:
1 | ================================================================== |
[!Warning]
云服务器记得配置端口组,开放相关端口。
3.2 配置宝塔 Linux 面板
通过浏览器访问面板地址,通过上述的默认用户名密码登录即可。因为宝塔面板许多功能都依赖于官网,第一次登录后需要绑定宝塔账号,如果还没有宝塔账号可以点击 “登录” 按钮下方的 “未有账号,免费注册” 跳转到注册,如果已有宝塔账号则直接输入账号信息点击 “登录” 进行绑定。
在 “推荐安装套件” 窗口选择安装 LNMP (推荐),仅勾选安装 “Nginx”,安装方式选择 “极速安装”,最后点击 “一键安装”,等待安装完成(我已经装完了,用下大佬的图):

3.3 添加网站并按需配置 SSL 证书
点击 “网站”,选择 “添加站点”:

填写网站相关信息后,点击 “提交”:
- 域名:设置网站域名,如需填写多个域名,请换行填写,每行一个域名,默认为 80 端口。
- 根目录:此处设置的根目录就是之前创建的网站根目录
/data/web/blog,如果不是根据教程创建的,选择相应的目录即可。
先到 aliyun 上购买个免费证书,信息填写完后,大概十分钟就能发到邮箱:

到域名注册商根据服务器类型(此处为 Nginx)下载对应域名的 SSL 证书(以阿里云为例),其中 .key 后缀的是密钥,.pem 后缀的是证书:

点击刚创建的网站 SSL 证书下的 “未部署” 字样,选择 “当前证书”,用文本编辑器完整复制粘贴密钥(KEY)和证书 (PEM 或 CRT 格式) 的内容到对应的文本框中,点击 “保存” 并强制开始 HTTPS:

到这里服务器上需要配置的内容就结束了。
2025 更新:现在宝塔上可以直接支持部署免费证书啦~
4 配置本地 Hexo
由于之前我是配置提交到 GitHub 上,选在需要修改提交到自己的服务器上,在博客根目录 _config.yml 中添加以下内容:
1 | ## Deployment |
执行部署:
1 | hexo clean all && hexo g && hexo d |
访问前需要在域名注册商配置域名解析,将域名解析到云服务器 IP 地址,如果是本地服务器也可通过配置 hosts 解析进行测试:

访问一下博客域名,查看是否成功:

完结撒花~





