いまどきはHugoで生成したコンテンツも、
- コンテンツを書く
- どこかのプライベートリポジトリにプッシュして
- どこかでビルドして
- ステージング環境で確認して
- 公開リポジトリにプッシュして
- Webサーバーにデプロイ
みたいなことが当たり前になってきていますね
でもそんなに大事じゃないサイトの構築にそんなにリソースをかけてられない
大事じゃないサイト=なにかをやらかしてとしても、しれっと再デプロイするだけで済んでしまうサイト
でもFTPでやるのは面倒くさい
- コンテンツを書く
- ローカルでビルドするとWebサーバーにアップロード
くらいでちょうどいい
やってみた
lftpを使えばいいみたい
lftp - Sophisticated file transfer program
インストール
$ sudo apt -y install lftp
設定ファイルを書く
$ nano lftp.dat
open -u [ID],[Password] [FTPServer]
mirror -R --only-newer --verbose=3 --log=/hugo/site/lftp.log /hugo/site/public /
echo end
close
quit
キモなのはmirror
コマンド
mirror [option] [src] [dist]
上に書いた設定だと
- -R:[src]がローカル側、[dist]がリモート側になる
- --only-newer:新しいファイルだけコピーする
- --verbose=3:コマンドが出す表示の詳細度
- log=/hugo/site/lftp.log:ログ・ファイルのパス
- /hugo/site/public:Hugoで生成されるコンテンツが入ったディレクトリ
- /:Webサーバーのディレクトリ
あとopen
コマンドでパスワードを指定するときに、パスワードに&が含まれるときは''(一重引用符)でくくってあげるとうまくいった
lftpでアップロードする
$ lftp -f lftp.dat
で設定ファイルを読み込んで実行される
Hugoでコンテンツを生成したらアップロードする
$ nano site_generate.sh
#!/bin/sh
cd /hugo/site
rm -rf public/
hugo --destination public --theme shirouto
rm lftp.log
lftp -f lftp.dat