Laradock+Apache2のDocumentRootの設定でハマった
先日、LaradockでLaravelの開発環境を構築しました。
サーバはapache2にしたのですが、若干エラーにハマったのでメモ書き。
とりあえず普通に構築
最初の設定はこんな感じ
APP_CODE_PATH_HOST=../laravelproject APP_CODE_PATH_CONTAINER=/var/www/ <中略> APACHE_HOST_HTTP_PORT=800 APACHE_DOCUMENT_ROOT=/var/www/public
FROM webdevops/apache:centos-7
<VirtualHost *:80> ServerName servername.test DocumentRoot /var/www Options Indexes FollowSymLinks <Directory "/var/www/"> AllowOverride All <IfVersion < 2.4> Allow from all </IfVersion> <IfVersion >= 2.4> Require all granted </IfVersion> </Directory> </VirtualHost>
この設定で/var/www/直下にlaravelprojectが展開され、DocumentRootがpublicになると思いました。
エラー
「このサイトにアクセスできません」画面で接続できない。
ログを確認
$ docker logs -f laradock_apache2_1
無限にエラー出てる
2020-07-30 13:08:44,418 INFO spawned: 'apached' with pid 23 -> Executing /opt/docker/bin/service.d/httpd.d//10-init.sh 2020-07-30 13:08:44,507 INFO success: apached entered RUNNING state, process has stayed up for > than 0 seconds (startsecs) AH00526: Syntax error on line 119 of /etc/httpd/conf/httpd.conf: DocumentRoot '/var/www/html' is not a directory, or is not readable 2020-07-30 13:08:44,659 INFO exited: apached (exit status 1; not expected)
DocumentRootの/var/www/htmlがない? 設定が反映されていないのだろうか。
処置
とりあえず動く状態を目指す
APP_CODE_PATH_HOST=../laravelproject APP_CODE_PATH_CONTAINER=/var/www/project <中略> APACHE_HOST_HTTP_PORT=800 APACHE_DOCUMENT_ROOT=/var/www/project/public
<VirtualHost *:80> ServerName servername.test DocumentRoot /var/www/project/public Options Indexes FollowSymLinks <Directory "/var/www/project/public/"> AllowOverride All <IfVersion < 2.4> Allow from all </IfVersion> <IfVersion >= 2.4> Require all granted </IfVersion> </Directory> </VirtualHost>
$ docker-compose down $ docker-compose build apache2 $ docker-compose up -d apache2
http://localhost:800/
にアクセスしたら無事いつものLaravel画面が。
まとめ
いろいろ調べたけど、原因がいまいち掴めず。
もっといい方法があれば知りたい。
10/02追記
全然理解足りてなかった。
まあ今も理解できてないんですが、
サーバーにアクセスがあった時に見に行くRootはconfファイルの記述になるので、そっちの修正が必要だったと。
laradockの.envで設定する
APACHE_DOCUMENT_ROOT
は何をしているんだろうか。
Dockerfileに引数として渡されて環境変数として設定されている(?)けど、
その先にどう使われているが全く分からない。