レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

C5 C6 S6

apache の FastCGI(mod_fastcgi) + PHP-FPM で phpを動かしてみる(CentOS,ScientificLinux編)

2011年10月28日 2015年5月16日
apache php-fpm

今回は、apache + FastCGI(mod_fastcgi) + PHP-FPM でphpを動かしてみます。

以前の以下の記事が基本になります。

nginx + PHP-FPM でphpを動かしてみるのは、先の記事でもやりました。
今回は、apacheでPHP-FPMを使いたいと考えました。
それは、apache の FastCGI(mod_fcgid) で phpを動かしてみるの記事で、mod_fcgid を使ってFastCGIを使うもPHPのキャッシュ機能で人気のAPCがあまり機能しないのは、先の記事でも指摘しました。
その問題を解消するには、mod_fcgidでphp-cgiのプロセスを管理するのではなく、PHP-FPMにやらせることでAPCを有効活用できると考えてみたわけです。

そこで、
mod_fcgid + PHP-FPM という組み合わせを考えてみると、いずれもphp-cgiのプロセスを管理しようとするわけですから、うまくいきません。
そんなときは、mod_fcgidのかわりにmod_fastcgiを使うとうまくいきます。

ここでは、apache + FastCGI(mod_fastcgi) + PHP-FPM でphpを動かしてみます。

Debian,Ubuntu編は、
apache の FastCGI(mod_fastcgi) + PHP-FPM で phpを動かしてみる(Debian,Ubuntu編) を参照してください。

apacheのmod_fastcgiをインストールしましょう

apacheのFastCGIのためのモジュール mod_fastcgi をインストールします。

mod_fastcgiは、mod_fcgidと異なり、サードパーティのモジュールになります。 CentOS、Scientific LinuxなどのRedHat系のLinuxでは、正式なリポジトリからrpmは提供されていませんが、Repoforge(RPMforge)から提供されています。

そのため、ここでは、

の2つについて簡単に解説します。

Repoforge(RPMforge)からyumにてインストール方法

  1. Repoforge(RPMforge)のリポジトリを追加します。
    $ rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
    http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm を取得中
    警告: /var/tmp/rpm-tmp.TIaWS9: ヘッダ V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY
    準備中...                ########################################### [100%]
       1:rpmforge-release       ########################################### [100%]
    
    # yum更新作業を行っておきます。
    $ yum update --enablerepo=rpmforge
    ...
    ここでは、CentOS6 の 32bit版の例です。
    詳細は、Repoforge のリポジトリを追加する を参照してください。

    また、既にRepoforge(RPMforge)のリポジトリは追加・登録済の方は、次へ進んでください。

  2. yumを使ってmod_fastcgiをインストールします。
    $ yum install mod_fastcgi --enablerepo=rpmforge
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    epel/metalink                                            | 3.0 kB     00:00
     * base: ftp.iij.ad.jp
     * epel: ftp.iij.ad.jp
     * extras: ftp.iij.ad.jp
     * ius: ftp.neowiz.com
     * rpmforge: ftp.kddilabs.jp
     * updates: ftp.iij.ad.jp
    base                                                     | 3.7 kB     00:00
    extras                                                   | 3.5 kB     00:00
    ius                                                      | 2.2 kB     00:00
    ius/primary_db                                           | 100 kB     00:00
    rpmforge                                                 | 1.9 kB     00:00
    updates                                                  | 3.5 kB     00:00
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package mod_fastcgi.i686 0:2.4.6-2.el6.rf will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package             Arch         Version                Repository        Size
    ================================================================================
    Installing:
     mod_fastcgi         i686         2.4.6-2.el6.rf         rpmforge         112 k
    
    Transaction Summary
    ================================================================================
    Install       1 Package(s)
    
    Total download size: 112 k
    Installed size: 326 k
    Is this ok [y/N]: y
    Downloading Packages:
    mod_fastcgi-2.4.6-2.el6.rf.i686.rpm                      | 112 kB     00:00
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Installing : mod_fastcgi-2.4.6-2.el6.rf.i686                              1/1
      Verifying  : mod_fastcgi-2.4.6-2.el6.rf.i686                              1/1
    
    Installed:
      mod_fastcgi.i686 0:2.4.6-2.el6.rf
    
    Complete!

    これだけです。

