使用Apache在一个URL上有多个框架

时间:2013-08-07 22:25:47

标签: php linux apache frameworks flask

注意:网址,用户名等已因隐私而更改。

我正在Flask中设计一个API,但该网站最初是在PHP中。最终这将被更改,但目前我希望两者在同一个网址上并排运行,我们将其称为domain.com。 Flask API应位于www.domain.com/api和PHP网站www.domain.com。

网站的Apache文件位于:/etc/apache2/sites-available/domain.com。通过使用下面的一个单独的设置并重新启动apache,我可以让该框架单独运行,但我还没有想出如何在文件中运行它们并且没有问题地运行。

Flask(www.domain.com/api):

<VirtualHost *:80>
    ServerAdmin webmaster@domain.com
    ServerName www.domain.com

    WSGIDaemonProcess api user=www-data group=www-data threads=5
    WSGIScriptAlias /api /home/user/public_html/api/api.wsgi

    <Directory /home/user/public_html/api>
        WSGIProcessGroup api
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>  

PHP(www.domain.com):

<VirtualHost *:80>

  ServerAdmin webmaster@domain.com
  ServerName  www.domain.com

  DirectoryIndex index.php
  DocumentRoot /home/user/public_html/domain.com/


</VirtualHost>

我已尝试过一些像Directory和Alias这样的东西,但我还没有找到解决方案。

1 个答案:

答案 0 :(得分:0)

当我发现WSGIScriptAlias与Alias的工作方式类似时,答案非常简单。然后我可以简单地将两者结合起来,它的工作方式就是我想要的。

<VirtualHost *:80>

  ServerAdmin webmaster@domain.com
  ServerName  www.domain.com

  DirectoryIndex index.php
  DocumentRoot /home/user/public_html/domain.com/

  WSGIDaemonProcess api user=www-data group=www-data threads=5
  WSGIScriptAlias /api /home/user/public_html/api/api.wsgi

  <Directory /home/user/public_html/api>
    WSGIProcessGroup api
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
  </Directory>

</VirtualHost>