suPHPの導入のやり方 メモ
投稿日:2015年08月19日
最終更新日:
CentOSのサーバーにsuPHPを導入するやり方のメモ書きです。
手順のもくじ
- suPHPのダウンロード
- suPHPのコンパイル・インストール
- suPHPの設定
詳細は以下
詳しく解説
suPHPのダウンロード
suPHPの公式ページから、ファイルをダウンロードしてきましょう。当方が確認した2015年8月7日時点での最新版はVer.0.7.2です。Tera Termなんかでサーバーにログインし、適当な作業用ディレクトリに移動してから
[VIM]
wget http://www.suphp.org/download/suphp-0.7.2.tar.gz
[/VIM]
でソースコードをダウンロードします(suphp-0.7.2.tar.gzのところはバージョンアップがあったら適宜置き換えてください)。その後、
[VIM]
tar xvzf suphp-0.7.2.tar.gz #ダウンロードしたファイルを解凍
cd suphp-0.7.2 #生成されたディレクトリに移動
[/VIM]
ここまでのコマンドを打っていってください。
suPHPのコンパイル・インストール
次に、suPHPをコンパイルする準備をします。
[VIM]
sudo yum -y install httpd-devel gcc-c++ autoconf libtool apr apr-util
[/VIM]
このコマンドで、コンパイルに必要なパッケージを入れます。パッケージのインストールが完了したら、
[VIM]
autoreconf –force –install
[/VIM]
このコマンドはおまじないです。当方の環境では、これをやってからこの後の操作を行うとうまくいきました。必要性は(先ほどのパッケージと並んで)謎です。ここから、、
[VIM]
./configure –prefix=/usr –with-apxs=/usr/sbin/apxs –with-apr=/usr/bin/apr-1-config
make
sudo make install
[/VIM]
この3つのコマンドを上から順に打っていってください。正常に終了すれば、インストール成功です。
suPHPの設定
インストールが完了しても、まだまだ作業は続きます。むしろここからが本番です。Vimを使って作業するので、必要なら当サイトのメモ(見難いかもしれない)か「Vim 使い方」でググルかしてVimの使い方マニュアルを引っ張りだしておきましょう。まずは設定ファイルを用意します。なお、
- httpdのユーザーはapache
- バーチャルホスト設定ファイルは/etc/httpd/conf.d/vhost.confにある
- バーチャルホストでセットする利用ユーザーはhoge1,hoge2
とします。
[VIM]
sudo cp doc/suphp.conf-example /usr/etc/suphp.conf #設定ファイルを所定の位置にコピー(./configure –prefixで指定したディレクトリ/etc/suphp.conf)
sudo vim /usr/etc/suphp.conf
[/VIM]
ここから設定ファイルを編集していきます。(変更箇所のみ・一応上から記述)
[VIM]
;User Apache is running as
webserver_user=apache #httpd.confのUserに合わせておく
;Path all scripts have to be in
docroot=/var/www #必要に応じて変更
;Send minor error messages to browser
errors_to_browser=true #エラーを画面に出力させないならfalse
;Umask to set, specify in octal notation
umask=0022 #ファイルのパーミッションを755にするならこうなる
[handlers]
;Handler for php-scripts
application/x-httpd-php=”php:/usr/bin/php-cgi” #php-cgiのパスは合わせておくこと
[/VIM]
ここまで完了したら、バーチャルホスト側の設定になります。
[VIM]
sudo vim /etc/httpd/conf.d/vhost.conf
[/VIM]
編集内容はこんな感じになります。あくまで設定例です。必要に応じて変更してください。
[VIM]
LoadModule suphp_module modules/mod_suphp.so #httpd.confで追記してもOK
DocumentRoot /var/www/hoge1
ServerName hoge1.example.com
suPHP_Engine on
suPHP_UserGroup hoge1 hoge1
suPHP_ConfigPath /var/www/hoge1 #指定したディレクトリにphp.iniを用意すること(/etc/php.iniあたりをコピーすると楽)。.htaccessで指定してもOK。
ErrorLog /var/log/httpd/hoge1_example-error.log
CustomLog /var/log/httpd/hoge1_example-access.log “%h %l %u %t \”%r\” %>s %b”
AddType application/x-httpd-php .php
suPHP_AddHandler application/x-httpd-php
Options ExecCGI FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
DocumentRoot /var/www/hoge2
ServerName hoge2.example.com
suPHP_Engine on
suPHP_UserGroup hoge2 hoge2
suPHP_ConfigPath /var/www/hoge1 #指定したディレクトリにphp.iniを用意すること(/etc/php.iniあたりをコピーすると楽)。.htaccessで指定してもOK。
ErrorLog /var/log/httpd/hoge2_example-error.log
CustomLog /var/log/httpd/hoge2_example-access.log “%h %l %u %t \”%r\” %>s %b”
AddType application/x-httpd-php .php
suPHP_AddHandler application/x-httpd-php
Options ExecCGI FollowSymLinks Includes
AllowOverride All
Order allow,deny
Allow from all
[/VIM]
こんな感じでバーチャルホストごとに設定します。私の場合はこの後/etc/httpd/conf.d/php.confを無効化しました。これも必要性は謎です。ともかく設定作業が終わったら、
[VIM]
sudo service httpd restart
[/VIM]
でApacheを再起動します。正常に稼働すれば成功です。
投稿者名:
Koguma