前言
历经一天踩坑实践,终于将个人Hexo博客从本地成功部署至华为云服务器,并完成阿里云域名到华为云DNS的平滑迁移。本文详细记录完整操作流程,涵盖以下核心内容:
- 🛠️ 华为云ECS服务器初始化配置
- 🚀 Hexo项目自动化部署方案
- 🔒 Nginx反向代理安全配置
- 🌐 域名解析迁移与多平台适配
- ⚡ 高频问题排查指南
一、华为云服务器环境准备
1.1 服务器基础配置
登录华为云控制台,完成以下初始化操作:
创建弹性云服务器(ECS)
- 规格:推荐2核4G(个人博客足够)
- 镜像:Ubuntu 22.04 LTS
- 安全组:放行22(SSH)、80(HTTP)、443(HTTPS)端口
绑定弹性公网IP
# 查看IP绑定状态 ifconfig eth0 | grep inet # 输出示例:inet 192.168.0.190(私有IP) 公网IP:1.94.173.180 ### 1.2 基础服务安装 ```bash # 更新系统并安装必备组件 sudo apt update && sudo apt upgrade -y sudo apt install -y git nginx nodejs npm # 验证版本 node -v # 需≥v18.x nginx -v # 需≥1.24.x
二、Hexo项目自动化部署
2.1 服务器端仓库配置
# 创建裸仓库
mkdir ~/hexo.git && cd ~/hexo.git
git init --bare
# 创建网站根目录并赋权
sudo mkdir -p /var/www/hexo
sudo chown -R $USER:$USER /var/www/hexo
2.2 配置Git钩子
编辑 ~/hexo.git/hooks/post-receive
:
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/home/ubuntu/hexo.git checkout -f
赋予执行权限:
chmod +x hooks/post-receive
2.3 本地Hexo项目配置
修改本地Hexo的 _config.yml
:
deploy:
type: git
repo: ubuntu@1.94.173.180:/home/ubuntu/hexo.git
branch: master
执行部署:
hexo clean && hexo generate && hexo deploy
三、Nginx服务配置与优化
3.1 基础站点配置
创建 /etc/nginx/sites-available/hexo.conf
:
server {
listen 80;
server_name nusqx.top www.nusqx.top;
root /var/www/hexo;
index index.html;
location / {
try_files $uri $uri/ =404;
}
# 禁用日志以提升性能
access_log off;
error_log /dev/null;
}
启用配置:
sudo ln -s /etc/nginx/sites-available/hexo.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx
3.2 安全加固措施
# 在server块内添加:
add_header X-Frame-Options "DENY";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin";
四、阿里云域名迁移至华为云DNS
4.1 域名解析配置
华为云控制台操作
- 进入云解析服务
- 添加记录集:
类型 主机记录 值 TTL A @ 1.94.173.180 300 CNAME www nusqx.top. 300
NS记录验证
nslookup -type=ns nusqx.top 8.8.8.8 # 应返回华为云DNS服务器:ns1.huaweicloud-dns.com 等
4.2 域名状态检查
- 确保域名状态为“已实名”
- 原阿里云解析记录全部清除
- 等待DNS全球生效(最长48小时)
五、高频问题排查指南
5.1 访问出现403 Forbidden
原因:Nginx无权限访问网站目录
解决:
sudo chown -R www-data:www-data /var/www/hexo
sudo chmod -R 755 /var/www/hexo
5.2 域名解析不生效
验证步骤:
# 指定公共DNS查询
dig nusqx.top @1.1.1.1 +short
# 预期输出:1.94.173.180
# 若返回空值,检查华为云解析记录配置
5.3 Nginx配置报错
日志分析:
tail -f /var/log/nginx/error.log
# 常见错误:符号链接权限问题、监听端口冲突
Nginx进程用户(默认是 www-data
)没有权限访问 /home/blog/hexo-deploy
目录
从你提供的目录权限信息来看,关键问题在于 Nginx进程用户(默认是 www-data
)没有权限访问 /home/blog/hexo-deploy
目录。以下是具体分析和解决方案:
问题分析
目录权限:
drwxrwxr-x 22 blog blog 4096 Apr 2 16:34 /home/blog/hexo-deploy
- 目录所有者是用户
blog
,组是blog
。 - 权限为
775
(所有者blog
和组内用户有读写执行权限,其他用户仅有读和执行权限)。 - Nginx默认以
www-data
用户运行,而www-data
不属于blog
组,因此无权访问此目录。
- 目录所有者是用户
解决方案
将 www-data
用户加入 blog
组
让Nginx进程用户(www-data
)获得组权限:
# 将 www-data 用户加入 blog 组
sudo usermod -aG blog www-data
# 验证组是否添加成功
groups www-data
# 输出应包含 "blog"
# 重启Nginx使组权限生效
sudo systemctl restart nginx