我想在 Linux/Apache2.2 上建立一个虚拟主机服务器,允许多个用户设置多个网站域,这适合商业共享主机。
我曾经见过一些示例(从我当时作为共享主机客户的角度来看),这些示例允许用户将他们的 Web 文件存储在他们的用户主目录中,并使用与虚拟主机域相对应的目录,例如:
/home/user1/www/example1.com
/home/user2/www/example2.com
而不是使用 /var/www
问题:
- 如何在 Apache 配置文件中配置这一点?(不要担心 DNS)
- 这是管理多个虚拟主机的最佳方法吗?还有其他方法吗?
- 您认为我在执行此操作时应该注意哪些安全问题?
非常感谢大家。
编辑:如果您只想回答问题 1,请随意,因为这对我来说是目前最紧迫的问题,我会将其视为问题的答案。自发布以来,我已经自己做了这件事,但我不确定这是否是最好的解决方案,我想知道经验丰富的系统管理员会怎么做。谢谢。
答案1
我不是来自托管世界,但我相信它是通过以下方式完成的(谈论商业共享托管):
在主 apache 的 conf(通常是 httpd.conf)中有一些基本设置,例如包括 /etc/httpd/vhosts/*.conf。
/etc/httpd/vhosts/ 中的每个文件代表一个虚拟主机,它的配置由某些配置面板(如 ISPManager 或 cPanel,或类似的东西)或自定义主机软件使用预定义模板生成。
因此,vhosts的管理比较容易,但资源跟踪、安全性等问题比较多。
答案2
我的 VPS 也遇到了类似的情况,我打算为 apache 指定额外的位置来获取站点配置(我有信任的用户),例如
/home/user1/sites-enabled
/home/user2/sites-enabled
然后每个用户都有权重新加载 apache(sudo 太棒了)
在 apache2.conf 中我添加了
Include /home/user1/sites-enabled/
Include /home/user2/sites-enabled/
然后,您的用户可以指定他们想要配置的站点并按照他们的意愿配置文件夹。
答案3
对于用户虚拟主机,您可以非常轻松地使用 mod_userdir,它内置于几乎所有主要 Linux 发行版的 Apache 中。以下是链接: http://httpd.apache.org/docs/2.2/mod/mod_userdir.html
只需启用它并定义用户将用于托管文件的文件夹的名称。