さくらインターネット Advent Calendar 2020 - Day 7

3 年連続登場! 一般ユーザーの ふうせん🎈 FU-SEN です。
一昨年は Akuras(サービス終了により記事は削除済み)、
昨年はさくらのレンタルサーバの SSL・.htaccess 関連でした。

現在も さくらのレンタルサーバ ライト を継続使用しています。
独自ドメインのメールサーバが必要だったので契約しているのですが、
更に IchigoJam の周辺機器である MixJuice のコンテンツとして
現在 さくらのレンタルサーバ を使用しています。

http/2 対応だと、MixJuice が 1.2.2 以降になってしまう問題があったのですが、
2020 年になって http/2 対応がかなり進み、
どのサーバを使用しても変わらない状態になったので、
さくらのレンタルサーバを使用する手段に落ち着いた、という経緯があります。

数日前にも MixJuice の記事を公開してありますので、気になる方はそちらをどうぞ。

さくらインターネット と IchigoJam との接点は
IchigoSoda という IchigoJam 互換機がある! という事も紹介しておきます。


この MixJuice コンテンツは GitHub で公開しているので、git-ftp を使えます。

git push で公開した後に git ftp push でアップロードするわけです。
今だと GitHub Action などを使用して自動化する人もいると思いますが、
自分は確実なアップロードと確認ができるように手作業にしてます。
でも FTP クライアントでアップロードするよりも容易です。

では、GitHub などで公開していない場合はどのようにするか?

ええ、実はここが原因で さくらのレンタルサーバ を使いこなせずにいたのです。
もう自分は FTP をほとんど使いません。
Windows ですが、 PowerShell 起動して、コマンドでデプロイするのが当たり前。
FTP のセキュリティは FTPS・SFTP で良いのですが、(さくらのレンタルサーバは対応してます)
問題はファイル転送が 1 ファイルずつで、ファイルが多くなると同期に時間を要したり、
最近は UTF-8 の扱いが標準になって、
古い FTP クライアントだと文字コードの問題も出てきます。

GitHub を探せば良いものがあるような……💻カタカタ…あ、これこれ!

ftp-deploy が使用している Basic FTP が FTPS にも対応しています。
FTPS は さくらのレンタルサーバ でも使用できるので、これなら安心です。

まずは npm でインストールしまして……

npm i -g @ball6847/ftp-deploy

そして次を実行します。

ftp-deploy ローカルの場所 ftps://ユーザー:パスワード@ユーザー.sakura.ne.jp/~/www/アップロード先

~/www/ が初期ドメイン ユーザーsakura.ne.jp での公開先ですね。
ドメインに応じて、後ろに付加するようになります。

Windows 向けのバッチファイルを入れておきます。Windows 10 でも大丈夫です。

@echo off
setlocal

set DOMAIN=ドメイン

title ftp-deploy %DOMAIN%

set LOCAL=%DOMAIN%/

set PROTOCOL=ftps
set USER=ユーザー
set PASS=パスワード
set HOST=ユーザー.sakura.ne.jp
set DIR=www/%DOMAIN%/

set URL=%PROTOCOL%://%USER%:%PASS%@%HOST%/~/%DIR%

call ftp-deploy %LOCAL% %URL%

endlocal

pause

エクスプローラから .bat ファイルをクリックするだけでデプロイできます。

セキュリティを気にする場合はパスワード部分を改良してみて下さい。
例えば Hugo を使っているなら ftp-deploy の前に hugo する等もできますね。

ftp-deploy はローカルの状態を完全に反映させます。これはファイルの削除が含まれます。
ディレクトリの指定によっては公開ファイルを削除して破壊してしまう恐れがあるので、
くれぐれも %%DIR%% 部分のアップロード先にはご注意下さい。


おまけ。ftp-deploy を用いて、ユーザー.sakura.ne.jp を更新したい場合、
www/ 直下でサブドメインを無視する、という事ができません。
www/ をアップロード先にすると、
他ドメイン向けのディレクトリがバッサリ削除されてしまうわけですね。😲😅😣
そこで www/ユーザー.sakura.ne.jp フォルダ内で公開するようにします。
コントロールパネルからは設定できませんが、
実は www/.htaccess 内に記載を含めて、これが実現できます。

RewriteEngine On

RewriteCond %{HTTP_HOST} ユーザー.sakura.ne.jp
RewriteRule ^(.*)$ /ユーザー.sakura.ne.jp/$1 [L]

これで ユーザー.sakura.ne.jp も他のドメインのようにフォルダ内で扱えます。
こんな裏技があったとは! 😲😲😲
ユーザー.sakura.ne.jp を使えずにいた人も、これで使い道ができたかもしれません。

注意として https://ユーザー.sakura.ne.jp/dir/ を参照する場合、
www/ユーザー.sakura.ne.jp/dir よりも www/dir が優先されます。
使用してみたい場合は www 内の状態にご注意下さい。


p.s. イチゴジャム レシピ 運営者より、SAKURA.Jam は……えっ、もうない!? 😭


さくらインターネット Advent Calendar 2020

さくらインターネット Advent Calendar 2020 | Qiita