ソースコードからmakeにてインストール方法

  1. 必要なパッケージがインストールされているか確認します。
    $ rpm -qa|grep httpd
    httpd-devel-2.2.15-9.sl6.3.i686
    httpd-2.2.15-9.sl6.3.i686
    
    $ rpm -qa|grep gcc
    gcc-4.4.5-6.el6.i686
    gcc-c++-4.4.5-6.el6.i686
    libgcc-4.4.5-6.el6.i686
    
    $ 

    上記のようにmakeにて必要なパッケージがインストールされているか確認してください。

    httpd(apache)関連であれば、
    ・httpd
    ・httpd-devel
    が必要です。

    gcc関連であれば、
    ・gcc
    ・gcc-c++
    ・libgcc
    が必要です。

  2. mod_fastcgi のソースコードをダウンロードします。
    $ wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
    ...

    上記のURLからダウンロードします。
    mod_fastcgi-current.tar.gzの名前が、最新のカレントバージョンのようです。

  3. mod_fastcgi のソースコードを展開します。
    1
    2
    3
    4
    5
    6
    7
    
    $ cp mod_fastcgi-current.tar.gz /usr/local/src/.
    $ cd /usr/local/src
    [src]$ tar xvzf mod_fastcgi-current.tar.gz
           ...
    
    [src]$ cd mod_fastcgi-2.4.6/
    [mod_fastcgi-2.4.6]$ cp Makefile.AP2 Makefile
    • 1 行目: ダウンロードしたtarファイルをコピーします。ここでは、/usr/local/src 一般的に個別のソースファイルの置き場なので、そちらにおいています。
    • 3 行目: ソースファイルを /usr/local/src の直下に展開します。
    • 6 行目: mod_fastcgi-2.4.6/ というディレクトリ名は、mod_fastcgiのバージョンによって異なります。
    • 7 行目: makeファイルのサンプル(Makefile.AP2)をMakefileとして使います。
  4. mod_fastcgi をmakeインストールします。

    [ 64bit OSの場合 ]

    [mod_fastcgi-2.4.6]$ make top_dir=/usr/lib64/httpd

    [ 32bit OSの場合 ]

    [mod_fastcgi-2.4.6]$ make top_dir=/usr/lib/httpd

    展開するディレクトリのtop位置を指定し、make実行します。

    続けて、インストールします。

    [ 64bit OSの場合 ]

    [mod_fastcgi-2.4.6]$ make install top_dir=/usr/lib64/httpd

    [ 32bit OSの場合 ]

    [mod_fastcgi-2.4.6]$ make install top_dir=/usr/lib/httpd

    同じように展開するディレクトリのtop位置を指定し、make実行します。

    ここまで、特にエラーが表示されなければモジュール mod_fastcgi は作成されているはずです。

    以下のようにmod_fastcgi.soが存在することを確認しておきます。

    [ 64bit OSの場合 ]

    $ ls -l /usr/lib64/httpd/modules/mod_fastcgi.so
    -rwxr-xr-x 1 root root 206103 10月 27 15:26 2011 /usr/lib64/httpd/modules/mod_fastcgi.so
    $ 

    [ 32bit OSの場合 ]

    $ ls -l /usr/lib/httpd/modules/mod_fastcgi.so
    -rwxr-xr-x 1 root root 206103 10月 27 15:26 2011 /usr/lib/httpd/modules/mod_fastcgi.so
    $ 

apacheのmod_fastcgiの設定を行いましょう

先の手順で、モジュール mod_fastcgiは作成されましたので、ここでは、その設定を行います。

ここでは、mod_fastcgiの設定ファイルは、mod_fcgidの設定時にあわせて /etc/httpd/conf.d/fastcgi.conf で作成します。
(Repoforge(RPMforge)からインストールした際は、デフォルトのファイルが同じ名前で既に存在します。)

/etc/httpd/conf.d/の直下のファイルは、httpd(apache)が起動するときに自動的に読み込まれます。

/etc/httpd/conf.d/fastcgi.confの編集イメージ

1
2
3
4
5
6
7
LoadModule fastcgi_module modules/mod_fastcgi.so
<IfModule mod_fastcgi.c>
  ScriptAlias /fcgi-bin/ /var/www/fcgi-bin/
  FastCGIExternalServer /var/www/fcgi-bin/php-fpm -host 127.0.0.1:9000
  AddHandler php-fastcgi .php
  Action php-fastcgi /fcgi-bin/php-fpm
</IfModule>
  • 1 行目 : モジュールの読み込みを行っています。
  • 3 行目 : ディレクトリの別名定義です。/var/www/fcgi-bin/ → /fcgi-bin/ として割り当てています。
  • 4 行目 : FastCGI のサーバー設定を行っています。
    IPアドレス : 127.0.0.1 の tcp ポート番号 : 9000 へ /var/www/fcgi-bin/php-cgi を使って処理するように依頼します。
  • 5 – 6 行目 : phpファイルの動作をCGIで実行するように設定を行っています。
    ( 参照 : apache で phpのモジュール版とcgi版の切り替えを行ってみる )
