前回の記事でLet’s EncryptでSSL設定する場合、 http://ドメイン/.well-known/ というURLにアクセスする必要があります。
ただherokuの場合、隠しフォルダ、隠しファイル自体が403エラーになり、アクセス自体ができないんですよね。
アプリ側でルーティングを設定しようが、htaccessでコントロールしようができませんでした。
herokuの場合、サーバーの設定などはすでに出来上がっており、カスタマイズが難しいんですよね。
四苦八苦して調べたところ、httpd.conf自体を上書きできるとのことでなんとか上記URLにアクセスさせることができました。
Procfile
herokuのようなPaasの場合、何も設定をしなくてもある程度動かすことができますが(正確にいうと省略されてる)、細かいカスタマイズやコマンドなどを入れることもできます。
その場合、ルートディレクトリにProcfileというテキストを作り、ここに起動コマンドを書いておくことで任意の設定ファイル(httpd.confなど)を読み込ませることができます。
Herokuに必要なProcfileの書き方についてまとめておく
Procfileですが、今回私が書いたのは下記の一行だけです。
1 |
web: vendor/bin/heroku-php-apache2 -c httpd.conf |
herokuの管理画面を見ると
web heroku-php-apache2 となっていますが、これがherokuが動いているプラットフォーム(dynoと言います。)になります。
実際にはここが起動しているようですので、起動コマンドが web: vendor/bin/heroku-php-apache2 のようになります。
修正したhttpd.confですが以下がheroku上で使われている実際はgitで確認できます。
https://github.com/heroku/heroku-buildpack-php/blob/master/conf/apache2/heroku.conf
私の場合、上記ファイルをまずそのままコピペし、Procfileと同階層(つまりはルートディレクトリ)におき、
1 2 |
32行目 <FilesMatch "^(\.|composer\.(json|lock|phar)$|Procfile$)"> # explicitly deny these again, merged with the docroot later |
を
1 2 |
32行目 <FilesMatch "^(\.ht|composer\.(json|lock|phar)$|Procfile$)"> # explicitly deny these again, merged with the docroot later |
のように書き換えてアップしたところ無事隠しフォルダが見えました。(結果としてこれ自体は前回の記事で触れた通り、使用しなかったのですが・・・)
他にも色々と設定変更ができるようです。
[…] (注:実はherokuの場合このurl自体にアクセスをさせるのが大変でした・・・ 参考リンク herokuでのhttpd.conf設定 ) […]