前言
建站不难,但作为新手,将 Hexo 部署到 Nginx 的过程中花了我一下午时间,尤其是配置环节。网上的中文教程比较分散,所以我决定整理这篇简单的教程,希望能帮你节省时间。
开始之前的提醒:记得检查网络
如果你通过 SSH 连接远程服务器时,配置明明正确却始终连接失败,可以尝试为 SSH 指定一个新的端口。某些网络环境(如作者的校园网)会劫持 22 端口(SSH 默认端口)。修改 SSH 端口即可解决这个问题。
一、安装 Hexo 环境
1.1 安装 Node.js
访问 Node.js 官网 下载对应系统版本并安装。
验证安装:
1 | npm -v |
如果提示”命令未找到”,需要手动将 Node.js 添加到系统环境变量中。
1.2 安装 Git
访问 Git 官网 下载对应的安装包,安装过程一直下一步即可。
验证安装:
1 | git --version |
1.3 安装 Hexo CLI
在命令行中执行:
1 | npm install -g hexo-cli |
验证安装:
1 | hexo -v |
二、创建你的静态博客
命令参考 Hexo 官方文档。
2.1 初始化项目
1 | hexo init 你的博客文件夹名称 |
这会自动下载依赖并初始化你的项目,默认主题是 landscape,可更换。
2.2 配置站点信息
项目根目录下的 _config.yml 是站点配置文件。
配置说明查看 Hexo 配置文档。
2.3 创建文章
1 | hexo new [布局(可省略)] "文章标题" |
布局类型:
post:正式文章(默认)page:独立页面draft:草稿
若省略布局,则按_config.yml中的default_layout配置。
示例:
1 | hexo new "我的第一篇博客" |
2.4 编辑文章
生成的post位于 source/_posts/ 目录下,自行编辑即可。
草稿在 source/_drafts/ 目录,默认不会在博客网站中显示。
你现在可以自行编辑你的文章。
发布草稿:
1 | hexo publish "草稿标题" |
发布草稿,会将draft转换为post,同时按照_config.yml的设置,自动重命名。
2.5 生成静态文件
1 | hexo clean # 清理旧文件 |
生成的静态文件在主目录下的 public/ 目录,这就是你的可部署的博客网站文件。
2.6 本地预览
1 | hexo server # 简写:hexo s |
在浏览器中访问 http://localhost:4000 即可预览你的博客。
三、部署到 Nginx 服务器
部署流程概览
- 安装 Nginx
- 上传静态网站文件
- 配置 SSL 证书(可选,用于 HTTPS)
- 修改 Nginx 配置文件
- 配置防火墙规则
- 重启 Nginx 服务
以下以 Ubuntu 24.04 LTS 系统为例。
3.1 安装 Nginx
1 | sudo apt update |
安装完成后:
- Nginx 配置文件位于
/etc/nginx/ - 默认的示例网站位于
/var/www/html/
3.2 上传静态文件
将 Hexo 生成的 public/ 目录下的所有文件上传到服务器(可自定义位置,建议放在 /var/www/ 下),上传后记得检查文件权限,至少要让www-data(nginx的默认用户)能够访问。
自动化部署脚本(Windows .bat):
如果觉得每次更新都要手动打指令麻烦,可以用我的脚本,将脚本保存为.bat格式,放在 Hexo 项目根目录(记得修改),运行过程中需要你两次输入指定账户的密码:
1 | @echo off |
3.3 上传 SSL 证书(可选)
如果需要配置 HTTPS,需要上传证书文件,你也可以自行修改证书存放的位置:
1 | # 上传 .crt 证书文件 |
Windows 批处理脚本(上传SSL.bat):
1 | @echo off |
3.4 配置 Nginx
nginx的主配置位于 /etc/nginx/nginx.conf ,这里存放了全局配置。
为了让主配置文件易读,可以include指定目录,用于向主配置中导入子配置目录,子配置目录下的各个子配置单独维护自己的配置信息,以拆分整体配置的复杂度。
主配置文件默认include了 /etc/nginx/sites-enabled/* 和 /etc/nginx/conf.d/*.conf。
现在开始配置
在有效的配置目录下,创建新的配置文件(例如创建 /etc/nginx/sites-enabled/hexo),或直接编辑 /etc/nginx/sites-enabled/default:
配置一:HTTP
1 | server { |
配置二:HTTPS
1 | # HTTP 自动跳转 HTTPS |
3.5 配置防火墙
开放 HTTP(默认80) 和 HTTPS (默认443)端口:
1 | sudo ufw allow 80/tcp |
如果你使用云服务器,记得检查云服务的防火墙设置。
3.6 启动 Nginx
检查配置文件语法:
1 | sudo nginx -t |
重启 Nginx 服务:
1 | sudo systemctl restart nginx |
设置开机自启:
1 | sudo systemctl enable nginx |
3.7 访问你的博客
在浏览器中输入你的域名或服务器 IP 地址。
常见问题
404:如果你确定文件正确存在,那么一般是由于上传后,网站文件的所有者为root,www-data无权访问导致的,设置权限即可。