ホスト名、TCPポート番号は、PHP-FPMの設定にあわせる必要があります。
/var/www/fcgi-bin/php-fpm というファイル自体は、存在する必要はありません。 ただし、パス(ディレクトリ)は存在しないと動作しません。さらに、Actionで定義しているCGIパスと同じディレクトリ、同じファイル名を指すように設定します。
/etc/httpd/conf.d/php.conf は、PHPモジュール, PHP-CGIを使う場合の設定がなされていると思います。
ここでは、PHP-FPM でPHPプロセスを一括管理しますので、ここでは不要になります。削除するか、別のディレクトリへ移動しておきます。

apacheの設定を行いましょう

apacheの設定は、cgiの設定と同じです。
( 参照 : apache で phpのモジュール版とcgi版の切り替えを行ってみる )

/etc/httpd/conf/httpd.confの編集イメージ
以下は、例としてwww.example.comのサイト定義です。

<VirtualHost *:80>
	ServerName www.example.com
	DocumentRoot "/home/example"
	ServerAlias www.example.com
	<Directory "/home/example">
		Options FollowSymLinks Includes ExecCGI
		AllowOverride None
		Order allow,deny
		Allow from all
	</Directory>
</VirtualHost>

ここで重要なのは、

Options FollowSymLinks Includes ExecCGI

を定義している点です。
もちろん、ALL指定でもOKですけど、最低限の設定を行いたい場合は、+ExecCGIなどの指定がよく使われるパターンです。

PHP-FPMをインストールしましょう

PHP-FPMをインストールしていない場合は、まずは、インストールしましょう。ここでは、PHP5.3 系のPHP-FPM をインストールしてみます。

