Home > Apache > | Vine Linux > Apache 2.2 PHP suPHP 環境構築

Apache 2.2 PHP suPHP 環境構築

Vine 4.2 環境でsuPHPを使うお話。

Apache 2.2 はパッケージでインストールされている。
PHP 5.2.x はパッケージでインストールされている。
そんな環境です。

「httpdが無い」というエラーになるようなのでシンボリックリンクを作成。

# cd /usr/sbin
# ln -s apache2 httpd

suPHP 0.6.3 インストール。
最新版は以下のURLで確認して下さい。

http://www.suphp.org/

インストール先に移動。

# cd /usr/local/src

suPHPをダウンロード。

# http://www.suphp.org/download/suphp-0.6.3.tar.gz

解凍。

# tar zxvf suphp-0.6.3.tar.gz

configure。

# ./configure \
--prefix=/usr \
--with-apxs=/usr/sbin/apxs \
--with-min-uid=500 \
--with-min-gid=500 \
--with-apache-user=apache \
--with-logfile=/var/log/apache2/suphp.log \
--with-php=/usr/bin/php5-cgi \
--sysconfdir=/etc \
--with-apr=/usr/bin/apr-1-config \
--with-setid-mode=owner

私はここで apxs が見つからないというようなエラーになったので以下のようにして導入しました。

apxs が含まれるパッケージを検索。

# apt-cache search apxs

この結果、どうやら apache2-devel に含まれているようなのでインストールされているか確認。

# rpm -qa | grep apache2

私の環境ではインストールされていなかったので apache2-devel をインストール。

# apt-get install apache2-devel

再びconfigure。

生成されたMakefileのapacheとなっている部分を全部apache2に書き換える。

# vi src/apache2/Makefile

apacheとなっている部分を検索して書き換えていくと早い。
以下のようにして Nキー か nキー で検索しましょう。
(挿入モードで無い状態で行う)

?apache

ApacheのモジュールとしてsuPHPを使うので mod_suphp.c を編集する。

# vi src/apache2/mod_suphp.c

-AP_INIT_ITERATE(”suPHP_AddHandler”, suphp_handle_cmd_add_handler, NULL, 
ACCESS_CONF, “Tells mod_suphp to handle these MIME-types”),
+AP_INIT_ITERATE(”suPHP_AddHandler”, suphp_handle_cmd_add_handler, NULL, 
RSRC_CONF | ACCESS_CONF, “Tells mod_suphp to handle these MIME-types”),

make&install。

# make
# make install

Apacheモジュールディレクトリへ mod_suphp.so を移動。

# mv /usr/lib/apache2/mod_suphp.so modules/

suPHPの設定ファイル編集。
この時、新規ファイル作成になったので以下を貼り付けた。

# vi /etc/suphp.conf

[global]
;Path to logfile
logfile=/var/log/apache2/suphp.log
 
;Loglevel
loglevel=info
 
;User Apache is running as
webserver_user=apache
 
;Path all scripts have to be in
docroot=/home/
 
;Path to chroot() to before executing script
;chroot=/mychroot
 
; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false
 
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=false
 
;Send minor error messages to browser
errors_to_browser=true
 
;PATH environment variable
env_path=/usr/bin:/usr/local/bin:/usr/sbin:/usr/local/sbin
 
;Umask to set, specify in octal notation
umask=0022
 
; Minimum UID
min_uid=500
 
; Minimum GID
min_gid=500
 
[handlers]
;Handler for php-scripts
x-httpd-php=php:/usr/bin/php5-cgi
 
;Handler for CGI-scripts
x-suphp-cgi=execute:!self

ApacheにsuPHPの設定をする。
このままではモジュール版PHPと干渉するのでモジュール版PHPを無効にしてsuPHPを有効にする。

# vi /etc/apache2/conf.d/php5.conf

#<IfModule !php4_module>
#LoadModule php5_module modules/libphp5.so
#AddType application/x-httpd-php .php .phtml
#AddType application/x-httpd-php-source .phps
#DirectoryIndex index.php index.phtml
#</IfModule>

# vi /etc/apache2/conf.d/suphp.conf

LoadModule suphp_module modules/mod_suphp.so
suPHP_Engine on
AddHandler x-httpd-php .php
suPHP_AddHandler x-httpd-php

Apacheを再起動して設定を反映。

# /etc/rc.d/init.d/apache2 restart

これまでPHPをApacheのモジュール版として動かしている環境だった場合、PHPで作成されたファイルは所有者とグループが apache となっているはずです。
(厳密にはApacheで設定している User Group になっている)
それを取り敢えずそのアカウントの所有者とグループに戻す方が好ましいでしょう。

apache:apacheなファイルの所有者とグループを変更。
アカウント分繰り返す。
アカウントが多い場合はbashスクリプトを作って実行させるといいでしょう。

# chown -R --from=apache:apache アカウント:アカウント /home/アカウント

他の注意点として .htaccess で php_flag や php_value を指定していると500エラーになります。
以下のようにして囲まれている場合は問題なさそうです。

<IfModule mod_php5.c>
	~中略~
</IfModule>

ユーザーディレクトリでのPHP制御方法は .htaccess ではなく php.ini に変わります。

suPHPのデフォルト設定ではパーミッションが 777 や 666 といった場合に処理を強制終了するそうです。
おそらく 707 や 606 といった場合でも処理が強制終了すると思われます。
セキュリティを考慮して処理を止めていると思いますがsuPHPの設定で解除は可能です。
私は折角のセキュリティなのでこの仕様のまま使用しています。

参考URL
http://cmf.ohtanz.com/blog/archives/173

Comments:0

Comment Form

Trackbacks:0

TrackBack URL for this entry
https://www.fya.jp/cgi-bin/mt/mt-tb.cgi/70
Listed below are links to weblogs that reference
Apache 2.2 PHP suPHP 環境構築 from Minase's Blog - FYA

Home > Apache > | Vine Linux > Apache 2.2 PHP suPHP 環境構築

Search
Feeds

Return to page top