がらくたネット


suPHPのインストール

suPHPのインストール

suPHPのWebsuPHP
suPHPはPHPスクリプトをオーナー権限で動作させるためのApacheモジュール
ディレクティブで設定できるのがポイント

  • 0.7.2がリリース。(2013-05-20)
  • 0.7.1がリリース。(2009-03-14)
  • 0.7.0がリリース。(2008-12-25)、0.6.3と同様のインストール方法でOK。
  • php5とphp4の混在が可能(fastCGIで稼働しているから)
  • phpがオーナー権限なので生成ファイルなども同様にオーナーになるため削除などもFTPで可能
  • ディレクティブで設定可能
  • phpバイナリがCGI版でインストールされていること1)

条件

  • PHPはv5とv4がインストール済みとする
  • HTTPは2系
  • php5のCGI版バイナリが/usr/bin/php-cgiであること
  • php4のCGI版バイナリが/usr/local/bin/php4-cgiであること

0.7.2のインストール

  1. ソースをダウンロード、展開、コンパイル

# cd /usr/local/src
# mkdir suPHP
# cd suPHP
# wget http://www.suphp.org/download/suphp-0.7.2.tar.gz
# tar -zxvf suphp-0.7.2.tar.gz
# cd suphp-0.7.2
# aclocal && libtoolize --force && automake --add-missing && autoreconf
# ./configure --with-apr=/usr/bin/apr-1-config
# make install

あとは一緒。
aclocal~の行は0.7.2はconfig/install.sh等が存在していないので
作成する為のおまじないです
libtoolizeはおまじないしておかないと、make installした時に
Version mismatch errorってのが発生します

0.7.1のインストール

  1. ソースをダウンロード、展開、コンパイル
    # cd /usr/local/src
    # mkdir suPHP
    # cd suPHP
    # wget http://www.suphp.org/download/suphp-0.7.1.tar.gz
    # tar -zxvf suphp-0.7.1.tar.gz
    # cd suphp-0.7.1
    # ./configure --with-apr=/usr/bin/apr-1-config
    # make install
    
  2. 設定ファイルのコピー
     # cd doc
     # cp suphp.conf-example /usr/local/etc/suphp.conf
    
  3. 設定ファイルの修正、拡張子.phpで実行されるバイナリをphp-cgiに設定変更
    webserver_user=apache ←修正
    x-httpd-php="php:/usr/bin/php-cgi" ←修正
    x-httpd-php4="php:/usr/local/bin/php4-cgi" ←追加(php4用)
    

0.6.3のインストール

  1. 最新版をダウンロード、展開
     # cd /usr/local/src
     # wget http://www.suphp.org/download/suphp-0.6.3.tar.gz
     # tar zxvf suphp-0.6.3.tar.gz
  2. コンパイル、インストール。configureスクリプトはapr-configを自動で検索するがCentOSのApacheの場合は実行ファイル名が異なるため検索に失敗するため、明示的に指定する必要がある。apr-1-configはapr-develパッケージにある。デフォルトでPREFIXは/usr/local
     # cd suphp-0.6.3
     # ./configure --with-apr=/usr/bin/apr-1-config
     # make install
  3. 設定ファイルのコピー
     # cd doc
     # cp suphp.conf-example /usr/local/etc/suphp.conf
  4. 設定ファイルの修正、拡張子.phpで実行されるバイナリをphp-cgiに設定変更
    webserver_user=apache ←修正
    x-httpd-php="php:/usr/bin/php-cgi" ←修正
    x-httpd-php4="php:/usr/local/bin/php4-cgi" ←追加(php4用)

ディレクティブ設定

httpd.confへの設定

httpd.confまたはphp.confまたはsuphp.confを追加

### suPHP
LoadModule suphp_module modules/mod_suphp.so
suPHP_Engine On
DirectoryIndex index.php

VirtualHostへの設定

suPHPを有効にするVirtualHostに以下を設定

suPHP_Engine    On
<Directory "/var/www/vhosts/<VirtualHost名>/public_html">
        suPHP_UserGroup <ユーザ名> <グループ名>
        suPHP_AddHandler x-httpd-php
        AddHandler x-httpd-php .php
        suPHP_AddHandler x-httpd-php4
        AddHandler x-httpd-php4 .php4
</Directory>

その他の設定

/var/log/suphp.logにログが出力されるので適宜ローティションを実施する

サンプルlogrotateファイル
/var/log/suphp.log {
    missingok
    notifempty
    dateext
    create 0600 root apache
}

/usr/local/etc/suphp.conf内の各種設定、特に以下

  • umask=0077のところ、phpが作成したファイルをapacheユーザが見るためにはotherにreadがついている必要がある。そのため、umask値は0073が妥当かな。
  • min_uid=100のところ、CentOS系では一般ユーザは500番からのはずなので、500でも問題ないかも
  • min_gid=100のところ、ユーザをどうグルーピング化するかによって異なるので注意が必要

php設定変更

suPHPを利用している場合は、php.iniの設定変更が可能
この方法だとphp_admin_value, php_admin_flag, php_value, php_flagと制限されている項目が設定可能

必要な設定のみを記述したphp.iniを
/var/www/vhosts/e-garakuta.net/etc/
に保存する
 
.htaccessに以下を記載
suPHP_ConfigPath /var/www/vhosts/e-garakuta.net/etc/

Apacheの再起動等は不要

1)
php4のCGI版バイナリをソースでインストールする際には注意が必要、詳しくはPHP関連のページ参考