PHP5.3 系以外は、以下のを参照してください。
  1. PHP5.3系のあるリポジトリをインストールします。

    以前の記事で
    あえてphp5.2系をインストールする(CentOS 5,CentOS 6,Scientific Linux 6)
    あえてmysql5.1系をインストールする
    でも同じ作業を行いました。既に同じリポジトリをインストールされている場合は、以下の作業は一切不要です!!

    $ wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/ius-release-1.0-8.ius.el5.noarch.rpm
    $ wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/epel-release-5-4.noarch.rpm
    $ rpm -Uvh *-release*rpm
      Preparing...                ########################################### [100%]
         1:epel-release           ########################################### [ 50%]
         2:ius-release            ########################################### [100%]

    64bit版は、上記のwgetで指定しているURLのi386x86_64として同じ操作を行います。
    バージョン6 系は、上記のwgetで指定しているURLの56として同じ操作を行います。

    また、ファイル名は、
    • ius-release-x-x.noarch.rpm
    • epel-release-x-x.noarch.rpm
    と、x-xは、バージョン番号に相当しますので、必ず、最新のファイル名を以下のサイトで確認しましょう。
    ※32bit版と64bit版では、ファイル名が異なることがあります。
    (以下のサイトでファイルの一覧表示が確認できます。)

    [Version 5 ]
    32bit版:http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/i386/
    64bit版:http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/

    [Version 6 ]
    32bit版:http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/i386/
    64bit版:http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/

    一つ一つ確実にインストールしたいなら、以下の順番で行います。
    CentOSのバージョンによっては、以下のような警告がでることがあります。
    特にこの警告は、致命的な問題ではないので、先へ進みましょう。

    $ rpm -Uvh epel-release-5-4.noarch.rpm
    警告: epel-release-5-4.noarch.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 9cd4953f
    準備中...                ########################################### [100%]
       1:epel-release           ########################################### [100%]
    $ rpm -Uvh ius-release-1.0-8.ius.el5.noarch.rpm
    警告: ius-release-1.0-8.ius.el5.noarch.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 9cd4953f
    準備中...                ########################################### [100%]
       1:ius-release            ########################################### [100%]

  2. 現在、インストール済のphpをアンインストールします。
    1. 現在のインストール済phpパッケージを確認する。
      $ rpm -qa | grep php
      php-5.1.6-27.el5
      php-common-5.1.6-27.el5
      php-ldap-5.1.6-27.el5
      php-cli-5.1.6-27.el5
    2. インストール済phpパッケージをすべて削除する。
      $ yum erase php-cli php-common php php-ldap php
      
      yum remove php-cli php-common php php-ldap php
      Loaded plugins: fastestmirror
      Setting up Remove Process
      Resolving Dependencies
      --> Running transaction check
      ---> Package php.x86_64 0:5.1.6-27.el5 set to be erased
      ---> Package php-cli.x86_64 0:5.1.6-27.el5 set to be erased
      ---> Package php-common.x86_64 0:5.1.6-27.el5 set to be erased
      ---> Package php-ldap.x86_64 0:5.1.6-27.el5 set to be erased
      --> Finished Dependency Resolution
      
      Dependencies Resolved
      
      ==========================================================================================
       Package              Arch             Version                  Repository           Size
      ==========================================================================================
      Removing:
       php                  x86_64           5.1.6-27.el5             installed           6.2 M
       php-cli              x86_64           5.1.6-27.el5             installed           5.3 M
       php-common           x86_64           5.1.6-27.el5             installed           397 k
       php-ldap             x86_64           5.1.6-27.el5             installed            49 k
      
      Transaction Summary
      ==========================================================================================
      Remove        4 Package(s)
      Reinstall     0 Package(s)
      Downgrade     0 Package(s)
      
      Is this ok [y/N]: y
      Downloading Packages:
      Running rpm_check_debug
      Running Transaction Test
      Finished Transaction Test
      Transaction Test Succeeded
      Running Transaction
        Erasing        : php-cli                                                            1/4
        Erasing        : php-common                                                         2/4
        Erasing        : php                                                                3/4
        Erasing        : php-ldap                                                           4/4
      
      Removed:
        php.x86_64 0:5.1.6-27.el5                    php-cli.x86_64 0:5.1.6-27.el5
        php-common.x86_64 0:5.1.6-27.el5             php-ldap.x86_64 0:5.1.6-27.el5
      
      Complete!

  3. php5.3系をインストールする。
    $ yum -y install php53u-cli php53u-pdo php53u-mysql php53u-common php53u php53u-cgi php53u-fpm php53u-devel php53u-gd php53u-mbstring php53u-odbc php53u-pear php53u-snmp php53u-bcmath php53u-xmlrpc php53u-tidy php53u-xml php53u-mssql php53u-soap php53u-pgsql
    epel/metalink                                                      | 6.3 kB     00:00
    epel                                                               | 4.3 kB     00:00
    epel/primary_db                                                    | 3.4 MB     00:01
    ius                                                                | 2.2 kB     00:00
    ius/primary_db                                                     |  43 kB     00:00
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package php53u.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-bcmath.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-cli.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-common.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-devel.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-fpm.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-gd.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-mbstring.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-mssql.i686 0:5.3.8-2.ius.el6 will be installed
    --> Processing Dependency: freetds >= 0.64 for package: php53u-mssql-5.3.8-2.ius.el6.i686
    --> Processing Dependency: libsybdb.so.5 for package: php53u-mssql-5.3.8-2.ius.el6.i686
    ---> Package php53u-mysql.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-odbc.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-pdo.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-pear.noarch 1:1.9.4-3.ius.el6 will be installed
    ---> Package php53u-pgsql.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-snmp.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-soap.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-tidy.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-xml.i686 0:5.3.8-2.ius.el6 will be installed
    ---> Package php53u-xmlrpc.i686 0:5.3.8-2.ius.el6 will be installed
    --> Running transaction check
    ---> Package freetds.i686 0:0.82-6.el6 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ==========================================================================================
     Package                  Arch            Version                     Repository     Size
    ==========================================================================================
    Installing:
     php53u                   i686            5.3.8-2.ius.el6             ius           1.5 M
     php53u-bcmath            i686            5.3.8-2.ius.el6             ius            32 k
     php53u-cli               i686            5.3.8-2.ius.el6             ius           2.9 M
     php53u-common            i686            5.3.8-2.ius.el6             ius           520 k
     php53u-devel             i686            5.3.8-2.ius.el6             ius           612 k
     php53u-fpm               i686            5.3.8-2.ius.el6             ius           1.5 M
     php53u-gd                i686            5.3.8-2.ius.el6             ius           106 k
     php53u-mbstring          i686            5.3.8-2.ius.el6             ius           455 k
     php53u-mssql             i686            5.3.8-2.ius.el6             ius            39 k
     php53u-mysql             i686            5.3.8-2.ius.el6             ius            77 k
     php53u-odbc              i686            5.3.8-2.ius.el6             ius            48 k
     php53u-pdo               i686            5.3.8-2.ius.el6             ius            61 k
     php53u-pear              noarch          1:1.9.4-3.ius.el6           ius           384 k
     php53u-pgsql             i686            5.3.8-2.ius.el6             ius            67 k
     php53u-snmp              i686            5.3.8-2.ius.el6             ius            28 k
     php53u-soap              i686            5.3.8-2.ius.el6             ius           139 k
     php53u-tidy              i686            5.3.8-2.ius.el6             ius            33 k
     php53u-xml               i686            5.3.8-2.ius.el6             ius            98 k
     php53u-xmlrpc            i686            5.3.8-2.ius.el6             ius            51 k
    Installing for dependencies:
     freetds                  i686            0.82-6.el6                  epel          546 k
    
    Transaction Summary
    ==========================================================================================
    Install      20 Package(s)
    
    Total download size: 9.1 M
    Installed size: 31 M
    Downloading Packages:
    (1/20): freetds-0.82-6.el6.i686.rpm                                | 546 kB     00:00
    (2/20): php53u-5.3.8-2.ius.el6.i686.rpm                            | 1.5 MB     00:10
    (3/20): php53u-bcmath-5.3.8-2.ius.el6.i686.rpm                     |  32 kB     00:00
    (4/20): php53u-cli-5.3.8-2.ius.el6.i686.rpm                        | 2.9 MB     00:10
    (5/20): php53u-common-5.3.8-2.ius.el6.i686.rpm                     | 520 kB     00:05
    (6/20): php53u-devel-5.3.8-2.ius.el6.i686.rpm                      | 612 kB     00:04
    (7/20): php53u-fpm-5.3.8-2.ius.el6.i686.rpm                        | 1.5 MB     00:09
    (8/20): php53u-gd-5.3.8-2.ius.el6.i686.rpm                         | 106 kB     00:01
    (9/20): php53u-mbstring-5.3.8-2.ius.el6.i686.rpm                   | 455 kB     00:04
    (10/20): php53u-mssql-5.3.8-2.ius.el6.i686.rpm                     |  39 kB     00:00
    (11/20): php53u-mysql-5.3.8-2.ius.el6.i686.rpm                     |  77 kB     00:00
    (12/20): php53u-odbc-5.3.8-2.ius.el6.i686.rpm                      |  48 kB     00:00
    (13/20): php53u-pdo-5.3.8-2.ius.el6.i686.rpm                       |  61 kB     00:00
    (14/20): php53u-pear-1.9.4-3.ius.el6.noarch.rpm                    | 384 kB     00:03
    (15/20): php53u-pgsql-5.3.8-2.ius.el6.i686.rpm                     |  67 kB     00:01
    (16/20): php53u-snmp-5.3.8-2.ius.el6.i686.rpm                      |  28 kB     00:00
    (17/20): php53u-soap-5.3.8-2.ius.el6.i686.rpm                      | 139 kB     00:02
    (18/20): php53u-tidy-5.3.8-2.ius.el6.i686.rpm                      |  33 kB     00:00
    (19/20): php53u-xml-5.3.8-2.ius.el6.i686.rpm                       |  98 kB     00:01
    (20/20): php53u-xmlrpc-5.3.8-2.ius.el6.i686.rpm                    |  51 kB     00:00
    ------------------------------------------------------------------------------------------
    Total                                                     121 kB/s | 9.1 MB     01:17
    警告: rpmts_HdrFromFdno: ヘッダ V4 DSA/SHA1 Signature, key ID 9cd4953f: NOKEY
    Retrieving key from file:///etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY
    Importing GPG key 0x9CD4953F:
     Userid : IUS Community Project <coredev@iuscommunity.org>
     Package: ius-release-1.0-8.ius.el6.noarch (installed)
     From   : /etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY
    warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
    Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
    Importing GPG key 0x0608B895:
     Userid : EPEL (6) <epel@fedoraproject.org>
     Package: epel-release-6-5.noarch (installed)
     From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
    Running rpm_check_debug
    Running Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Warning: RPMDB altered outside of yum.
      Installing : php53u-common-5.3.8-2.ius.el6.i686                                    1/20
      Installing : php53u-pdo-5.3.8-2.ius.el6.i686                                       2/20
      Installing : php53u-cli-5.3.8-2.ius.el6.i686                                       3/20
      Installing : php53u-5.3.8-2.ius.el6.i686                                           4/20
      Installing : freetds-0.82-6.el6.i686                                               5/20
      Installing : php53u-devel-5.3.8-2.ius.el6.i686                                     6/20
      Installing : 1:php53u-pear-1.9.4-3.ius.el6.noarch                                  7/20
      Installing : php53u-mssql-5.3.8-2.ius.el6.i686                                     8/20
      Installing : php53u-fpm-5.3.8-2.ius.el6.i686                                       9/20
      Installing : php53u-mysql-5.3.8-2.ius.el6.i686                                    10/20
      Installing : php53u-odbc-5.3.8-2.ius.el6.i686                                     11/20
      Installing : php53u-pgsql-5.3.8-2.ius.el6.i686                                    12/20
      Installing : php53u-soap-5.3.8-2.ius.el6.i686                                     13/20
      Installing : php53u-xml-5.3.8-2.ius.el6.i686                                      14/20
      Installing : php53u-gd-5.3.8-2.ius.el6.i686                                       15/20
      Installing : php53u-xmlrpc-5.3.8-2.ius.el6.i686                                   16/20
      Installing : php53u-tidy-5.3.8-2.ius.el6.i686                                     17/20
      Installing : php53u-bcmath-5.3.8-2.ius.el6.i686                                   18/20
      Installing : php53u-snmp-5.3.8-2.ius.el6.i686                                     19/20
      Installing : php53u-mbstring-5.3.8-2.ius.el6.i686                                 20/20
    
    Installed:
      php53u.i686 0:5.3.8-2.ius.el6              php53u-bcmath.i686 0:5.3.8-2.ius.el6
      php53u-cli.i686 0:5.3.8-2.ius.el6          php53u-common.i686 0:5.3.8-2.ius.el6
      php53u-devel.i686 0:5.3.8-2.ius.el6        php53u-fpm.i686 0:5.3.8-2.ius.el6
      php53u-gd.i686 0:5.3.8-2.ius.el6           php53u-mbstring.i686 0:5.3.8-2.ius.el6
      php53u-mssql.i686 0:5.3.8-2.ius.el6        php53u-mysql.i686 0:5.3.8-2.ius.el6
      php53u-odbc.i686 0:5.3.8-2.ius.el6         php53u-pdo.i686 0:5.3.8-2.ius.el6
      php53u-pear.noarch 1:1.9.4-3.ius.el6       php53u-pgsql.i686 0:5.3.8-2.ius.el6
      php53u-snmp.i686 0:5.3.8-2.ius.el6         php53u-soap.i686 0:5.3.8-2.ius.el6
      php53u-tidy.i686 0:5.3.8-2.ius.el6         php53u-xml.i686 0:5.3.8-2.ius.el6
      php53u-xmlrpc.i686 0:5.3.8-2.ius.el6
    
    Dependency Installed:
      freetds.i686 0:0.82-6.el6
    
    Complete!

    ここでは、必要そうなパッケージを全てインストールしています。
    不必要なパッケージがあれば、削除しましょう。

  4. 最後にバージョンチェック
    $ php -v
    PHP 5.3.8 (cli) (built: Oct 21 2011 12:21:29)
    Copyright (c) 1997-2011 The PHP Group
    Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

    PHP 5.3.xx と出力されれば、OKですね。

