
Github Actions を使って共用サーバーにデプロイしようと思うんだよね。develop環境にBASIC認証をかけたいんだけど、迷っていることが3つあるんだ

BASIC認証は .htaccess と .htpasswd で設定するアレね
各環境用の .htaccess のgit管理

1つ目は、production環境用、develop環境用、local環境用の .htaccess をどのようにgit管理すればいいかな

案1
(1)違うファイル名で、それぞれ用意する
.htaccess
.htaccess-develop
.htaccess-production
(2)Github Actions の workflow で、develop環境デプロイなら、.htaccess-develop から .htaccess へ上書きコピーする

各環境用の.htaccessがあることがすぐにわかって、いいと思うわ

案2
(1)各環境用のディレクトリを分ける
web/
.htaccess
他もろもろ
web-develop/
.htaccess
web-production/
.htaccess
(2)Github Actions の workflow で、develop環境デプロイなら、web-develop/.htaccess から web/.htaccess へ上書きコピーする

.htaccess 以外にも環境ごとに違うファイルが増えたとき、コピースクリプトが使いまわせそうなのは魅力に感じるけど...
.htaccessを修正したとき、develop環境用やproduction環境用の.htaccessの修正を忘れてしまいそうなことが気になるわね

案3
(1)各環境用の差分をファイルにしておく
web/
.htaccess
.htaccess-develop
.htaccess-production
(2)develop環境デプロイなら、.htaccess 末尾に .htaccess-develop を追加する
cat .htaccess-develop >> .htaccess
Code language: CSS (css)

共通部分を .htaccess にまとめているのは魅力に感じるけど..
緊急時に手作業でFTPアップロードするとき、.htaccess-develop だけを .htaccess へアップロードしてしまいそうことが気になるわね
AuthUserFileの書き方(.htpasswd の位置)

2つ目は、.htaccessのAuthUserFile に.htpasswd の位置をベタ書きしていいのかな

案1
.htpasswd の位置をベタ書きする
AuthUserFile "/home/users/123/example/web/develop.example.jp/secrets/.htpasswd"
Code language: JavaScript (javascript)

問題ないと思うけど

The Twelve-Factor App では
「コード」と「設定」「認証情報」を分離したほうがいい
と説明してあったよ
"/home/users/123/example/web/develop.example.jp/secrets/.htpasswd" って「設定」だから、環境変数にしたほうがいいのかな?と思って

案2
(1)Github Actionsの環境変数に
AUTH_USER_FILE=/home/users/123/example/web/develop.example.jp/secrets/.htpasswd
を設定しておいて
(2)Github Actions の workflow で sed置換する
AuthUserFile "AUTH_USER_FILE"
Code language: JavaScript (javascript)

アプリケーションが利用するDB設定や外部API設定なら、環境変数がいいと思うけど...

共用サーバーには環境変数の設定パネルはないから、.envの内容を Github Actions の Secrets に設定しておく方法だね

AuthUserFile は .htaccess に設定したい値だから、.env に
AuthUserFile=/home/users/123/example/web/develop.example.jp/secrets/.htpasswd
を書いても意味がないんだ

だから「Github Actions の workflow で sed置換する」なのね

PaaSではどの環境でも /var/www/path/to/.htpasswd と同じなんだよね、共用サーバーならではの設定なんだ

sed置換まわりをしくじっていて、実はBASIC認証がかかっていなかったーとなってしまうのがまずいわね
共用サーバーと割り切って、案1 がいいと思うわ
.htpasswd の内容

3つ目、.htpasswd の内容をどこに保存したらいいんだろう

パスワード情報を git にcommitしてはいけないと言われているわね

だよね
(1)ローカルで htpasswdコマンドを使って、.htpasswd ファイルを作成しておく
(2)github actions の Secrets に .htpasswdファイルの内容をまるごと設定しておく
(3)github actions の workflowでSecretsからとってきて、.htpasswdに保存する
(4)共用サーバーにデプロイする

BASIC認証のIDとパスワードをスプレッドシートにまとめて、ドライブにあげておいてね