如何使用Apache在CentOS 5上以特定用户和组的身份运行PHP Web应用程序?

我知道有很多不同的方法来做到这一点,但我不确定“最好”的方式是否适合我的特殊情况:

  • 每个网站应该有自己的用户帐户(网站用户)
  • 虚拟主机指向站点用户的主目录内的目录
  • Apache作为站点用户的用户:组执行每个站点
  • CLI命令可以作为站点用户在站点上执行
  • 各承包商负责维护一个或多个地点,每个承包商应有自己的账户用户账号
  • 联系人也将拥有他们mainatian每个网站帐户的帐户信息。 他们将以站点用户身份login,以便维护每个站点 – 使用ssh直接访问该站点帐户,或login到其承包商帐户,然后切换用户。

我的第一个想法是使用mod_fcgi因为我认为这是通常在我使用的一些共享服务器环境中完成的方式。 我当然search了这个设置,但是我发现的大多数指南都是随机的博客文章。 我想要的是更有信誉的东西(如VPS公司的howto KB或distro wiki)。 通过这种方式,我可以将pipe理员指向它作为一般指导,以确定他将适应如何设置此特定服务器。

我怀疑你会从可靠的来源find这个整齐的书面。

我认为你的标题问题的答案是看看suPHP 。 不幸的是,文档相当稀疏。

开箱即用的suPHP是以偏执模式编译的,这意味着你必须设置你希望PHP运行的用户和组,就像每个虚拟主机的suPHP_UserGroup指令一样(也可以设置一个全局默认值)。 每个虚拟主机都是这样的

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

如果你有(或期望有)大量的虚拟主机,上述方法可能变得难以pipe理。 您可以自己编译suPHP并将paranoid模式更改为owner模式。 这将运行脚本作为.php文件的所有者/组,并允许您使用apache2的VirtualDocumentRoot指令,并大大简化您的vhostconfiguration。

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

你将需要在你的suphp.conf中禁用check_vhost_docroot来使后面的configuration工作

 ;Check wheter script is within DOCUMENT_ROOT check_vhost_docroot=false 

通过以上操作,apache可以将该网站作为帐户的用户/组“执行”。

您的其他观点是您的pipe理员应该知道的基本pipe理。