LAMP堆栈,只读/写访问特定的目录

我正在考虑build立一个AWS微型实例,从中我可以运行许多不同的,不相关的网站。

我与我的共享主机有一个问题,就是我的一些客户运行Wordpress网站,有时并没有及时更新到最新版本,因此我们很容易受到安全漏洞的攻击。 以前,当这些WordPress的网站之一已经受到影响,我的共享主机上的所有其他网站已经受到影响,包括非WordPress的网站。

如果它再次发生,我想至less包含这个。 在单个Linux实例中,有没有一种方法可以让多个PHP“用户”(使用这个术语非常松散),每个用户的读写权限不得高于网站的根目录?

我已经看到了OpenVZ的build议,但这似乎是一个很大的性能影响,收益不大。

如果之前已经提出过这个问题,我们抱歉 – 这是一个很难简明扼要地进行Googlesearch的内容之一,但是显而易见的是,以前肯定有人问过同样的事情。

您可以使用文件权限来隔离单个虚拟机(EC2实例)上的事物。 您可以拥有单独的PHP池,并且可以根据此DO教程以不同的用户身份运行。 该教程几乎是一个指南,你需要做什么,可能会比使用ECS更好。

你应该看看t2的实例 ,t2.micro可能有一个小的多池,但一个小或中等可以为你工作。 你当然必须做一些testing。 您可以将虚拟内存添加到EC2实例,但也有缺点,特别是因为磁盘在t2实例上通过networking。 其他types的实例有本地磁盘,上一代M3 / C3实例,但是最好的方法是使用t2或具有足够内存的当代生成实例。

也可以查看AWS EC2容器服务 ,也就是pipe理的泊坞窗。 这可以让你完全分开,而不需要运行多个像PHP这样占用大量内存的资源密集型应用程序。 一个微型实例可能不会削减它的许多容器,但t2.large或类似可能是合适的。

更新 – 跟进问题 Nginx是一个快速,高效的Web服务器和反向代理,使用很less的内存,相对容易configuration。 Apache更大,可用的模块更多,但使用更多的资源。

我在t2.nano上托pipe了5个网站和MySQL,但是偶尔会耗尽内存,进行大量的yum更新。 t2.micro最初对你来说可能是好的,但是它取决于你有多less个PHP池 – 它们可能会占用相当多的内存。 我有一个指导如何configurationMySQL使用最小的RAM 。 从免费层上的t2.micro和RDS服务开始,这样数据库就可以在单独的机器上运行,节省内存。 如果由于内存要求而必须增加实例大小,请不要感到惊讶。

从评论 @tero Kilkanen 更新指出以下非常宝贵的一点

如果你想在PHP工作者之间有更多的分离,你可以考虑使用PHP-FPM的chroot特性。 使用chroot,每个PHP进程只能看到其chroot中的目录。 但是,需要更多的工作来build立,我不知道是否有任何指导