2013-01-24 83 views
2

我有一個運行使用Flask構建的動態網站的Amazon EC2實例。在ec2實例的不同子域上運行多個Flask應用程序

我不確定從同一ec2實例運行不同webapps的最佳方式是什麼。我已閱讀了有關應用程序調度的信息:http://flask.pocoo.org/docs/patterns/appdispatch/以及有關Apache2虛擬主機的信息:http://blog.agdunn.net/?p=162

我想運行我的主要網站www.mydomain.com關閉EC2實例(這我已經工作),然後鏈接到其他應用程序瓶我已經建立,如在www.subdomain.mydomain.com上。

可以這樣做無論是使用虛擬主機或WSGI層上使用應用程序的調度?如果是這樣,哪個更好?

一如既往,非常感謝幫助和建議。

編輯:感謝您的答覆

現在我想運行的主要場所,這是存儲在var/www/mysite燒瓶中的應用程序,關閉主域domain.co.za和其他應用程序,這是在var/www/flaskhello/flaskhello,關閉子域hello.domain.co.za。目前,測試子域名應用程序只是一個瓶頸世界的應用程序。我有如下指定的apache2配置文件和wsgi文件。

我遇到的問題是flaskhello應用程序顯示從domain.co.zahello.domain.co.za。出於某種原因,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 

回答

1

這是絕對可行的。你當然需要使用虛擬主機,如果你打算使用不同的域名,並且你可能想查看virtualenv來分離應用程序的python堆棧(甚至是LXC容器以增加安全性)。如果您打算使用不同的應用程序,那麼它們將具有單獨的調度名稱空間,因此您將不得不使用重定向,而不使用url_for作爲參數,但使用實際的硬鏈接url。這是非常典型的設置,它應該是很容易可行的 - 回到美國,當你遇到第一個具體問題:)

+0

謝謝回覆。我已經編輯了原始答案,並在嘗試配置apache時遇到了更具體的問題。 – Sixhobbits

2

得到這個工作最終
幫助閱讀: Aagudnn.net blog post Graham's answer on Google Groups

事實證明,我的一個路徑是錯誤的blush,我仍然需要設置配置文件的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> 
相關問題