把 Hexo 博客部署到 VPS,核心是让 Web 服务器正确读取生成目录。下面是一份供新环境参考的配置笔记,不代表本站线上服务器已按此调整。
先确定文件与服务的边界
Hexo 的源码负责生成页面,Nginx 负责响应请求。只上传 public 内的静态文件,不需要把 node_modules、原始备份和开发工具一起放入网站目录。
本文假设 Nginx 已安装,网站文件放在 /srv/www/myweb。具体安装方式、服务名称和配置文件位置,应按服务器发行版确认。
cat /etc/os-release |
配置静态站点
下面的 server 块放在 Nginx 的 http 上下文内。域名和目录都是示例,不能直接覆盖已有站点配置。
server { |
root 指定磁盘目录,index 指定目录首页。Hexo 文章通常生成 posts/文章名/index.html,所以访问文章目录时需要正常解析目录首页。
这里保留真实的 404。静态博客每篇文章有自己的 HTML,无须把所有不存在的地址都返回首页。
修改后先检查配置
sudo nginx -t |
第一条用于检查语法和引用文件;检查通过后再重新加载。实际服务管理方式可能使用发行版的 systemd 单元。
不要仅验证首页。还应打开一篇文章、刷新文章地址,并检查 CSS、JavaScript、图片与字体是否返回正确内容。
根据现象缩小问题范围
| 现象 | 优先检查 |
|---|---|
| 首页正常,文章 404 | 上传目录层级、文章 index.html、location 配置 |
| 页面没有样式 | 资源路径、资源是否上传、响应是否误返回 HTML |
| 403 Forbidden | 目录首页、服务用户的目录访问权限 |
| 修改配置没有变化 | 是否加载了正确配置、是否执行 reload |
排错时同时看访问日志和错误日志,日志位置以实际配置为准。不要通过给整个目录开放所有权限来绕过问题。
参考资料
选题参考:Sakura Yumine:Linux VPS 服务器环境搭建记录。本文重新组织为静态博客部署笔记,未照搬原文。
