Symfony2.8+Apacheのインストール~Webアクセス確認まで(パーミッショントラブル解消法など)

久しぶりに、新規サイトを立ち上げようとSymfonyをいつもの感じでフフフーンと準備していたら、バッチが止まっている。
よく見ると、Symfony1.4バッチだった。

たまたま気付いたが、いい機会だと Symfony2.8の情報を少し。
一旦、ApacheやDBは既にあるものとして、Symfony2.8を新たにインストールからアクセス出来る状況にするまでをメモ。

・Symfonyインストーラ

$ sudo mkdir -p /usr/local/bin
$ sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony
$ sudo chmod a+x /usr/local/bin/symfony

・Symfonyインストール

$ symfony new <<...>> [version]

・composerをインストール

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

・composerを利用して、アプリを構築
実行後のウィザードで、app/config/parameters.ymlが更新される

$ composer create-project symfony/framework-standard-edition <<...>> [version]

・php.iniのTimezoneを確認

$ sudo vim /etc/php.ini

以下がなければ追記

[Date]
date.timezone = 'UTC'

・config.phpへアクセスしてみる
その前に、ACLへクライアントIPを追記しておく

$ vim web/config.php

適当な場所へアクセスするクライアントIPを追記。

if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
    '<<この辺りに>>',
    '127.0.0.1',
    '::1',
))) {
    header('HTTP/1.0 403 Forbidden');
    exit('This script is only accessible from localhost.');
}

※ついでに、web/app_dev.phpにも同じIPの追加をしておきましょ。

ここで、おそらくパーミッションエラーの警告が出る(画像の MAJOR PROBRELS」

原因は、apacheユーザで書けないだけ。
その後も色々と影響が出るので、以下で対応。

$ HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
$ sudo setfacl -R -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs
$ sudo setfacl -dR -m u:"$HTTPDUSER":rwX -m u:`whoami`:rwX app/cache app/logs

詳細は、この辺りを参照
http://symfony.com/doc/current/book/installation.html
やってることはシンプルで、apacheユーザと開発者ユーザに書き込み権限を付与。

コマンドを分離して確認するとわかるが、Tomcatが同時に動いていると意図通り動かない場合がある。
やってることは、$HTTPDUSERを利用する事なので、
1行目は、手動でセットしてしまえばよい。

・再度、config.phpへアクセス。
画像のような画面ならば、OK

・おまけで設定していた、web/app_dev.phpへアクセスしてみる。
画像のような、ステータスラインなど表示される。

・VirtualHostの設定(参考)

cat /etc/httpd/conf.d/vhost/vhost-symfony2.8.conf
<VirtualHost *:80>
    ServerName hoge.fuga.com
    #ServerAlias hoge2.fuga.com

    DocumentRoot /home/git.sites/hoge/web
    <Directory "/home/git.sites/hoge/web">
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog /var/log/httpd/symfony2.8.error_log
    CustomLog /var/log/httpd/symfony2.8.access_log combined
</VirtualHost>