如何将Hexo静态博客成功部署到自己的VPS服务器?
| 部署步骤 |
所需工具 |
关键配置 |
| VPS环境准备 |
Nginx、Git、Node.js |
系统用户权限、防火墙规则 |
| 本地Hexo配置 |
Hexo CLI、Git |
config.yml部署设置 |
| Git仓库创建 |
Git、SSH |
裸仓库初始化、权限配置 |
| 自动部署配置 |
Git Hooks、Shell脚本 |
post-receive钩子脚本 |
| Nginx服务配置 |
Nginx、域名解析 |
虚拟主机配置、SSL证书 |
如何将Hexo博客部署到VPS?从环境配置到自动部署的完整指南
部署流程概览
| 步骤 |
主要任务 |
预期结果 |
| 1 |
VPS基础环境配置 |
安装Nginx、Git、Node.js等必要软件 |
| 2 |
Git用户和仓库设置 |
创建专用git用户和裸仓库 |
| 3 |
SSH免密登录配置 |
本地与服务器间无需密码推送 |
| 4 |
Git Hooks自动部署 |
实现推送后自动更新网站文件 |
| 5 |
Nginx服务配置 |
正确访问Hexo生成的静态文件 |
详细操作步骤
步骤一:VPS基础环境配置
操作说明:在VPS上安装运行Hexo博客所需的基础软件环境
使用工具提示:
- 包管理器(yum/apt)
- 系统服务管理(systemctl)
# 更新系统包(CentOS/Ubuntu)
sudo yum update -y # CentOS
sudo apt update && sudo apt upgrade -y # Ubuntu
安装Nginx Web服务器
sudo yum install nginx -y # CentOS
sudo apt install nginx -y # Ubuntu
启动Nginx并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
安装Git版本控制
sudo yum install git -y # CentOS
sudo apt install git -y # Ubuntu
安装Node.js(Hexo运行环境)
curl -fsSL https://rpm.nodesource.com/setuplts.x | sudo bash - # CentOS
sudo apt install nodejs npm -y # Ubuntu
步骤二:Git用户和仓库设置
操作说明:创建专门的git用户和裸仓库,用于接收Hexo推送
使用工具提示:
- 用户管理命令(adduser, passwd)
- 文件权限设置(chmod)
# 创建git用户
sudo adduser git
sudo passwd git # 设置密码
配置sudo权限
sudo chmod 740 /etc/sudoers
sudo vim /etc/sudoers
添加:git ALL=(ALL) ALL
创建Git裸仓库
sudo su git
cd ~
mkdir blog.git && cd blog.git
git init --bare
步骤三:SSH免密登录配置
操作说明:配置SSH密钥对,实现本地到服务器的免密登录
使用工具提示:
# 本地生成SSH密钥(如果还没有)
ssh-keygen -t rsa -C "youremail@example.com"
查看并复制公钥
cat ~/.ssh/idrsa.pub
在服务器上配置授权密钥
sudo su git
mkdir -p ~/.ssh
vim ~/.ssh/authorizedkeys
粘贴本地公钥内容
设置正确的权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorizedkeys
步骤四:Git Hooks自动部署
操作说明:配置Git钩子脚本,实现推送后自动部署
使用工具提示:
# 创建post-receive钩子脚本
sudo su git
cd ~/blog.git/hooks
vim post-receive
脚本内容:
#!/bin/bash
git --work-tree=/var/www/html --git-dir=/home/git/blog.git checkout -f
设置脚本可执行权限
chmod +x post-receive
步骤五:Nginx服务配置
操作说明:配置Nginx虚拟主机,指向Hexo静态文件目录
使用工具提示:
# 创建网站根目录
sudo mkdir -p /var/www/html
sudo chown git:git /var/www/html
编辑Nginx配置文件
sudo vim /etc/nginx/conf.d/blog.conf
配置文件内容:
server {
listen 80;
servername your-domain.com;
root /var/www/html;
index index.html;
location / {
tryfiles $uri $uri/ =404;
}
}
测试配置并重启Nginx
sudo nginx -t
sudo systemctl restart nginx
步骤六:本地Hexo配置和部署
操作说明:配置本地Hexo项目的部署设置并执行部署
使用工具提示:
# 在Hexo项目根目录配置config.yml
deploy:
type: git
repo: git@your-server-ip:/home/git/blog.git
branch: master
添加远程仓库(如果需要)
git remote add vps git@your-server-ip:/home/git/blog.git
生成静态文件并部署
hexo clean
hexo generate
hexo deploy
常见问题及解决方案
| 问题 |
可能原因 |
解决方案 |
| Nginx显示默认欢迎页面 |
默认站点配置优先级更高 |
禁用或修改默认站点配置,或使用其他端口 |
| SSH连接被拒绝 |
防火墙阻止或SSH服务未运行 |
开放22端口,检查sshd服务状态 |
| Git推送权限不足 |
目录权限设置错误 |
检查git用户对目标目录的读写权限 |
| 静态文件未更新 |
Git钩子脚本未正确执行 |
检查脚本权限和路径配置,手动测试脚本 |
| 域名无法访问 |
DNS解析未生效或未绑定 |
检查域名解析设置,确保指向正确的服务器IP |
部署验证
完成所有配置后,在浏览器中输入你的服务器IP或域名,应该能看到Hexo博客的正常页面。如果遇到问题,可以按照以下步骤排查:
- 检查Nginx服务状态:
sudo systemctl status nginx
- 验证网站目录文件:
ls /var/www/html
- 测试Git推送:在本地修改文章后重新执行
hexo deploy
通过以上完整的部署流程,你的Hexo博客就已经成功运行在自己的VPS服务器上了。这种部署方式不仅提升了访问速度,还让你对博客拥有完全的控制权。
发表评论