PHP-FPMの設定を行いましょう

先の手順でインストールしたPHP-FPMの設定を行います。
PHP5.3 系のPHP-FPM をインストールした場合、設定ファイルは、ini形式になります。
デフォルトのファイルは、インストールした時に同時にインストールされます。

編集が必要な設定ファイルは、/etc/php-fpm.d/www.conf になります。

/etc/php-fpm.d/www.conf の編集イメージ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
; Start a new pool named 'www'.
[www]

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000

; Set listen(2) backlog. A value of '-1' means unlimited.
; Default Value: -1
;listen.backlog = -1

; List of ipv4 addresses of FastCGI clients which are allowed to connect.
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
; must be separated by a comma. If this value is left blank, connections will be
; accepted from any ip address.
; Default Value: any
listen.allowed_clients = 127.0.0.1

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions.
; Default Values: user and group are set as the running user
;                 mode is set to 0666
;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0666

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache Choosed to be able to access some dir as httpd
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives:
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
; Note: This value is mandatory.
;pm = dynamic
pm = static

; The number of child processes to be created when pm is set to 'static' and the
; maximum number of child processes to be created when pm is set to 'dynamic'.
; This value sets the limit on the number of simultaneous requests that will be
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
; CGI.
; Note: Used when pm is set to either 'static' or 'dynamic'
; Note: This value is mandatory.
;pm.max_children = 50
pm.max_children = 3

