Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.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 在ec2实例的不同子域上运行多个Flask应用程序_Python_Dns_Apache2_Flask - Fatal编程技术网

Python 在ec2实例的不同子域上运行多个Flask应用程序

Python 在ec2实例的不同子域上运行多个Flask应用程序,python,dns,apache2,flask,Python,Dns,Apache2,Flask,我有一个AmazonEC2实例运行用Flask构建的动态网站 我不确定在同一个ec2实例上运行不同Web应用程序的最佳方式是什么。我在这里读过关于应用程序调度的内容:在这里读过关于Apache2虚拟主机的内容: 我想在ec2实例上运行我的主网站www.mydomain.com(我已经在使用该实例),然后链接到我构建的其他Flask应用程序,例如www.subdomain.mydomain.com 这可以通过使用虚拟主机或在wsgi层上使用应用程序调度来实现吗?如果是,哪一个更好 一如既往,非常感

我有一个AmazonEC2实例运行用Flask构建的动态网站

我不确定在同一个ec2实例上运行不同Web应用程序的最佳方式是什么。我在这里读过关于应用程序调度的内容:在这里读过关于Apache2虚拟主机的内容:

我想在ec2实例上运行我的主网站www.mydomain.com(我已经在使用该实例),然后链接到我构建的其他Flask应用程序,例如www.subdomain.mydomain.com

这可以通过使用虚拟主机或在wsgi层上使用应用程序调度来实现吗?如果是,哪一个更好

一如既往,非常感谢您的帮助和建议

编辑:谢谢你的回复

现在我正在尝试运行主站点,它是一个flask应用程序,存储在
var/www/mysite
中,脱离主域
domain.co.za
,另一个应用程序是
var/www/flaskhello/flaskhello
,脱离子域
hello.domain.co.za
。目前,测试子域应用程序只是一个简单的世界应用程序。我已经按照下面指定的方式设置了apache2配置文件和wsgi文件

我遇到的问题是,flaskhello应用程序同时从
domain.co.za
hello.domain.co.za
显示。出于某种原因,
var/www/flaskhello/flaskhello/index.wsgi
文件似乎优先于
var/www/mysite/index.wsgi
,并且只有我对其中的
sys.path.insert…
行所做的更改才有效

编辑2

现在我已经阅读了,这与我试图做的类似,只是使用了DJango。仍然没有成功,但这让我们怀疑是不是
WSGIApplicationGroup%{GLOBAL}
导致了这个问题。我尝试过对此进行一些更改,但我不完全确定我在做什么,也找不到任何关于如何在WSGI中使用ApplicationGroup的好文档

再次感谢你的帮助

--

我有以下文件

etc/apache2/sites enabled/019 domain.co.za
etc/apache2/sites available/domain.co.za

<VirtualHost *:80>
     WSGIDaemonProcess index
 WSGIScriptAlias / /var/www/mysite/index.wsgi

 <Directory /var/www/index>
        WSGIProcessGroup index
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
 </Directory>
</VirtualHost>
<VirtualHost *:80>
 WSGIScriptAlias / /var/www/flaskhello/flaskhello/index.wsgi

 <Directory /var/www/index>
        WSGIProcessGroup index
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
 </Directory>
</VirtualHost>
var/www/mysite/index.wsgi

import sys
sys.path.insert(0,'/var/www/mysite')

from index import app as application
import sys
sys.path.insert(0,'/var/www/flaskhello/flaskhello')

from index import app as application
var/www/flaskhello/flaskhello/index.wsgi

import sys
sys.path.insert(0,'/var/www/mysite')

from index import app as application
import sys
sys.path.insert(0,'/var/www/flaskhello/flaskhello')

from index import app as application

这是绝对可行的。如果您计划使用不同的域,那么您当然需要使用vhost,并且您可能希望研究virtualenv以分离应用程序python堆栈(甚至LXC容器以增加一点安全性)。如果您计划使用不同的应用程序,那么它们将有单独的分派名称空间,因此您必须使用不带url_作为参数的重定向,而使用实际的硬链接url。这是非常典型的设置,应该很容易实现-当您遇到第一个具体问题时,请与我们联系:)

最终实现了这一点
有用的阅读:和

事实证明,我的一条路径是错误的,我仍然需要设置配置文件的ServerName和ServerAlias部分。另外,我不能为两个单独的守护进程使用相同的名称

现在一切都很好

我的最终配置文件:

<VirtualHost *:80>
    ServerName www.domain.co.za
    ServerAlias domain.co.za
         WSGIDaemonProcess www.domain.co.za
     WSGIScriptAlias / /var/www/mysite/index.wsgi
     <Directory /var/www/mysite/index>
            WSGIProcessGroup index
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
     </Directory>
</VirtualHost>

服务器名www.domain.co.za
ServerAlias domain.co.za
WSGIDaemonProcess www.domain.co.za
WSGIScriptAlias//var/www/mysite/index.wsgi
WSGIProcessGroup索引
WSGIApplicationGroup%{GLOBAL}
命令拒绝,允许
通融


服务器名www.hello.domain.co.za
WSGIDaemonProcess www.hello.domain.co.za
WSGIScriptAlias//var/www/flaskhello/flaskhello/index.wsgi
WSGIProcessGroup www.hello.domain.co.za
命令拒绝,允许
通融

谢谢您的回复。我已经编辑了原始答案,其中包含了我在尝试配置apache时遇到的更具体的问题。