Github Actionsで共用サーバーのdevelop環境にBASIC認証をかけるには

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 >> .htaccessCode 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" って「設定」だから、環境変数にしたほうがいいのかな?と思って

https://12factor.net/ja

案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とパスワードをスプレッドシートにまとめて、ドライブにあげておいてね

タイトルとURLをコピーしました