Apache-2.2

如何使用 Apache 在 CentOS 5 上以特定使用者和組的身份執行 PHP Web 應用程序?

  • May 3, 2011

我知道有多種不同的方法可以做到這一點,但我不確定“最好”的方法是否適合我的特殊情況:

  • 每個站點都應該有自己的使用者帳戶(站點使用者)
  • 虛擬主機指向站點使用者主目錄中的目錄
  • Apache 將每個站點作為站點使用者的 user:group 執行
  • 可以在站點上以站點使用者身份執行 CLI 命令
  • 各個承包商負責維護1個或多個站點,每個承包商應有自己的帳戶使用者帳戶
  • 聯繫人還將擁有他們維護的每個站點帳戶的帳戶資訊。他們將作為站點使用者登錄以維護每個站點 - 直接使用 ssh 到該站點帳戶,或者登錄到他們的承包商帳戶然後切換使用者。

我的第一個想法是使用mod_fcgi,因為我認為這是它通常在我使用的一些共享伺服器環境中完成的方式。我當然搜尋了這個設置,但我發現的大多數指南都是隨機的部落格文章。我想要的是更可信的東西(比如 VPS 公司的 howto KB 或發行版 wiki)。這樣我可以將管理員指向它作為一般指南,我確信他會適應他如何設置這個特定的伺服器。

我懷疑您是否會從可靠的來源找到這篇文章。

我認為您的標題問題的答案是看一下suPHP。不幸的是,文件相當稀少。

開箱即用的 suPHP 以偏執模式編譯,這意味著您必須suPHP_UserGroup在每個虛擬主機的基礎上設置希望 PHP 執行的使用者和組(也可以設置全域預設值)。每個虛擬主機看起來像這樣

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

如果您擁有(或期望擁有)大量虛擬主機,上述方法可能會變得難以管理。您可以自己編譯 suPHP 並將模式更改paranoidowner模式。這將腳本作為 .php 文件的所有者/組執行,並允許您利用 apache2 的VirtualDocumentRoot指令並大大簡化您的虛擬主機配置。

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

您需要check_vhost_docroot在 suphp.conf 中禁用才能使後一種配置正常工作

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=false

執行上述操作允許 apache 作為帳戶的使用者/組“執行”站點。

您的其餘要點是您的管理員應該知道的基本管理。

引用自:https://serverfault.com/questions/265915