
Symfony2.8+Apacheのインストール~Webアクセス確認まで(パーミッショントラブル解消法など)
2017年4月21日久しぶりに、新規サイトを立ち上げようと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>