CetntOS7でapache2.4とphp-fpmを動かす
2016/02/09
php-fpmとは
FPM (FastCGI Process Manager) は PHP の FastCGI 実装のひとつで、 主に高負荷のサイトで有用な追加機能が用意されている。
FastCGIとは
FastCGIとは、CGIの高速化・負荷を軽減するための動作仕様の1つです。
通常、CGI/PHPなどのプログラムの実行時には、「プロセスの起動/終了」「プロセスの実行」といった処理がサーバー内で発生します。FastCGIでは、プロセス初回実行時に該当プロセスを一定時間サーバー内に保持することで、次回以降、実行時の「プロセスの起動/終了」を省略し、高速化や、プロセスの起動/終了に伴うCPUへの負荷を軽減することが可能です。
(XSERVERより引用)
構築環境
CentOS Linux release 7.1.1503 (Core)
Apache/2.4.6 (CentOS)
PHP 5.6.10 (cli)
MariaDB 5.5.41
Apache
apacheインストール
yum install httpd
httpdの起動と自動起動の設定
systemctl start httpd
systemctl enable httpd
レポジトリ追加
使用するのはremiのみですが、ついでにEPELとrpmforgeも追加します。
Repoforge追加
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
EPEL追加,Remi追加
yum install -y epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
PHP
phpインストール
yum install --enablerepo=remi-php56 php php-fpm php-mcrypt php-mbstring php-pdo php-mysql
php-fpm起動・自動起動
systemctl start php-fpm
systemctl enable php-fpm
php-fpm.confの編集
vi /etc/httpd/conf.d/php-fpm.conf
ProxyPassMatch ^(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/html/$1
DirectoryIndex /index.php index.php
^(.*\.php(/.*)?)$ → phpファイルをphp-fpmで表示。
127.0.0.1:9000 → サーバのIP。デフォルトでは9000ポートを使用
/var/www/html/$1 → ドキュメントルート
apache再起動
systemctl restart httpd.service
動作確認
php-fpmが動いてることを確認
ps ax | grep php-fpm
15451 ? Ss 0:01 php-fpm: master process (/etc/php-fpm.conf)
15452 ? S 0:09 php-fpm: pool www
15453 ? S 0:09 php-fpm: pool www
15454 ? S 0:09 php-fpm: pool www
phpinfo.phpの作成
cd ドキュメントルート
vi phpinfo.php
phpinfo.phpを確認
ブラウザで確認。
http://ip/phpinfo.php
Server APIがFPM/FastCGIならばphp-fpmで動いています。
php-fpmとphpの切り替え
設定ファイルを移動
php-fpmを使いたくない場合は、php-fpm.confを移動させます。
mv php-info.conf php-info.conf_orig
php-fpmの停止
systemctl stop php-fpm.service
phpinfo.phpを確認
以上です。