.
WEB/DB 関連 => CMSサイト制作環境の構築 > 3.PHP-CGI + suEXEC 環境の構築手順 (CentOS 6.x)1/2
Linux 活用ガイド:目次

サーバ構築ガイド

レンタル ガイド

ショップ 構築ガイド

情報漏洩対策

PHP-CGI + suEXEC 環境の構築手順 (CentOS 6.x)1/2

引き続き、CentOS 6.x における PHP-CGI + suEXEC の具体的な設定手順について見ていきます。

PHP-CGI + suEXEC 環境の構築手順

LAN内のユーザーに CMS を利用したサイト制作、開発環境を構築する場合、CGI や PHPがそれぞれのユーザー権限で動作しさえすれば目的は達成できるため、suPHP ではなくパッケージで管理出来る PHP-CGI を使ってそれぞれのユーザー権限で PHP が実行出来る環境を構築します。

前述したように suEXEC は AP_DOC_ROOT(CentOS では /var/www)配下になければ suEXEC で CGI を実行させることは出来ません。先ず、PHP-CGI がインストールされているか調べます。

# suexec -V
-D AP_DOC_ROOT="/var/www" ← これ
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"

CentOS 6.x のパッケージでインストールした場合は、上記のように表示されています。この例では suEXEC により CGI を動作させるには、AP_DOC_ROOT で指定されたディレクトリ配下に CGI が配置されている必要があります。

AP_DOC_ROOT で指定されたディレクトリを /var/www から /home へ変更する場合は、apache をコンパイルし直す必要があるので、パッケージによる保守管理が出来なくなる事を意味します。

本稿ではこれを変えない方向で、PHP と CGI が個々のユーザー権限で動作する環境を構築することにします。

バーチャルホスト毎に suEXEC + PHP-CGI を有効にする

以下を前提に suEXEC と PHP-CGI へ移行する場合の修正箇所について、CentOS 6.x を例に説明します。

  • Apache Webサーバーが稼働している
  • suEXEC が動作可能な状況にあること
    (CentOS 6.x の Webサーバー構成に含まれる)
  • バーチャルホストで個々のユーザーサイトを運用出来る状態
    (Apache で各ユーザーごとにバーチャルホストの割り当てや FTPサーバーなどのアップロードできる環境が構築済み)

Wrapper のためのディレクトリと実行ファイルの作成

先ず、php-cgi を呼び出すための実行ファイルを suEXEC の動作が認められているディレクトリの下に、以下の手順で作成します。

/var/www ディレクトリ配下に /php-cgi ディレクトリを作成し、オーナーapache 、グリープ apache にして、その他のユーザーにはアクセスできるようにします。

# mkdir /var/www/php-cgi
# chown apache.apach /var/www/php-cgi
# chmod 0711 /var/www/php-cgi

この /php-cgi ディレクトリに、PHPを CGI モードで実行させたいユーザーのディレクトリを作成します。PHP-CGI 形式で PHPの動作を認めたいユーザーごとに作成する必要がありますので、ここでは user1 と user2 二人いると仮定します。

# mkdir /var/www/php-cgi/user1
# mkdir /var/www/php-cgi/user2

/user1 ディレクトリに php-cgi を以下の内容のファイルを作成します。

/var/www/php-cgi/user1/php-cgi

#!/bin/sh
exec /usr/bin/php-cgi

同様に user2 に対しても同じ内容の php-cgi を作成するか、usr1 で作成したものを複製して配置します。現在、以下の状態になっています。

  • /var/www/php-cgi/user1/php-cgi
  • /var/www/php-cgi/user2/php-cgi

それぞれのユーザーディレクトリのパーミッションをグーループのみアクセスを許可します。(ここポイント)

# chmod 0710 /var/www/php-cgi/user1
# chmod 0710 /var/www/php-cgi/user2

所有者を user1、グループを user1 とします。ユーザーグループを作成していない場合は groupadd コマンドでユーザー名と同一名のグループを作製してユーザーを登録します。

# groupadd user1
# usermod -g user1 user1

ディレクトリと作成した php-cgi 実行ファイルの所有者とパーミッションを変更します。またグループ user1 に対して読み込みと実行を許可します。(パーミッション750)

# chown -R user1.user1 /var/www/php-cgi/user1
# chmod 0710 /var/www/php-cgi/user1
# chmod 0750 /var/www/php-cgi/user1/php-cgi

user2 に対しても同様に php-cgi ファイルを作成し、パーミッションと所有権を設定します。実際には、この開発環境を提供するユーザーの数だけ、同様のディレクトリを掘って、PHP-CGI を呼び出す実行ファイルを配置する必要があります。

ユーザーグループに Apache を登録

ユーザー user1 のローカルグループ user1 が存在しない場合は、グループ user1 を作成し、

# groupadd user1

グループ user1第一のユーザーとして user1 を追加します。

# gpasswd -a user1 user1

ユーザー専用のローカルグループに apache を追加します。

# gpasswd -a apache user1

グループuser1 には ユーザーuser1とapache が所属している状態です。PHP-CGI の利用を認める user2 についても同じ手順で設定します。 以上で下準備は完了です。引き続き、Apache Webサーバーの設定へ続きます。

 

CMSサイト制作環境の構築

bottom_mark
ページ最上部
ページ最上部 前のページ