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

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

我知道有很多不同的方法可以做到这一点,但我不确定哪种方法适合我的具体情况:

  • 每个站点都应该有自己的用户帐户(站点用户)
  • 虚拟主机指向站点用户主目录中的目录
  • Apache 以站点用户的用户:组身份执行每个站点
  • 可以以站点用户身份在站点上执行 CLI 命令
  • 各个承包商负责维护一个或多个站点,每个承包商都应该有自己的帐户用户帐户
  • 承包商还将拥有他们维护的每个站点帐户的帐户信息。他们将以站点用户身份登录以维护每个站点 - 要么直接使用 ssh 登录到该站点帐户,要么登录承包商帐户然后切换用户。

我首先想到的是使用,mod_fcgi因为我认为这是一些我使用过的共享服务器环境中通常的做法。当然,我在谷歌上搜索了这个设置,但我找到的大多数指南都是随机的博客文章。我想要的是一些更可信的东西(比如 VPS 公司的 howto KB 或发行版 wiki)。这样,我可以将其作为一般指南指向管理员,我相信他会适应他如何设置这个特定的服务器。

答案1

我怀疑你会发现这篇文章是从一个可靠的来源。

我认为你标题问题的答案是看看苏普. 不幸的是文档相当稀少。

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

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

如果您拥有(或预计拥有)大量虚拟主机,上述方法可能难以管理。您可以自行编译 suPHP 并将paranoid模式更改为owner模式。这会以 .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 以帐户的用户/组身份“执行”站点。

您的其余观点都是您的管理员应该知道的基本管理知识。

相关内容