网站部署指南(Nginx + Hexo)

简介

本指南介绍如何在 Ubuntu 服务器上部署 Hexo 博客,并集成 Trojan HTTPS 代理。

系统环境

  • 系统: Ubuntu 20.04 LTS
  • Web 服务器: Nginx 1.18.0
  • 博客引擎: Hexo
  • HTTPS: Trojan

架构说明

1
2
3
4
5
6
7
用户 → HTTPS:443 (Trojan + SSL)

Nginx:80

/ → 博客(Hexo 静态文件)
/openclaw/ → OpenClaw Gateway:18789
/apps/ → 应用展示

安装 Hexo

1. 安装 Hexo CLI

1
npm install -g hexo-cli

2. 创建博客

1
2
3
mkdir -p /var/www/yourdomain
cd /var/www/yourdomain
hexo init blog

3. 配置博客

编辑 _config.yml

1
2
3
4
5
6
7
8
9
10
11
# Site
title: Your Site Name
subtitle: '技术博客'
description: '个人技术博客'
keywords: 技术,博客
author: Your Name
language: zh-CN
timezone: 'Asia/Shanghai'

# URL
url: https://yourdomain.com

4. 生成静态文件

1
hexo clean && hexo generate

配置 Nginx

1. 创建配置文件

编辑 /etc/nginx/sites-enabled/yourdomain.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;

root /var/www/yourdomain/blog/public;
index index.html index.htm;

# 博客主站
location / {
try_files $uri $uri/ =404;
}

# API 代理示例
location /api/ {
proxy_pass http://127.0.0.1:3000/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

# Gzip 压缩
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;
}

2. 测试并重启

1
2
nginx -t
systemctl reload nginx

配置 Trojan

1. 安装 Trojan

1
2
3
4
# 下载
wget https://github.com/trojan-gfw/trojan/releases/download/v1.16.0/trojan-1.16.0-linux-amd64.tar.xz
tar -xf trojan-1.16.0-linux-amd64.tar.xz
mv trojan /usr/src/

2. 配置

编辑 /usr/src/trojan/server.conf

1
2
3
4
5
6
7
8
9
10
11
12
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": ["your_password"],
"ssl": {
"cert": "/path/to/fullchain.cer",
"key": "/path/to/private.key"
}
}

3. 创建 Systemd 服务

编辑 /etc/systemd/system/trojan.service

1
2
3
4
5
6
7
8
9
10
[Unit]
Description=trojan
After=network.target

[Service]
ExecStart=/usr/src/trojan/trojan -c /usr/src/trojan/server.conf
Restart=always

[Install]
WantedBy=multi-user.target

4. 启动服务

1
2
3
systemctl daemon-reload
systemctl enable trojan
systemctl start trojan

SSL 证书

使用 Let’s Encrypt

1
2
3
4
5
6
7
8
9
# 安装 certbot
apt-get install -y certbot

# 申请证书
certbot certonly --standalone -d yourdomain.com

# 证书位置
# /etc/letsencrypt/live/yourdomain.com/fullchain.pem
# /etc/letsencrypt/live/yourdomain.com/privkey.pem

自动续期

1
2
3
4
5
6
7
# 测试续期
certbot renew --dry-run

# 添加定时任务
crontab -e
# 添加:
0 3 * * * certbot renew --quiet

博客管理

创建文章

1
2
cd /var/www/yourdomain/blog
hexo new "文章标题"

编辑文章

1
2
# 文章位置
source/_posts/文章标题.md

生成部署

1
hexo clean && hexo generate

管理脚本

创建 deploy.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
BLOG_DIR="/var/www/yourdomain/blog"

case "$1" in
"new")
cd $BLOG_DIR
shift
hexo new "$@"
;;
"generate"|"g")
cd $BLOG_DIR
hexo clean && hexo generate
;;
*)
echo "用法: $0 {new|generate}"
;;
esac

常见问题

502 Bad Gateway

检查后端服务是否正常运行。

HTTPS 证书错误

  1. 确认证书路径正确
  2. 确认证书未过期
  3. 重启 Trojan 服务

Hexo 生成失败

  1. 检查文章格式
  2. 检查 _config.yml 语法
  3. 查看错误日志

相关文档:


网站部署指南(Nginx + Hexo)
https://dapalm.com/2026/03/01/网站部署指南-Nginx-Hexo/
作者
Mars
发布于
2026年3月1日
许可协议