CentOS7でFuelPHPをApacheで起動するまでの手順
Vagrant+VirtualBoxで仮想サーバを立ち上げ、CentOS7環境を構築。Apacheをインストールし、ローカルのFuelPHPプロジェクトを動かすまでの手順メモ。
目次
実行環境
実行環境は以下の通り。
VagrantでCentOS環境を構築した前提。
- Window7(ホスト)
- VirtualBox5.0.16
- Vagrant1.9.6
- CentOS7(ゲスト)
Apacheのインストール
-yオプションで実行することで、インストール時の応答確認を省略。
1 | $ yum -y install httpd |
バージョン確認
1 2 | $ httpd -v Server version: Apache/2.4.6 (CentOS) |
Apacheの起動
ちゃんと起動しているか確認。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $ systemctl start httpd.service $ systemctl status httpd.service ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor prese Active: active (running) since Docs: man:httpd(8) man:apachectl(8) Process: 13928 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAI LURE) Main PID: 13958 (httpd) Status: "Processing requests..." Memory: 8.1M CGroup: /system.slice/httpd.service tq13958 /usr/sbin/httpd -DFOREGROUND tq13959 /usr/sbin/httpd -DFOREGROUND tq13960 /usr/sbin/httpd -DFOREGROUND tq13961 /usr/sbin/httpd -DFOREGROUND tq13962 /usr/sbin/httpd -DFOREGROUND mq13963 /usr/sbin/httpd -DFOREGROUND |
ファイアウォールの設定
firewall-cmdコマンドで80番ポートに外部からの接続許可できる設定を追加。設定を反映するために再読み込みします。
1 2 3 4 | $ firewall-cmd --add-service=http --permanent success $ firewall-cmd --reload success |
ファイアウォールの設定が完了したら以下のコマンドで確認。
1 2 3 4 5 6 7 8 9 10 | $ firewall-cmd --list-all public (default, active) interfaces: enp0s3 sources: services: dhcpv6-client http ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: |
Apacheの設定ファイルの編集
Apacheの設定ファイルにFuelPHPプロジェクトが動くよう編集します。
FuelPHPプロジェクトはローカルにマウントするよう、あらかじめVagrantfileに記述してから起動する必要があるため、忘れていた方はこちらを参考に。
・Vagrantfile
1 2 | # "ホストPCのFuelPHPプロジェクト格納場所", "ゲストPCのFuelPHPプロジェクト格納場所" config.vm.synced_folder "C:/sample", "/sample" |
Apacheの設定ファイルの編集。
1 2 3 4 5 6 7 8 9 | $ vi /etc/httpd/conf/httpd.conf <VirtualHost *:80> DocumentRoot /sample/public #FuelPHPプロジェクトのパス指定 <Directory "/sample/public"> Order allow,deny Allow from all DirectoryIndex index.php </Directory> </VirtualHost> |
「client denied by server configuration」エラーと対処法
Apacheを再起動して動かしてみるも、エラー。tailコマンドでエラーログを確認する。
1 2 | $ tail -f /var/log/httpd/error_log AH01630: client denied by server configuration |
クライアント側がサーバの設定によって拒否されていることがわかった。
調べてみると、Apache2.4からディレクティブの書き方が変わったみたい。
ということで、
- Order allow,deny
- Allow from all
の部分を
- Require all granted
に書き換えました。
1 2 3 4 5 6 7 | <VirtualHost *:80> DocumentRoot /sample/public #FuelPHPプロジェクトのパス指定 <Directory "/sample/public"> Require all granted DirectoryIndex index.php </Directory> </VirtualHost> |
といことで改めて再起動してブラウザで開くと、index.phpの画面は表示された!
しかし、ホーム画面から遷移しようとすると404になる…。
「404」エラーと対処法
DocumentRootのDirectoryディレクティブ内にある「AllowOverride None」が原因だった模様。
「AllowOverride All」に設定することで、public以下で配置している .htaccessのmod_rewrite機能が動作するようになるとのこと。
1 2 3 4 5 6 7 8 | <VirtualHost *:80> DocumentRoot /sample/public <Directory "/sample/public"> AllowOverride All Require all granted DirectoryIndex index.php </Directory> </VirtualHost> |
1 | $ systemctl restart httpd.service |
再起動して無事に表示!「AllowOverride All」に書き換えて再起動すると、正常に画面遷移しました。
「httpd: Could not reliably determine the server’s fully qualified domain name」が表示された場合は
ちなみにエラーで「httpd: Could not reliably determine the server’s fully qualified domain name」と書かれている場合は、ServerNameの指定がされていないため、httpd.confに記載しましょう。