手把手教你用VPS部署Hexo博客从零到上线全攻略
卡尔云官网
www.kaeryun.com
作为程序员最爽的瞬间之一就是拥有自己的技术博客。今天我要分享的是用VPS服务器部署Hexo静态博客的全流程攻略(全程实操截图),相比GitHub Pages等免费托管方案速度提升3倍+!建议先收藏再看。(文末附常见问题解决方案)
---
一、为什么要用VPS部署Hexo?
去年我的个人博客还在用GitHub Pages托管时遇到过这种情况:下午三点发布新文章后刷新半小时都看不到更新...后来换成1核1G的腾讯云轻量服务器后加载速度直接从2.3秒降到0.7秒!
传统方案对比:
- GitHub Pages:免费但国内访问慢(实测上海电信延迟280ms)
- Coding Pages:备案麻烦且有突发流量限制
- Vercel:国内部分地区被墙
- 自购VPS:月均15元起+完全自主控制(推荐)
二、准备工作的四个关键点
1. 选购VPS避坑指南
新手建议选择腾讯云/阿里云的轻量应用服务器(记得选Ubuntu 20.04系统),首年价格通常不到100元:
```bash
查看系统版本确认是否支持
lsb_release -a
```
2. 域名绑定诀窍
以阿里云域名为例:
- DNS解析添加A记录指向服务器IP
- 提前申请SSL证书(后面配置HTTPS要用)
3. SSH密钥安全登录
禁用密码登录能防99%的暴力破解:
ssh-keygen -t rsa -b 4096
本地生成密钥对
ssh-copy-id root@your_server_ip
上传公钥
4. Node.js环境搭建
注意要用LTS版本避免兼容性问题:
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
node -v
应显示v16.x.x
三、Hexo核心安装五步曲(含避坑指南)
Step1:全局安装脚手架
npm install hexo-cli -g
hexo init myblog && cd myblog
npm install
初始化项目目录时卡住?试试换淘宝源!
Step2:主题配置实战案例
以Butterfly主题为例:
```yml _config.yml
theme: butterfly
CDN加速技巧:将jsdelivr替换为国内镜像源
cdn_provider: jsdelivr => unpkg.zhimg.com
Step3:生成静态文件测试
```bash
hexo clean && hexo g
遇到Error: ENOENT报错?检查source/_posts目录是否存在.md文件
Step4:Nginx反向代理配置
新建/etc/nginx/sites-enabled/blog.conf:
```nginx
server {
listen 80;
server_name yourdomain.com;
你的域名
location / {
root /home/ubuntu/myblog/public;
静态文件路径
index index.html;
}
}
重启服务前务必检查语法:
sudo nginx -t
显示successful再继续
sudo systemctl restart nginx
Step5:防火墙放行端口(新手必看!)
80/443端口必须开放否则无法访问:
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
开启防火墙别忘这步!
四、持续集成进阶玩法(省时90%)
每次手动部署太麻烦?教你设置Git钩子自动同步:
1. VPS创建裸仓库:
mkdir ~/blog.git && cd ~/blog.git
git init --bare
2. 添加post-receive钩子:
vim hooks/post-receive
!/bin/sh
git --work-tree=/home/ubuntu/myblog --git-dir=/home/ubuntu/blog.git checkout -f
3. 本地仓库关联远程:
git remote add vps ssh://user@your_ip/home/ubuntu/blog.git
git push vps main
以后写完文章一键推送自动部署!
五、安全加固三项必备措施(血泪教训)
1. SSH防护:
```bash
sudo vim /etc/ssh/sshd_config
Port 22222
修改默认22端口
PermitRootLogin no
禁止root登录
MaxAuthTries 3
限制尝试次数
```
2. 定时备份方案:
每天凌晨备份到/home/backup目录
0 0 * * * tar -zcvf /home/backup/blog_$(date +\%Y\%m\%d).tar.gz /home/myblog
3. Fail2ban防爆破:
```bash
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
六、性能优化实测数据对比(附调优参数)
经过以下优化后我的博客Lighthouse评分从72→98:
| 优化项 | 配置参数 | 效果 |
|---------------|----------------------------------|---------------------|
| Gzip压缩 | `gzip_types text/css application/javascript;` | JS体积减少68% |
| Brotli压缩 | `brotli_static on;` | HTML加载提速40% |
| HTTP2协议 | `listen443 ssl http2;` | TTFB降低至120ms |
| CDN加速 | Cloudflare免费套餐 | Asia访问速度↑300% |
常见问题FAQ:
Q1:访问出现403 Forbidden怎么办?
A:检查nginx进程用户是否有public目录读取权限 → `chown -R www-data:www-data public`
Q2:HTTPS证书如何自动续期?
A:使用Certbot工具一键配置Let's Encrypt证书 → `sudo certbot --nginx`
Q3:网站突然无法访问怎么排查?
A:按顺序检查以下服务状态 → `systemctl status nginx` → `netstat -tunlp` → `/var/log/nginx/error.log`
---
现在打开你的终端开始实践吧!如果遇到其他问题欢迎在评论区留言交流(晒出你的博客链接有惊喜)。下期预告:《如何让Hexo博客支持Algolia全文搜索》。
TAG:vps部署hexo,vps架设,运行vps,vps部署docker卡尔云官网
www.kaeryun.com