Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
Python Flask中一台服务器上的多个应用程序_Python_Flask - Fatal编程技术网

Python Flask中一台服务器上的多个应用程序

Python Flask中一台服务器上的多个应用程序,python,flask,Python,Flask,当前我的服务器结构如下所示: /srv/http/: index.html projects/: app1/ app2/ appetc/ index.html是一个Flask应用程序,但我将其更改为一个静态网页,因为这符合我的需要 我想让我的多个应用程序(在项目文件夹中)位于文件结构中的URL上。i、 e app1: http://example.com/app1 app2: http://example.com/app2 appetc: http://exam

当前我的服务器结构如下所示:

/srv/http/:
  index.html
  projects/:
    app1/
    app2/
    appetc/
index.html
是一个Flask应用程序,但我将其更改为一个静态网页,因为这符合我的需要

我想让我的多个应用程序(在
项目
文件夹中)位于文件结构中的URL上。i、 e

app1: http://example.com/app1
app2: http://example.com/app2
appetc: http://example.com/appetc
目前这不起作用。我可以通过正确的url导航到应用程序的主页,但如果我单击任何链接(因为它是Flask应用程序),它的行为就像它在服务器的根目录上运行一样

我确实拥有对服务器的root访问权限,并且能够编辑apache配置文件,但是我没有能力创建更多的子域(我的dns提供商限制了我,我目前处于该限制)。此外,我没有设置此布局。我目前正处于一个过渡阶段,我可以根据自己的意愿重组我的应用程序。

提供了运行多个Flask应用程序的策略,例如使用werkzeug的中间件:

from werkzeug.wsgi import DispatcherMiddleware
from frontend_app import application as frontend
from backend_app import application as backend

application = DispatcherMiddleware(frontend, {
    '/backend':     backend
})

也许运行一个WSGI服务器(比如twisted),让它根据路径吐出不同的WSGI对象。类似吗?这是每个页面上的超链接没有指向正确URL的问题吗?您可能需要正确设置
WSGIScriptAlias
。例如:
WSGIScriptAlias/app1/some/path/to/app1.wsgi
@cpb2 mod\u wsgi可配置为使用带有
WSGIDaemonProcess
指令的守护进程。这允许您拥有一个长时间运行的流程,而不是为每个请求旋转一个流程。