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

标签 python dns apache2 flask

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

我不确定在同一个 ec2 实例上运行不同 web 应用程序的最佳方式是什么。我在这里阅读了有关应用程序调度的信息:http://flask.pocoo.org/docs/patterns/appdispatch/以及关于 Apache2 虚拟主机的信息:http://blog.agdunn.net/?p=162 .

我想在 ec2 实例上运行我的主要网站 www.mydomain.com(这个我已经开始工作了),然后链接到我构建的其他 Flask 应用程序,例如在 www.subdomain.mydomain.com 上。

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

一如既往地非常感谢帮助和建议。

编辑:感谢您的回复

现在我正在尝试运行主站点,这是一个存储在 var/www/mysite 中的 flask 应用程序,远离主域 domain.co.za另一个应用位于 var/www/flaskhello/flaskhello 中,位于子域 hello.domain.co.za 之外。目前,测试子域应用只是一个 flask hello world 应用。我有 apache2 配置文件和 wsgi 文件设置如下。

我遇到的问题是 domain.co.zahello.domain.co.za 都显示了 flaskhello 应用程序。由于某些原因,var/www/flaskhello/flaskhello/index.wsgi 文件似乎优先于 var/www/mysite/index.wsgi,并且只更改了我使 sys.path.insert... 行似乎有效果。

编辑 2

现在我已经阅读了 this Google Groups thread ,这与我尝试做的类似,但使用的是 DJango。仍然没有成功,但这让我们想知道 WSGIApplicationGroup %{GLOBAL} 是否是导致问题的原因。我试过稍微改变一下,但我不完全确定我在做什么,也找不到任何关于如何在 WSGI 中使用 ApplicationGroups 的好文档。

再次感谢您的帮助。

--

我有以下文件

etc/apache2/sites-enabled/019-domain.co.zaetc/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>

etc/apache2/sites-enabled/018-hello.domain.co.zaetc/apache2/sites-available/hello.domain.co.za

<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

var/www/flaskhello/flaskhello/index.wsgi

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

from index import app as application

最佳答案

最终成功了
帮助阅读: Aagudnn.net blog post Graham's answer on Google Groups .

事实证明,我的路径之一是错误的脸红,我仍然需要设置配置文件的 ServerName 和 ServerAlias 部分。此外,我不能为两个单独的 DaemonProcesses 使用相同的名称。

现在一切正常。

我的最终配置文件:

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

<VirtualHost *:80>
ServerName www.hello.domain.co.za
    WSGIDaemonProcess www.hello.domain.co.za
 WSGIScriptAlias / /var/www/flaskhello/flaskhello/index.wsgi
 <Directory /var/www/flaskhello/flaskhello>
        WSGIProcessGroup www.hello.domain.co.za
    Order deny,allow
    Allow from all
 </Directory>
</VirtualHost>

关于python - 在 ec2 实例的不同子域上运行多个 Flask 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14510567/

相关文章:

ASP.NET:模拟 VMWare 上的域

ubuntu - Varnish 似乎在工作,但 max-age=0

python - "import this, that, other, stuff"在做什么?

python - 查找threading.Lock的futex id

python - 如何获取div内的文字

url - 从 URL 获取子域

dns - 使用子域和 CNAME 是否会影响 DNS 查找时间?

codeigniter - CodeIgniter 的重写器不起作用

Laravel 5.4 Backpack 无法删除项目,返回 "403 Forbidden"错误

python - Django:如何将日志级别设置为 INFO 或 DEBUG