; The number of child processes created on startup.
; Note: Used only when pm is set to 'dynamic'
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
pm.start_servers = 5

; The desired minimum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.min_spare_servers = 5

; The desired maximum number of idle server processes.
; Note: Used only when pm is set to 'dynamic'
; Note: Mandatory when pm is set to 'dynamic'
pm.max_spare_servers = 35

; The number of requests each child process should execute before respawning.
; This can be useful to work around memory leaks in 3rd party libraries. For
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
; Default Value: 0
;pm.max_requests = 500
pm.max_requests = 5

; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. By default, the status page shows the following
; information:
;   accepted conn    - the number of request accepted by the pool;
;   pool             - the name of the pool;
;   process manager  - static or dynamic;
;   idle processes   - the number of idle processes;
;   active processes - the number of active processes;
;   total processes  - the number of idle + active processes.
; The values of 'idle processes', 'active processes' and 'total processes' are
; updated each second. The value of 'accepted conn' is updated in real time.
; Example output:
;   accepted conn:   12073
;   pool:             www
;   process manager:  static
;   idle processes:   35
;   active processes: 65
;   total processes:  100
; By default the status page output is formatted as text/plain. Passing either
; 'html' or 'json' as a query string will return the corresponding output
; syntax. Example:
;   http://www.foo.bar/status
;   http://www.foo.bar/status?json
;   http://www.foo.bar/status?html
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
;pm.status_path = /status

