#概要
Symfony(php-framework)を使う機会があって、環境構築した際のメモ。
WEBサーバにnginxを採用しているのはWEB上でPHPとの連携が早いと話題になっていたので興味本位で採用w♫
#CentOS6.3
初期設定
・iptables停止
・ipv6停止
・selinux停止
・yum update
また、それ以外に不要なサービスも適宜停止した方がいい。
#####iptables + ipv6停止
/etc/init.d/iptables stop
/etc/init.d/ip6tables stop
chkconfig iptables off
chkconfig ip6tables off
cd /etc/modprobe.d/
vi disable_ipv6.conf
=(新規作成)=>
alias net-pf-10 off
options ipv6 disable=1
vi /etc/sysconfig/selinux
=(変更)=>
SELINUX=disabled
yum update
nginx
CentOS公式リポジトリでは nginx の最新版が入手できない為、ソースからコンパイルする人もいるようだが
remi という非公式リポジトリでは nginx の最新版が入手できるのでそちらでいきます。
yum でインストールすることでソフトの管理(インストール・アンインストール・依存パッケージのインストール等)が
容易になるので余程の理由がない限りはyumで問題無いと思います。
そもそもyumで入れてもnginxは爆速(abでの検証では爆速w)Apacheのような繊細なチューニングは不要な気がする。。。
nginx用 リポジトリ追加
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
nginx インストール
yum install nginx
nginx設定(/etc/nginx/nginx.conf)
以下、変更点のみ記載。
# CPUのコア数まで並列処理が可能(※コア数に揃えればイイはず)
worker_processes 2;
Symfony2利用時の設定例
(※動作可能な最低限の設定であり、セキュリティ等は考慮してないです)
#================================================
# Setting for Symfony2 Application
#================================================
server {
listen *:80;
server_name localhost;
root /home/Symfony/web;
index app_dev.php;
## Static Resources
location ~* \.(css|js|jpeg|jpg|gif|png|ico)$ {
expires 30d;
break;
}
## matches any query, since all queries begin with /
location / {
if (!-e $request_filename) {
rewrite ^/(.*)$ /app_dev.php?q=$1 last;
}
}
## pass php scripts to fastcgi
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index app_dev.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /home/Symfony/web$fastcgi_script_name;
}
## disable viewing .htaccess & .htpaswd
location ~ /\.ht {
deny all;
}
}
起動+自動起動設定
/etc/init.d/nginx start
chkconfig nginx on
php + php-fpm + MySQL + php-modules
### remi リポジトリ追加 ```Bash rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi cd /usr/local/src wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh remi-release-6.rpm epel-release-6-8.noarch.rpm
<br />
### PHP関連もろもろインストール
```Bash
yum --enablerepo=remi install ¥
mysql mysql-server ¥
php php-fpm ¥
php-devel php-cli php-xml php-mysql php-mbstring php-gd
※↑この他にもいろいろとPHP関連モジュールはあるようなので適宜インストール
その際にはremiリポジトリを参照するようにすると最新Ver.のモジュールがインストールしやすいらしい。
### httpd httpd-tools 不要なので削除 ```Bash yum remove httpd yum remove httpd-tools ```
php-fpm設定(/etc/php-fpm.d/www.conf)
php-fpm(FastCGI)はデフォで9000番ポートでLISTEN。
nginx => php-fpm 通信にはTCP・socketアリ。(※今回はTCP利用)
[処理の流れ]
client => nginx(port:80) => php-fpm(port:9000) => response
以下、変更点のみ記載しています。
# /etc/php-fpm.d/www.conf
user = nginx
group = nginx
起動
/etc/init.d/php-fpm start
/etc/init.d/mysqld start
自動起動
chkconfig php-fpm on
chkconfig mysqld on
ポートステータス
※不要情報は除外しています。
[root@centos6 ~]#netstat -tapon
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name Timer
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 1650/php-fpm off (0.00/0/0)
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1484/mysqld off (0.00/0/0)
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1663/nginx off (0.00/0/0)
# Symfony2 -------
インストール
インストールといっても簡単です。
ソースをダウンロードしてきて解凍するだけw。
####[注意点] 2012/11/29現在、Symfony2の公式サイトのチュートリアルはSymfony2.0ベースとなっており、Symfony2.1(最新版)ではチュートリアルの内容とズレることが随所にあるので、暫くはSymfony2.0系で進める方が無難。(※WEB上のネタも概ね2.0系のネタばかりなのでコケた時に解決するのも苦労するので・・・) **2012/11/29現在、Symfony2.0系は公式サイトからダウンロード可能**
nginxの設定次第ですが、以下のようなURLにブラウザでアクセスすればSymfonyのwelcomeページが表示されるはず。
http://[Server-IP]/
cd /usr/local/src
wget http://symfony.com/download?v=Symfony_Standard_Vendors_2.0.18.tgz
tar zxvf Symfony_Standard_Vendors_2.0.18.tgz -C /home
Symfonyについてはドキュメントが充実しているので公式サイトを確認したほうがいいです。
ドキュメントは日本語訳もありチュートリアルもありとっかかりやすい印象。