我知道如何设置Apache服务器并获得多个网站的工作,但这个问题更多的是最佳实践。
基本上我有一个VPS运行的Ubuntu服务器,我期待从这个运行多个网站。 我想要做的是在主文件夹中设置每个帐户的目录,但是使我的sites帐户能够在每个文件夹中创build,修改和删除文件,而不必使用root权限。 这是可能的,如果是的话,这是一个可以接受的方式来设置我的环境。
谢谢user204088 – 关于描述安全模型的权限问题! (大多数人只是呻吟,他们不能得到的东西上class,并接受答案,说改变权限为0777)。
你没有提到的一件事是网站如何被创build,如何被修改,网站之间应该有多less隔离。
一些注意事项:
1)我会build议将文档根目录设置为主文件夹下的文件夹。 这样,您可以为每个站点的包含目录,每个站点的上传目录和每个站点的会话数据目录创build一个范围,而这些目录都不会被networking服务器提供为URL。 这也意味着/ etc / skel中的所有垃圾也不可访问。
2)除极less数情况外,您的networking服务器不应具有对documentroot中任何内容的写入权限。
为了创build用户(与主目录),你需要是根 – 因此,我会去在/ etc / skel中设置一个模板站点,并写一个简单的bash脚本来创build一个用户,并添加一个虚拟主机logging到httpd .conf(在我的PCLinux盒子上,它在/etc/httpd/conf/vhosts.d中 – 将文件命名为主机名称,而不是www。前缀
允许网站帐户对所有网站的读/写访问内容是混乱的地方。 你可以build立一个通用组,确保所有的文件/目录都是可写的(chmod g + S),但这意味着用户可以访问彼此的内容。 对于每个用户模型使用一个组,可能是一个更好的主意,将文件权限设置为可由群组写入,并将“网站”帐户添加到每个单用户组。
Apache通过“其他”获取对文件/目录的读取权限 – 所以请记得正确设置umask。
把这一切都捆绑到一个只能由root运行的bash脚本是很简单的。 您可以通过sudo(请确保您添加进一步的身份validation)从您的networking服务器调用这样的东西,把一个简单的前端创build帐户/虚拟主机。
一旦创build了用户帐户,您可以使用“网站”帐户来操作这些文件。
这是可能的,如果你发现它是一个可以接受的方式来维护你的服务器,我不明白为什么它不是一个可行的select。 另一种方法是不要让站点用户运行脚本作为Apache或您使用的任何Web服务用户。