; The ping URI to call the monitoring page of FPM. If this value is not set, no
; URI will be recognized as a ping page. This could be used to test from outside
; that FPM is alive and responding, or to
; - create a graph of FPM availability (rrd or such);
; - remove a server from a group if it is not responding (load balancing);
; - trigger alerts for the operating team (24/7).
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
;ping.path = /ping

; This directive may be used to customize the response of a ping request. The
; response is formatted as text/plain with a 200 response code.
; Default Value: pong
;ping.response = pong

; The timeout for serving a single request after which the worker process will
; be killed. This option should be used when the 'max_execution_time' ini option
; does not stop script execution for some reason. A value of '0' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_terminate_timeout = 0

; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
; Default Value: 0
;request_slowlog_timeout = 0

; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
slowlog = /var/log/php-fpm/www-slow.log

; Set open file descriptor rlimit.
; Default Value: system defined value
;rlimit_files = 1024

; Set max core size rlimit.
; Possible Values: 'unlimited' or an integer greater or equal to 0
; Default Value: system defined value
;rlimit_core = 0

; Chroot to this directory at the start. This value must be defined as an
; absolute path. When this value is not set, chroot is not used.
; Note: chrooting is a great security feature and should be used whenever
;       possible. However, all PHP paths will be relative to the chroot
;       (error_log, sessions.save_path, ...).
; Default Value: not set
;chroot =

; Chdir to this directory at the start. This value must be an absolute path.
; Default Value: current directory or / when chroot
;chdir = /var/www

; Redirect worker stdout and stderr into main error log. If not set, stdout and
; stderr will be redirected to /dev/null according to FastCGI specs.
; Default Value: no
;catch_workers_output = yes

; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
; the current environment.
; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp

; Additional php.ini defines, specific to this pool of workers. These settings
; overwrite the values previously defined in the php.ini. The directives are the
; same as the PHP SAPI:
;   php_value/php_flag             - you can set classic ini defines which can
;                                    be overwritten from PHP call 'ini_set'.
;   php_admin_value/php_admin_flag - these directives won't be overwritten by
;                                     PHP call 'ini_set'
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.

; Defining 'extension' will load the corresponding shared extension from
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
; overwrite previously defined php.ini values, but will append the new value
; instead.

; Default Value: nothing is defined by default except the values in php.ini and
;                specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M

確認・編集すべき項目は、赤文字の箇所になります。


listen = 127.0.0.1:9000
mod_fastcgi の FastCGIExternalServer 設定 で 指定しているホスト名、TCPポート番号と同じでなければなりません。

listen.allowed_clients = 127.0.0.1
アクセスを許可するクライアントホスト名になります。ここではlocalhostのみです。

user = apache
group = apache
PHP-FPM プロセスのユーザ名、グループ名を指定します。
pm = static
PHP-FPM プロセス管理は、固定(static) とします。メモリ管理しやすくなります。dynamic を指定した場合、動的となりアクセスが多くなるとメモリ消費も多くなります。
pm.max_children = 3
PHP-FPM プロセスの最大子プロセス数です。ここではテスト用として少なく3を指定しています。
pm.start_servers = 5
PHP-FPM プロセスの最初に立ち上げる子プロセス数です。ここではテスト用として5を指定しています。 pm.max_childrenより大きい値を指定するのは間違っています。ここではあえて間違いを指定しています。 pm.max_childrenより大きい値を指定した場合は、pm.max_childrenの数値が優先されます。
pm.max_requests = 5
PHP-FPM プロセスの子プロセス数が、最大処理するプロセス数です。ここではテスト用として5を指定しています。 通常は、500以上を指定しますが、テストとしてプロセス番号がちゃんと切り替わるか確認するために小さい値を指定しています。運用時は、500以上の値を指定しましょう。

