apache2:在本地服务器的同一域下托管多个站点

Posted

技术标签:

【中文标题】apache2:在本地服务器的同一域下托管多个站点【英文标题】:apache2: host multiple sites under same domain in local server 【发布时间】:2017-03-15 21:34:39 【问题描述】:

我有一个带有 LAMP、ubuntu 和 apache2 的本地服务器,并且想安装几个 Web 应用程序(openproject、vtiger、suitecrm、sugar crm...)来测试它们。它们都是基于网络的服务。

我已经在 /var/www 下解压它们并将虚拟主机配置为:

对于 Vtiger 服务:/etc/apache2/sites-available/vtigercrm.conf

<VirtualHost *:80>

#ServerName www.example.com

ServerAdmin angel@usmima.com
DocumentRoot /var/www/vtigercrm
ServerName vtigercrm
ServerAlias vtigercrm.serverMachine.synology.me 
Alias /vtigercrm /var/www/vtigercrm

ErrorLog $APACHE_LOG_DIR/vtigercrm-error.log
CustomLog $APACHE_LOG_DIR/vtigercrm-access.log combined
</VirtualHost>

对于 Suite crm 服务:/etc/apache2/sites-available/suitecrm.conf

<VirtualHost *:80>

ServerAdmin angel@usmima.com
DocumentRoot /var/www/suitecrm
ServerName suitecrm
ServerAlias suitecrm.serverMachine.synology.me
ServerAlias localhost
Alias /suitecrm /var/www/suitecrm 

ErrorLog $APACHE_LOG_DIR/suitecrm-error.log
CustomLog $APACHE_LOG_DIR/suitecrm-access.log combined

   <Directory /var/www/suitecrm/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
   </Directory>
</VirtualHost>

对于 openproject:/etc/apache2/sites-available/openproject.conf

Include /etc/openproject/addons/apache2/includes/server/*.conf

<VirtualHost *:80>
  ServerName openproject
  ServerAlias serverMachine.synology.me
  ServerAlias localhost
  DocumentRoot /opt/openproject/public

  ProxyRequests off

  Include /etc/openproject/addons/apache2/includes/vhost/*.conf

  ProxyPass /openproject/ http://127.0.0.1:6000/openproject/ retry=0
  ProxyPassReverse /openproject/ http://127.0.0.1:6000/openproject/
</VirtualHost>

我可以使用它们的 ServerAlias 地址访问每一项服务:

vtigercrm.serverMachine.synology.me suitecrm.serverMachine.synology.me serverMachine.synology.me/openproject

但如果我想在本地访问它们,http://localhost/openproject 是唯一有效的方法。 http://localhost/suitecrmhttp://localhost/vtigercrm 不起作用。

我必须如何配置才能像访问同一域的不同文件夹一样访问每个服务?例如:

http://localhost/suitecrm 或 http://192.168.1.123/suitecrm http://localhost/vtigercrm 或 http://192.168.1.123/vtigercrm

openproject 的案例正在运行:

http://localhost/openproject 或 http://192.168.1.123/openproject

谢谢

编辑 1

我已经成功解决了一半的问题,为 openproject 添加编辑虚拟主机配置:

Alias /vtigercrm /var/www/vtigercrm
Alias /suitecrm  /var/www/suitecrm

这似乎表明访问时正在启动openproject。我应该怎么做才能避免需要 openproject 虚拟主机才能正确路由对 vtiger、suitecrm 和其他站点的访问?

谢谢

【问题讨论】:

【参考方案1】:

我建议更改系统的主机文件。

/etc/hosts

替换

127.0.0.1 localhost

127.0.0.1 serverMachine.synology.me vtigercrm.serverMachine.synology.me suitecrm.serverMachine.synology.me localhost

现在只需键入与您在另一个系统上相同的地址 - 浏览器将发送与外部用户完全相同的信息,因此 Apache 将以相同的方式响应。

【讨论】:

以上是关于apache2:在本地服务器的同一域下托管多个站点的主要内容,如果未能解决你的问题,请参考以下文章

如何在 nginx 上托管的单个域下托管多个烧瓶应用程序?

AWS Route53:同一域下的私有和公共托管区域

如何在服务器上/同一域下的多个 ColdFusion 应用程序之间共享会话?

找不到 Ubuntu Apache2 本地虚拟主机 url

Apache2-需要多个具有相同域的项目在域名后使用不同的路径

Apache 2.4 具有不同别名和路径的多个站点