Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Apache在一个URL上创建多个框架_Php_Linux_Apache_Frameworks_Flask - Fatal编程技术网

Php 使用Apache在一个URL上创建多个框架

Php 使用Apache在一个URL上创建多个框架,php,linux,apache,frameworks,flask,Php,Linux,Apache,Frameworks,Flask,注意:URL、用户名等已被更改以保护隐私 我正在用Flask设计一个API,但是这个网站最初是用PHP开发的。最终这将被改变,但目前我希望两者在同一个url上并排运行,我们称之为domain.com。Flask API应位于www.domain.com/API,PHP网站位于www.domain.com 网站的Apache文件位于:/etc/apache2/sites available/domain.com。通过使用下面的一个单独设置并重新启动apache,我可以让该框架单独运行,但我还没有弄

注意:URL、用户名等已被更改以保护隐私

我正在用Flask设计一个API,但是这个网站最初是用PHP开发的。最终这将被改变,但目前我希望两者在同一个url上并排运行,我们称之为domain.com。Flask API应位于www.domain.com/API,PHP网站位于www.domain.com

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

烧瓶(www.domain.com/api):


服务器管理员webmaster@domain.com
服务器名www.domain.com
WSGIDaemonProcess api用户=www数据组=www数据线程=5
WSGIScriptAlias/api/home/user/public_html/api/api.wsgi
WSGIProcessGroup api
WSGIApplicationGroup%{GLOBAL}
命令拒绝,允许
通融
PHP(www.domain.com):


服务器管理员webmaster@domain.com
服务器名www.domain.com
DirectoryIndex.php
DocumentRoot/home/user/public\u html/domain.com/

我已经尝试过许多方法,比如目录和别名,但我还没有找到解决方案。

当我发现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>

服务器管理员webmaster@domain.com
服务器名www.domain.com
DirectoryIndex.php
DocumentRoot/home/user/public\u html/domain.com/
WSGIDaemonProcess api用户=www数据组=www数据线程=5
WSGIScriptAlias/api/home/user/public_html/api/api.wsgi
WSGIProcessGroup api
WSGIApplicationGroup%{GLOBAL}
命令拒绝,允许
通融

你的.htaccess看起来像什么?如果你在php网站正常运行的情况下运行第二个virtualhost,你的flask有什么问题?您是否尝试将flask放在/home/user/public_html/domain.com/api中?如果文件中同时包含这两个文件,那么只有首先编写的虚拟主机才能使用。嗯,我现在能想到的唯一解决方案是为api使用另一个端口号,因为web浏览器无论如何都不会访问它,但我还是会坚持一点,等待答案。我不是这么说的。我问你是否只使用第二个,烧瓶有什么问题?
<VirtualHost *:80>

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

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


</VirtualHost>
<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>