就现在而言, 我如果要写一篇文章, 大概的工作流是这样的:
-
在
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中尝试修改. 其间包含若干次输入密码.
为了简化这两个过程, 我决定:
- 让我自己每次不用再输入密码.
- 让我可以在(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
就可以了.
可喜可贺, 可喜可贺.