就现在而言, 我如果要写一篇文章, 大概的工作流是这样的:

  • cmd里运行命令 hugo new posts/name_of_the_post.md

  • 编写文章, 同时在cmd里运行 hugo server(不能是wsl, 因为这样无法实时监视网站的变化!)

  • 把文章的 draft: true 改为 false.

  • 打开我的wsl, 运行命令 rsync -avz --delete public/ ubuntu@121.4.46.163:/var/www/haruhi.com.cn

  • 输入密码.

  • 如果发现bug, 再ssh到我的服务器, 在vsc中尝试修改. 其间包含若干次输入密码.

为了简化这两个过程, 我决定:

  1. 让我自己每次不用再输入密码.
  2. 让我可以在(cmd)命令行里无痛推送我的文章.

1很简单, 只需要配置ssh的免密登录即可.

我们在wsl中运行命令ssh-keygen -t rsa -b 4096, 生成一个新的密钥对.

然后运行命令 ssh-copy-id ubuntu@121.4.46.163 将公钥推送至服务器.

再将密钥复制至windows的.ssh文件夹中.

cp ~/.ssh/id_rsa /mnt/c/Users/你的用户名/.ssh/id_rsa

这样, 无论是在wsl还是cmd中, 我们都做到了无痛登录.

但是, rsync -avz --delete public/ ubuntu@121.4.46.163:/var/www/haruhi.com.cn 这条命令实在是太长了.

因此我们让ai帮忙写一个sh脚本

#!/bin/bash
echo ">>> 1. 开始构建 Hugo 网站..."
hugo

# 检查hugo命令是否成功
if [ $? -eq 0 ]; then
    echo ">>> 2. Hugo 构建成功!开始 rsync 同步..."
    rsync -avz --delete public/ ubuntu@121.4.46.163:/var/www/haruhi.com.cn
    
    echo ">>> 3. 同步完成!网站已成功部署。"
else
    echo ">>> Hugo 构建失败,请检查错误!"
    exit 1
fi

由于我们打开cmd比打开wsl稍显快捷, 我们再写一个bat 脚本.

wsl.exe bash -l -c "cd /mnt/c/Users/你的用户名/haruhi_main && ./deploy.sh"

其后如果需要提交新的文章, 只需要hugo new 后编写文章, 保存后直接运行 deploy 就可以了.

可喜可贺, 可喜可贺.