LINUX

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
SnapCrab_NoName_2015-6-14_23-6-11_No-00

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を確認

SnapCrab_NoName_2015-6-14_23-12-29_No-00

以上です。

-LINUX
-,