我正在尝试设置类似:
a.site.com b.site.com c.site.com
现在,我希望 a.site.com 中的数据完全独立于 b.site.com。基本上,我希望能够为客户端 A 提供 a.site.com 的 FTP 访问,为客户端 B 提供 b.site.com 的 FTP 访问。如果客户端是恶意的,那么他应该只能访问自己的站点,而不应该能够干扰 b.site.com。
我如何实现这一目标?我知道这可能与 Apache 中的设置有关,但不确定。另外,我如何以编程方式创建这些子域?
如果要提供 FTP 访问,有两个问题:
对于 FTP 访问,您可以使用 vsftpd 及其 chroot 选项。我对此没有进一步的经验,所以我不能提供更多细节。
对于 PHP 访问,您可以为不同的站点设置 chroot jail。这是通过 PHP-FPM 服务器模块完成的。
这个 chroot 设置很难正确设置,我花了很多时间进行调整,然后才让它工作。
您必须在 PHP-FPM 配置文件中配置 chroot 操作。您将为每个域指定一个单独的 PHP 进程池,每个域都生活在自己的 chroot 监狱中。
然后,您必须为每个站点创建一个 chroot 环境。这个环境包含系统库、配置文件等。有几个工具可以帮助创建 chroot 环境。
最后,您必须配置 Apache 以通过 FastCGI 接口将每个域的 PHP 脚本传递给相应的 PHP-FPM。
关于以编程方式创建子域,Puppet是一个有用的工具。但是,您可能必须自己创建脚本来管理您的设置。