SuPHPをインストールした時の備忘録です。

SuPHP
http://www.suphp.org/Home.html

SuPHPとは
http://www.dabits.net/archives/5
※上記URLの「SuPHPとは」に書かれています。

簡単に言うと、SuPHPを導入すれば対象(設定された)のユーザでスクリプトを実行してくれます。

例えば、サイト毎でスクリプトを実行するユーザを分けたい場合などに使用するとセキュリティが向上します。
(デフォルトだとapacheが全てを実行しちゃいますしね)

使用OS
CentOS 5.5 64bit

必要なパッケージ
httpd-devel-2.2.3-43.el5.centos.3
httpd-2.2.3-43.el5.centos.3
apr-devel-1.2.7-11.el5_5.3
php-5.1.6-27.el5_5.3

使用SuPHP
suphp-0.7.1

SuPHPはリポジトリを登録すると「yum」からでもインストール出来るそうですが、ここではソースからインストールします。

ちなみに、ここではPHPはCGIモードで動作させます。

(1)必要なパッケージのインストール

[root@example ~]# yum -y install php httpd httpd-devel apr-devel
※ここでは、最低限必要なパッケージをインストールしています。

(2)SuPHPのダウンロード
[root@example ~]# wget http://www.suphp.org/download/suphp-0.7.1.tar.gz
※最新版は「SuPHP」サイトを確認してください。

(3)ダウンロードしたSuPHPの解凍
[root@example ~]# tar zxvf suphp-0.7.1.tar.gz

(4)SuPHPのインストール
[root@example ~]# cd suphp-0.7.1
[root@example suphp-0.7.1]# ./configure --prefix=/usr/local/suphp --with-apr=/usr/bin/apr-1-config
[root@example suphp-0.7.1]# make && make check
[root@example suphp-0.7.1]# make install

(5)SuPHPの設定ファイルを保存
[root@example suphp-0.7.1]# mkdir /usr/local/suphp/etc
[root@example suphp-0.7.1]# cp doc/suphp.conf-example /usr/local/suphp/etc/suphp.conf

(6)SuPHPの設定ファイルを編集
[root@example ~]# vi /usr/local/suphp/etc/suphp.conf
logfile=/var/log/suphp.log
↓# 変更(任意)
logfile=/var/log/httpd/suphp.log

webserver_user=wwwrun
↓# 変更
webserver_user=apache

docroot=/var/www:${HOME}/public_html
↓# 変更
docroot=/var/www

umask=0077
↓# 変更(任意)
umask=0022

; Minimum UID
min_uid=100
↓# 変更(任意)
min_uid=500

; Minimum GID
min_gid=100
↓# 変更(任意)
min_gid=500

x-httpd-php="php:/usr/bin/php"
↓# 変更
application/x-httpd-php="php:/usr/bin/php-cgi"

(7)ApacheにSuPHPのモジュールを読み込ませるファイルを作成、php設定の無効化
[root@example ~]# vi /etc/httpd/conf.d/suphp.conf
LoadModule suphp_module modules/mod_suphp.so
[root@example ~]# mv /etc/httpd/conf.d/php.conf /etc/httpd/conf.d/php.conf.bak ← 無効化にしないとsuphpが効かない。
※直接Apacheの設定ファイルに記述してもよい。

(8)テストサイトを作ってみる(バーチャルホスト)
[root@example ~]# vi /etc/httpd/conf.d/testsite.conf
<VirtualHost *:80>
        ServerName www.example.com
        DocumentRoot /var/www/testuser
        SuPHP_Engine On
        SuPHP_UserGroup testuser testuser
        SuPHP_ConfigPath /usr/local/suphp/etc
        ErrorLog logs/testsite-error_log
        CustomLog logs/testsite-access_log combined
        DirectoryIndex index.php
        <Directory "/var/www/testuser">
        AddHandler application/x-httpd-php .php
        suPHP_Addhandler application/x-httpd-php
        </Directory>
</VirtualHost>
※ここでは、「testuser」でphpを実行します。「testuser」は作成されているものとします。また、「httpd.conf」には「ServerName」などの設定がされているものとします。

(9)php情報を表示させるコンテンツを作成
[root@example ~]# mkdir /var/www/testuser
[root@example ~]# echo '<?php phpinfo() ?>' > /var/www/testuser/index.php
[root@example ~]# chown -R testuser:testuser /var/www/testuser/

(10)Apacheを起動
[root@example conf.d]# service httpd start
httpd を起動中:                                            [  OK  ]

(11)確認事項
①「http://www.example.com」にアクセスしてPHPの情報ページが表示されること。
②「/var/log/httpd」直下に「suphp.log」が作成され、エラーが無いこと。

[root@example ~]# cat /var/log/httpd/suphp.log
[Mon Jan 10 16:01:20 2011] [info] Executing "/var/www/testuser/index.php" as UID 500, GID 500
③コンテンツの所有者を変えたら実行できないこと。
例(所有者を変更してアクセスした)
[root@example ~]# cat /var/log/httpd/suphp.log
[Mon Jan 10 16:04:20 2011] [warn] Mismatch between target UID (500) and UID (501) of file "/var/www/testuser/index.php"

参考文献
インストール
http://www.suphp.org/Documentation.html
http://adamyoung.net/Install-suPHP-on-CentOS-5.1

設定
http://www.dabits.net/archives/5
http://ameblo.jp/tomozo1118/entry-10269183525.html
http://backslash.ddo.jp/wordpress/index.php/archives/214


1月 10, 2011 at 4:12 pm by 黒ぶちメガネ
Category: Linux