🚀 阿里云 Ubuntu 20.04 服务器搭建 Hexo 博客完整指南
教程特色
本教程详细讲解如何在阿里云Ubuntu 20.04服务器上部署Hexo博客,从环境准备到最终上线,每一步都有详细说明和错误解决方案。
📋 准备工作
在开始部署之前,请确保您已经准备好以下内容:
环境要求检查清单
- 阿里云服务器已购买并运行
- 域名已购买并解析到服务器IP
- Hexo本地博客可正常生成
- SSH连接工具已安装
第1部分:云服务器 Git 环境配置
1.1 安装 Git 依赖
首先更新系统包并安装必要的依赖:
bash
1.2 卸载旧版本 Git
如果系统已安装旧版本 Git,先卸载:
bash
sudo apt-get remove git
1.3 下载并编译最新版 Git
bash
bash
# 编译 Git(这需要一些时间)
make prefix=/usr/local all
# 安装 Git
sudo make prefix=/usr/local install
# 验证安装
git --version
成功后会显示 git version 2.33.0 或类似版本号。
1.4 创建 Git 用户并配置权限
创建专用用户
bash
# 创建新用户(此处使用 xiaozhi 作为示例)
adduser xiaozhi
# 设置用户密码(可选但推荐)
passwd xiaozhi
配置 sudo 权限
bash
# 临时修改 sudoers 文件权限
chmod 740 /etc/sudoers
# 编辑 sudoers 文件
vim /etc/sudoers
在文件中找到 root ALL=(ALL) ALL,在其下方添加:
xiaozhi ALL=(ALL) ALL
保存退出后恢复权限:
bash
chmod 400 /etc/sudoers
1.5 SSH 密钥配置
在本地生成 SSH 密钥
在 Windows 的 Git Bash 或 PowerShell 中执行:
bash
ssh-keygen -t rsa
在服务器配置公钥
bash
# 切换到 git 用户
su xiaozhi
# 创建 .ssh 目录
mkdir ~/.ssh
# 创建并编辑 authorized_keys 文件
vim ~/.ssh/authorized_keys
将本地 id_rsa.pub 文件的内容复制到该文件中,保存退出。
设置正确的权限
bash
chmod 755 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
1.6 测试 SSH 连接
bash
ssh -v xiaozhi@你的服务器IP
如果看到欢迎信息,说明连接成功。
第2部分:宝塔面板与网站配置
2.1 宝塔面板基础配置
如果还没有安装宝塔面板,请先安装:
bash
# Ubuntu 20.04 安装命令
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
安装完成后,记下面板地址、用户名和密码。
2.2 添加网站
- 登录宝塔面板
- 点击左侧"网站" → "添加站点"
- 填写域名信息(如
blog.yourdomain.com) - 选择创建数据库(可选)
- 点击"提交"
2.3 SSL证书配置
- 在网站列表中找到刚添加的站点,点击"设置"
- 选择"SSL" → "Let's Encrypt"
- 选择要申请证书的域名
- 勾选"强制HTTPS"
- 点击"申请"
提示
SSL证书申请需要域名正确解析到服务器IP,通常需要几分钟到几小时生效。
2.4 创建博客目录并设置权限
bash
# 切换到 root 用户
su root
# 创建博客存储目录(请将 yourdomain 替换为你的域名)
mkdir -p /www/wwwroot/blog.yourdomain.com/hexo
# 设置目录权限
chown xiaozhi:xiaozhi -R /www/wwwroot/blog.yourdomain.com/hexo
2.5 初始化 Git 仓库
bash
2.6 配置 Git 钩子自动部署
创建自动部署脚本:
bash
# 创建 post-receive 钩子文件
vim /home/xiaozhi/blog.git/hooks/post-receive
在文件中添加以下内容:
bash
#!/bin/bash
git --work-tree=/www/wwwroot/blog.yourdomain.com/hexo --git-dir=/home/xiaozhi/blog.git checkout -f
保存后设置执行权限:
bash
chmod +x /home/xiaozhi/blog.git/hooks/post-receive
2.7 宝塔面板网站目录设置
- 返回宝塔面板
- 进入网站设置 → "网站目录"
- 将目录修改为:
/www/wwwroot/blog.yourdomain.com/hexo - 点击"保存"
第3部分:本地 Hexo 配置与部署
3.1 修改 Hexo 配置文件
打开本地 Hexo 博客根目录下的 _config.yml 文件,找到 deploy 部分进行修改:
yaml
# 部署配置
deploy:
type: git
repository: git@你的服务器IP:/home/xiaozhi/blog.git
branch: master
message: "站点更新:{{ now('YYYY-MM-DD HH:mm:ss') }}"
重要
请将"你的服务器IP"替换为实际服务器公网IP地址。
3.2 安装 Hexo 部署插件
如果尚未安装 git 部署插件,请执行:
bash
npm install hexo-deployer-git --save
3.3 执行部署命令
在本地 Hexo 博客目录下,执行以下任一命令:
标准三步命令:
bash
hexo clean # 清理缓存
hexo generate # 生成静态文件
hexo deploy # 部署到服务器
快捷命令(推荐):
bash
# 使用 && 连接多个命令
hexo clean && hexo g && hexo d
一键部署脚本:
bash
# 创建 deploy.sh 文件
echo "hexo clean && hexo g && hexo d" > deploy.sh
# 赋予执行权限
chmod +x deploy.sh
# 运行脚本
./deploy.sh
3.4 验证部署结果
部署完成后,访问你的域名(如 https://blog.yourdomain.com),如果看到 Hexo 默认页面或你的博客内容,说明部署成功!
🚨 常见问题与解决方案
问题1:Permission denied (publickey)
错误信息:
Permission denied (publickey).
解决方案:
-
检查公钥是否正确复制
bash# 在服务器检查 authorized_keys 内容 cat ~/.ssh/authorized_keys -
检查文件权限
bash# 确保权限正确 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys -
重新生成密钥对
bash# 本地重新生成 ssh-keygen -t rsa -f ~/.ssh/id_rsa_new # 复制新公钥到服务器
问题2:Host key verification failed
错误信息:
Host key verification failed.
解决方案:
bash
# 清除已知主机记录
ssh-keygen -R 你的服务器IP
问题3:git-upload-pack: command not found
解决方案:
bash
# 创建软链接
sudo ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
问题4:git-receive-pack: command not found
解决方案:
bash
sudo ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
问题5:fatal: Could not read from remote repository
解决方案:
- 检查仓库路径是否正确
- 确认服务器防火墙是否放行SSH端口(默认22)
- 重新配置SSH密钥
问题6:网站403 Forbidden
解决方案:
-
检查网站目录权限
bashchown www:www -R /www/wwwroot/blog.yourdomain.com -
检查宝塔面板网站目录设置
-
检查Nginx/Apache配置文件
问题7:SSL证书不生效
解决方案:
- 确认域名解析已生效(使用ping命令检查)
- 等待证书颁发机构审核(最长24小时)
- 在宝塔面板重新申请证书
🔧 高级配置与优化
4.1 配置 Git 免密提交
编辑本地 ~/.ssh/config 文件:
config
Host aliyun-hexo
HostName 你的服务器IP
User xiaozhi
IdentityFile ~/.ssh/id_rsa
Port 22
然后可以简化部署命令中的地址:
yaml
repository: aliyun-hexo:/home/xiaozhi/blog.git
4.2 自动化部署脚本
创建自动化部署脚本 auto-deploy.sh:
bash
赋予执行权限:
bash
chmod +x auto-deploy.sh
4.3 备份与恢复策略
备份 Hexo 源文件
bash
恢复 Hexo 博客
bash
# 解压备份文件
tar -xzf hexo_source_backup.tar.gz -C /path/to/restore
# 安装依赖
cd /path/to/restore
npm install
📚 扩展资源与参考
🎯 总结与下一步
部署完成检查清单
- Git 环境配置完成
- SSH 密钥对配置成功
- 宝塔面板网站设置完成
- SSL证书安装并生效
- Hexo 本地配置文件更新
- 博客成功部署并可通过域名访问
- 备份策略已制定
后续优化建议
-
性能优化
- 启用 CDN 加速
- 配置浏览器缓存
- 压缩静态资源
-
安全加固
- 修改 SSH 默认端口
- 配置防火墙规则
- 定期更新系统和软件
-
功能扩展
- 添加评论系统
- 配置搜索引擎收录
- 集成统计分析
🎉 恭喜!你的 Hexo 博客已在阿里云服务器上成功部署!


