远程部署博客到阿里云服务器 - 从本地到云端的完整流程

前言

对于个人博主来说,将博客托管在云服务器上可以获得更好的性能和自定义能力。本文记录了我通过 SSH 远程管理阿里云服务器上 Hexo 博客的完整流程,包括文章创建、图片上传、静态文件生成和部署。

远程部署博客

环境概述

  • 博客源码位置/root/blog/(阿里云服务器)
  • 主题:AnZhiYu(一个简洁的主题)
  • Web 服务器:Nginx,监听 80 端口
  • 文章目录/root/blog/source/_posts/
  • 静态文件目录/root/blog/public/
  • 网站根目录/var/www/html/

完整部署流程

第一步:本地编写文章

在本地使用 Markdown 格式编写文章,标准格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---
title: 文章标题
date: 2026-05-17 12:00:00
tags:
- 标签1
- 标签2
categories:
- 分类
cover: /images/cover.png
---

## 前言

正文内容...

## 正文

正文内容...

第二步:生成配图

使用 mmx-cli 工具生成文章配图:

1
2
3
4
5
mmx image generate \
--model high-quality \
--prompt "描述图片内容" \
--aspect-ratio 16:9 \
--out /tmp/article-cover.png

注意:aspect-ratio 只支持以下比例:1:1, 16:9, 4:3, 3:2, 2:3, 3:4, 9:16, 21:9

第三步:上传文章和图片

通过 SCP 命令上传文件到服务器:

上传文章

1
2
sshpass -p '你的密码' scp -o StrictHostKeyChecking=no \
-i ~/.ssh/sg_key 本地文章.md root@your-server-ip:/root/blog/source/_posts/

上传图片

1
2
sshpass -p '你的密码' scp -o StrictHostKeyChecking=no \
-i ~/.ssh/sg_key 本地图片.png root@your-server-ip:/root/blog/source/images/

第四步:SSH 远程执行构建

连接到服务器并执行 Hexo 构建命令:

1
2
3
4
5
6
7
8
sshpass -p '你的密码' ssh -o StrictHostKeyChecking=no \
-i ~/.ssh/sg_key root@your-server-ip

# 进入博客目录
cd /root/blog

# 清理并重新生成静态文件
hexo clean && hexo generate

第五步:部署到 Web 目录

将生成的静态文件复制到 Nginx 网站目录:

1
2
3
4
5
# 方法一:直接复制到网站根目录
cp -r /root/blog/public/* /var/www/html/

# 方法二:如果有 deploy 配置,使用 hexo deploy
hexo deploy

第六步:验证发布

检查文章是否成功发布:

1
2
3
4
5
# 检查静态文件是否存在
ls /var/www/html/2026/05/17/文章slug/

# 或者直接访问网站
curl http://aicncn.cn/2026/05/17/文章slug/

常用 SSH 命令速查

操作 命令
连接服务器 sshpass -p '你的密码' ssh -i ~/.ssh/sg_key root@your-server-ip
上传文件 scp -i ~/.ssh/sg_key local.file root@your-server-ip:/path/
上传到指定目录 scp -i ~/.ssh/sg_key local.file root@your-server-ip:/root/blog/source/_posts/
批量上传图片 scp -i ~/.ssh/sg_key *.png root@your-server-ip:/root/blog/source/images/
执行远程命令 sshpass -p '你的密码' ssh root@your-server-ip "命令"

自动化脚本

为了简化部署流程,可以创建一个自动化脚本:

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
26
27
28
29
30
#!/bin/bash
# deploy-blog.sh

SERVER="root@your-server-ip"
SSH_KEY="~/.ssh/sg_key"
ARTICLE="$1"
IMAGE="$2"

if [ -z "$ARTICLE" ]; then
echo "用法: ./deploy-blog.sh 文章.md [图片.png]"
exit 1
fi

# 上传文章
echo "上传文章..."
scp -i "$SSH_KEY" "$ARTICLE" "$SERVER:/root/blog/source/_posts/"

# 上传图片(如果有)
if [ -n "$IMAGE" ]; then
echo "上传图片..."
scp -i "$SSH_KEY" "$IMAGE" "$SERVER:/root/blog/source/images/"
fi

# SSH 远程构建和部署
echo "构建并部署..."
sshpass -p '你的密码' ssh -o StrictHostKeyChecking=no \
-i "$SSH_KEY" "$SERVER" \
"cd /root/blog && hexo clean && hexo generate && cp -r public/* /var/www/html/"

echo "部署完成!"

使用方式:

1
2
chmod +x deploy-blog.sh
./deploy-blog.sh my-article.md cover.png

常见问题处理

问题一:SSH 连接超时

如果连接缓慢或超时,可以添加超时参数:

1
sshpass -p '你的密码' ssh -o ConnectTimeout=5 root@your-server-ip

问题二:第一次连接需要确认

使用 -o StrictHostKeyChecking=no 跳过主机密钥确认:

1
sshpass -p '你的密码' ssh -o StrictHostKeyChecking=no root@your-server-ip

问题三:图片无法显示

检查图片路径是否正确:

  1. 确认图片已上传到 /root/blog/source/images/
  2. 检查文章的 cover 和图片路径是否匹配
  3. 重新运行 hexo generate

问题四:Hexo 命令不存在

如果提示找不到 hexo 命令,需要先安装:

1
npm install -g hexo-cli

或者使用完整路径:

1
/root/blog/node_modules/.bin/hexo generate

总结

通过 SSH 远程管理博客是一种简单高效的方式,整个流程只需要:

  1. 本地准备 - 编写文章和生成配图
  2. 上传 - 使用 scp 上传到服务器
  3. 构建 - SSH 远程执行 hexo generate
  4. 部署 - 复制到网站目录
  5. 验证 - 检查网站是否正常

熟练后,整个流程只需要几分钟就可以完成一篇带图片的博客文章发布。

相关资源


有问题欢迎留言交流!