宝塔服务器搭建hexo博客

宝塔服务器搭建hexo博客
Linstars服务器环境配置
安装宝塔
Hexo 博客 Git 自动化部署全流程知识库
一、整体架构
1.1 部署原理图
1 | 本地 Hexo → Git 推送 → 服务器 Git 裸仓库 → post-receive 钩子 → 网站目录 (Nginx/Apache) |
1.2 核心组件
- 客户端:Hexo + Git + SSH 密钥
- 服务端:Git 裸仓库 + 钩子脚本 + Web 服务器
- 自动化:Git Hooks 实现自动同步
二、服务器端配置
2.1 环境准备
1 | # 1. 安装 Git(Ubuntu/Debian) |
2.2 Git 仓库配置
1 | # 切换到 git 用户 |
2.3 钩子脚本设置
1 | # 编辑 post-receive 钩子 |
2.4 目录权限配置
1 | # 确保网站目录存在且权限正确 |
三、SSH 免密登录配置
3.1 本地生成 SSH 密钥
1 | # 在本地计算机执行 |
3.2 服务器端配置
1 | # 在服务器以 root 执行 |
3.3 公钥格式要求
- 正确格式:
ssh-rsa AAAAB3NzaC1yc2E... user@host - 常见错误:
sh-rsa(少一个 s) - 验证命令:
cat ~/.ssh/authorized_keys
四、本地 Hexo 配置
4.1 修改 _config.yml
1 | deploy: |
4.2 测试连接
1 | # 测试 SSH 连接 |
五、部署执行
5.1 标准部署命令
1 | hexo clean && hexo g && hexo d |
5.2 部署日志解读
1 | INFO Validating config # 配置验证 |
六、常见问题与解决方案
6.1 Git 已安装问题
现象:git is already the newest version
状态:正常提示,无需操作
6.2 用户权限问题
问题:git is not in the sudoers file
原因:git 用户不应有 sudo 权限
解决:使用 su git 而非 sudo su git
6.3 目录不存在问题
问题:chown: cannot access '/path': No such file or directory
解决:
- 在宝塔面板创建网站
- 确认正确的网站根目录路径
- 修正钩子脚本中的路径
6.4 SSH 免密失败问题
排查步骤:
1 | # 1. 检查公钥格式 |
6.5 Git 进程锁定问题
问题:fatal: Unable to create '.deploy_git/.git/index.lock': File exists
原因:上次部署被异常中断
解决:
1 | # 删除锁文件 |
6.6 部署后网站无法访问
检查清单:
- 网站目录权限:
ls -ld /www/wwwroot/bbling.cc - 钩子脚本权限:
ls -l /home/git/hexo-blog.git/hooks/post-receive - 钩子脚本路径:确保网站目录路径正确
- Web 服务状态:在宝塔面板重启 Nginx/Apache
七、安全配置建议
7.1 用户安全
1 | # 禁用 git 用户的 shell 登录(部署完成后执行) |
7.2 文件权限规范
| 文件/目录 | 推荐权限 | 所有者 | 作用 |
|---|---|---|---|
| /home/git/.ssh | 700 | git:git | SSH 配置目录 |
| authorized_keys | 600 | git:git | 公钥存储 |
| 网站根目录 | 750 | git:www | 网站文件存储 |
| 钩子脚本 | 755 | git:git | 自动部署脚本 |
7.3 网络加固
- 修改 SSH 端口(非 22)
- 禁用 root 密码登录
- 配置防火墙规则
- 定期更新系统补丁
八、自动化脚本汇总
8.1 服务器一键配置脚本
1 |
|
8.2 本地部署测试脚本
1 |
|
九、监控与维护
9.1 部署状态检查
1 | # 查看最近部署日志 |
9.2 定期维护任务
- 每周:备份 Git 仓库和网站文件
- 每月:更新 Hexo 主题和插件
- 每季:审查服务器安全日志
- 每年:更新 SSL 证书和密钥
十、故障排除流程图
1 | 部署失败 |
总结要点
- 权限是核心:正确的文件权限(700/600/750)是部署成功的关键
- 路径要准确:钩子脚本中的网站路径必须与实际一致
- 公钥需完整:SSH 公钥必须与本地 id_rsa.pub 完全一致
- 用户需专用:使用 git 专用用户,禁用不必要的权限
- 测试分步骤:先测试 SSH,再测试部署,最后验证网站
此知识库涵盖了从零开始配置 Hexo 自动化部署的全部流程,包括常见问题的解决方案和最佳安全实践。建议将此文档保存为本地参考,方便日后维护和故障排除。
密钥报错解决方法
方法 1:删除旧的 known_hosts 条目(推荐)
错误信息已经告诉你问题所在:
1 | Offending ECDSA key in /c/Users/Lin/.ssh/known_hosts:5 |
这意味着 known_hosts 文件的第 5 行 存储了旧的密钥,需要删除它。
步骤
打开
known_hosts文件(使用
1
notepad
、
1
vim
或
1
nano
):
1
2
3bash
nano /c/Users/Lin/.ssh/known_hosts删除第 5 行(或整行包含
101.126.143.42的内容)。保存并退出(在
nano中按Ctrl+O→Enter→Ctrl+X)。重新尝试
git clone:
1
2
3bash
git clone git@101.126.143.42:/home/git/repos/bbling.git- 这次 SSH 会提示你确认新的主机密钥,输入
yes即可。
- 这次 SSH 会提示你确认新的主机密钥,输入
方法 2:直接清除 known_hosts(适用于测试环境)
如果你确定这个 IP 是安全的(例如,是你自己的服务器),可以直接删除整个 known_hosts 文件:
1 | rm /c/Users/Lin/.ssh/known_hosts |
然后重新运行 git clone,SSH 会重新记录正确的密钥。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果















