Python 在ec2实例的不同子域上运行多个Flask应用程序
我有一个AmazonEC2实例运行用Flask构建的动态网站 我不确定在同一个ec2实例上运行不同Web应用程序的最佳方式是什么。我在这里读过关于应用程序调度的内容:在这里读过关于Apache2虚拟主机的内容: 我想在ec2实例上运行我的主网站www.mydomain.com(我已经在使用该实例),然后链接到我构建的其他Flask应用程序,例如www.subdomain.mydomain.com 这可以通过使用虚拟主机或在wsgi层上使用应用程序调度来实现吗?如果是,哪一个更好 一如既往,非常感谢您的帮助和建议 编辑:谢谢你的回复 现在我正在尝试运行主站点,它是一个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层上使用应用程序调度来实现吗?如果是,哪一个更好 一如既往,非常感
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时遇到的更具体的问题。