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