web-dev-qa-db-ja.com

Apacheを使用してCentOS5で特定のユーザーおよびグループとしてPHP Webアプリケーションを実行するにはどうすればよいですか?

これを行うにはさまざまな方法があることは承知していますが、「最善の」方法が私の特定の状況に適しているかどうかはわかりません。

  • 各サイトには独自のユーザーアカウント(サイトユーザー)が必要です
  • 仮想ホストは、サイトユーザーのホームディレクトリ内のディレクトリを指します
  • Apacheは、各サイトをサイトユーザーのuser:groupとして実行します。
  • CLIコマンドは、サイトユーザーとしてサイトで実行できます。
  • さまざまな請負業者が1つ以上のサイトを維持する責任があり、各請負業者は独自のアカウントユーザーアカウントを持っている必要があります
  • コンタクタは、メインの各サイトアカウントのアカウント情報も持っています。彼らは、各サイトを維持するためにサイトユーザーとしてログインします-そのサイトアカウントに直接sshを使用するか、請負業者のアカウントにログインしてからユーザーを切り替えます。

私が最初に考えたのは、mod_fcgiを使用することでした。これは、これまで使用した共有サーバー環境の一部で通常行われている方法だと思うからです。もちろん私はこの設定をグーグルで検索しましたが、私が見つけたガイドのほとんどはランダムなブログ投稿でした。私が欲しいのは、もう少し信頼性のあるものです(VPS会社のハウツーKBやディストリビューションウィキなど)。このようにして、管理者に一般的なガイドとしてそれを示すことができます。これにより、管理者はこの特定のサーバーのセットアップ方法に確実に適応できます。

4
prodigitalson

これが信頼できるソースからきちんと書かれていることに気付くとは思えません。

あなたの見出しの質問に対する答えは、 suPHP を見てみることだと思います。残念ながら、ドキュメントはかなりまばらです。

箱から出して、suPHPはパラノイドモードでコンパイルされます。つまり、仮想ホストごとにsuPHP_UserGroupディレクティブと同様に実行するPHP)ユーザーとグループを設定する必要があります。 (グローバルデフォルトも設定できます)各仮想ホストは次のようになります

<VirtualHost *:80>
    suPHP_Engine on
    ServerName hostname.tld
    DocumentRoot /home/websites/hostname.tld
    suPHP_UserGroup hostname hostgroup
</VirtualHost>

多数のvhostがある(またはあると予想される)場合、上記の方法の管理が困難になる可能性があります。 suPHPを自分でコンパイルして、paranoidモードをownerモードに変更できます。これにより、スクリプトが.phpファイルの所有者/グループとして実行され、Apache2のVirtualDocumentRootディレクティブを利用できるようになり、仮想ホストの構成が大幅に簡素化されます。

<VirtualHost *:80>
    suPHP_Engine on
    ServerName something.tld
    ServerAlias *
    VirtualDocumentRoot /home/websites/%1/public_html
</VirtualHost>

後者の構成を機能させるには、suphp.confでcheck_vhost_docrootを無効にする必要があります

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=false

上記を実行すると、Apacheはアカウントのユーザー/グループとしてサイトを「実行」できます。

残りのポイントは、管理者が知っておくべき基本的な管理です。

3
user9517