hexo个人服务器
- 行业动态
- 2025-05-08
- 5
Hexo个人服务器部署全流程解析
本地开发环境准备
(1)Node.js安装与验证
| 操作系统 | 安装命令 | 版本验证 |
|———-|———-|———-|
| Windows | 官网下载安装包 | node -v
|
| macOS | brew install node
| node -v
|
| Linux | sudo apt install nodejs
| node -v
|
需确保Node.js版本≥14.0,推荐使用LTS版本,通过npm install -g n
安装n工具后,可执行sudo n stable
获取最新稳定版。
(2)Git基础配置
git config --global user.name "Your Name" git config --global user.email "your@email.com"
建议启用大文件存储优化:git config --global pack.windowMemory "100m"
(3)Hexo框架初始化
# 全局安装Hexo CLI npm install -g hexo-cli # 创建项目目录 hexo init blog cd blog # 安装必要依赖 npm install
推荐使用Yarn替代npm:npm install -g yarn
,后续执行yarn
替代npm install
服务器环境配置
(1)VPS选择标准
| 指标 | 建议配置 | 说明 |
|————–|—————-|————————–|
| CPU | ≥1核 | 支持基本编译需求 |
| 内存 | ≥1GB | 保障Node.js运行 |
| 存储 | ≥20GB | 存放博客文件及日志 |
| 带宽 | ≥5Mbps | 确保图片加载速度 |
| 操作系统 | Ubuntu 20.04+ | 良好的社区支持 |
(2)服务器基础环境搭建
# 更新系统包 sudo apt update && sudo apt upgrade -y # 安装基础工具链 sudo apt install -y curl git wget unzip nginx # 安装Node.js(推荐NVM管理) curl -ohttps://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc nvm install 16
(3)SSH密钥认证配置
# 生成密钥对(客户端) ssh-keygen -t rsa -b 4096 -C "your@email.com" # 部署公钥到服务器 ssh-copy-id root@your_server_ip
建议禁用密码登录:编辑/etc/ssh/sshd_config
,设置PasswordAuthentication no
Hexo部署核心步骤
(1)Nginx反向代理配置
# /etc/nginx/sites-available/hexo server { listen 80; server_name yourdomain.com; location / { proxy_pass http://127.0.0.1:4000; # Hexo默认端口 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
创建符号链接:ln -s /etc/nginx/sites-available/hexo /etc/nginx/sites-enabled/
(2)Hexo项目部署流程
# 本地生成静态文件 hexo clean hexo g # 上传至服务器 rsync -avz --delete ./public/ root@your_server_ip:/var/www/html/ # 重启Nginx服务 ssh root@your_server_ip 'systemctl restart nginx'
推荐使用--ignore-existing
参数避免重复传输相同文件
域名与SSL配置
(1)DNS解析设置
| 类型 | 名称 | 值 | TTL |
|——|——|——————-|——|
| A | @ | 服务器公网IP | 3600 |
| CNAME| www | yourdomain.com | 3600 |
(2)Let’s Encrypt SSL证书申请
# 安装Certbot sudo apt install certbot python3-certbot-nginx # 获取证书 sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
设置自动续期:sudo certbot renew --dry-run
测试续订流程
自动化部署方案
(1)PM2进程管理配置
# 安装PM2 sudo npm install -g pm2 # 启动Hexo服务 pm2 start /var/www/html/index.js --instances max --name hexo-blog # 设置开机自启 pm2 startup install pm2 save
推荐使用pm2 monit
监控运行状态
(2)Git钩子自动部署
# 在Hexo项目根目录创建post-receive钩子 vim ./.git/hooks/post-receive
#!/bin/bash hexo clean hexo generate rsync -avz --delete ./public/ root@your_server_ip:/var/www/html/ ssh root@your_server_ip 'systemctl restart nginx'
赋予执行权限:chmod +x post-receive
关键配置参数对照表
配置文件 | 关键参数 | 作用说明 |
---|---|---|
_config.yml | permalink: posts/:title/ | URL结构规范 |
Nginx.conf | client_max_body_size 20M | 限制上传文件大小 |
PM2 log | out_file: ./logs/out.log | 进程输出日志路径 |
Let’s Encrypt | renew_before_expiry_days = 30 | 证书提前续期天数 |
常见问题解决方案
部署后页面空白问题排查流程
graph TD A[检查网络连通性] --> B{ping通服务器?} B -Yes --> C[验证Nginx配置] B -No --> D[检查防火墙规则] C --> E{查看error.log} E -404错误 --> F[确认静态文件路径] E -502错误 --> G[检查Hexo进程状态] G --> H[重启PM2服务]
HTTPS访问异常处理步骤
- 检查证书有效期:
sudo certbot certificates
- 验证自动续期:
sudo certbot renew --dry-run
- 清除浏览器缓存:Ctrl+F5强制刷新
- 检查HSTS策略:
include <hsts>
配置段是否存在 - 修复混合内容:
sudo find /var/www/html/ -type f -exec sed -i 's/http:///https:///g' {} ;
FAQs
Q1:为什么使用个人服务器而不是GitHub Pages?
A1:个人服务器提供更高自由度:①可自定义Nginx配置实现GZIP压缩、缓存控制等优化;②支持MySQL/Redis等扩展功能;③不受GitHub速率限制影响;④可部署私有插件,但需自行维护服务器安全,适合技术爱好者。
Q2:如何实现多作者协作更新?
A2:推荐两种方案:①建立Git分支工作流,通过git worktree
管理不同作者分支;②配置SSH免密登录后,使用rsync
同步特定作者目录,示例命令:rsync -avz --exclude '.git' author1/ root@server:/var/www/author1/