PHP-FPM, apacheを起動して確認しましょう

いよいよ起動、確認です。

$ /etc/init.d/php-fpm start
php-fpm を起動中:                                          [  OK  ]
$ /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

必ず、<?php echo phpinfo(); ?> でphpの環境を表示して、PHP-FPMが動作していることを確認しましょう。

PHP-FPM/CGI版
Server API  : FPM/FastCGI
PHP-FPM/FastCGI

PHP-FPM/FastCGI

こんな感じで有効になっていればOKです。

以下のようなエラーが発生することがあります。
[Fri Mar 29 11:51:20 2013] [error] [client 192.168.1.33] (13)Permission denied: FastCGI: failed to connect to server "/var/www/fcgi-bin/php-fpm": connect() failed
このエラーが発生するとブラウザ画面には、 500 Internal Server Error が出力されます。
この問題の原因は、SELinuxが影響していることがほとんどです。
$ getenforce
Enforcing
この状態だと、先の 500 Internal Server Error が出力されます。
この場合、以下のようにSELinuxを停止します。
$ setenforce 0
$ getenforce
Permissive
さらに、システム再起動しても停止させるためには、以下のファイルを編集しておきます。
[/etc/sysconfig/selinux]
...
# 有効となっている箇所をコメントアウトします。
#SELINUX=enforcing
# システムデフォルトの動作を無効にします。
SELINUX=disabled
...
これで、再起動しても無効となります。

いかがだったでしょうか?

ちょっと面倒といえば面倒ですが、実際の作業からすれば、それほど難しいものでもありませんから、すんなりやれることと思います。

ここではAPCの設定まで説明していませんが、APCの設定は、php および APC の設定を行うを参照してください。
PHP-FPM + APC でメモリの節約、高速化を図ることができます。ただ、nginxのリバースプロキシによるキャッシュには、さすがに負けますが、さくらのVPSさくらのVPSなどメモリが限られたサーバーでapacheを使いたい場合には、1つの手段だと思います。お試しあれ。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

Nginxを公式サイトから最新版をインストールする(CentOS/ScientificLinux編)

以前に、Nginxの最新版ソースから バイナリパッケージ(rpm)を作成し、インストールするで自力で最新版のrpmを作成してインストールを行って ...

Nginx でPHPを動かす(php-fpmをインストールする) [PHP5.3以降の場合]

以前に、Nginx でPHPを動かす(php-fpmをバイナリパッケージ(rpm)を作成し、インストールする) [PHP5.2系の場合] であえ ...

php5.3系の最新版をインストールする

CentOS 5 の場合、yumを使って デフォルトでインストールされるのは、PHP5.1系です。 また、CentOS 6 Scie ...

apache の FastCGI(mod_fastcgi) + PHP-FPM で phpを動かしてみる(Debian,Ubuntu編)

今回は、apache + FastCGI(mod_fastcgi) + PHP-FPM でphpを動かしてみます。 apacheをインスト ...

php5.4系の最新版をインストールする

CentOS 5 の場合、yumを使って デフォルトでインストールされるのは、PHP5.1系です。 また、CentOS 6 Scie ...


3 件 コメントがあります。 コメントを投稿する
  1. くりくり
    2014年6月2日, 10:31 AM

    apacheを高速化させようmod_fcdidとapcで失敗。ならばmod_fastcgiとapcをとみましたら、

    >nginxのリバースプロキシによるキャッシュには、さすがに負けます

    この一文を発見!!
    自分のVPSはnginx+php-fpmでwordpressを動かしています。
    さっそくリバースプロキシーの構築と検証。
    土日夜遅くまでやりました。
    アパッチベンチマークを試すと
    単純な比較はできませんが、年間何十万も払ってるサーバーより、
    月2000円の方がはやい・・・。

  2. あああああああ
    2014年10月18日, 9:02 PM

    php5.3系のパッケージが無い場合は用意しないとだめなようだ アンインストールしてから気づいた…

  3. あああああああ
    2014年10月18日, 11:29 PM

    リポジトリもちゃんと手順にしたがって…
    うわああもうだめだあ


コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.3658 [s]