2010-07-18 81 views
11

任何人都知道如何在Webfaction上部署一個簡單的Flask應用程序? 我知道Webfaction支持mod_wsgi,我閱讀了Flask站點上的指南,但仍然無法讓我的應用程序工作。任何人都有一個工作配置?如何在Webfaction上部署Flask應用程序?

UPDATE回答Graham Dumpleton的評論。

我得到一個500內部服務器錯誤。 Apache在日誌中不顯示任何錯誤。 WSGI腳本被執行並似乎正確地創建應用程序,但是我一直收到500錯誤。

謝謝。

+1

什麼是實際的錯誤你越來越多了? – 2010-07-19 01:47:55

+0

嘗試開啓Flask中的調試。我忘了如何做到這一點,所以你可能想問#pocco irc頻道。如果你在一個進程中使用mod_wsgi守護進程模式,你也可以打開Flask調試器。 – 2010-07-19 11:35:14

+0

你有沒有得到這個工作? JoshFinnie的答案是否適合你? – 2011-02-21 02:15:06

回答

16

我得到它通過以下步驟工作:

  • 創建和應用類型的名爲 'MYAPP' mod_wsgi的3.3/Python 2.7版。 Webfaction將創建下列文件夾:

    myapp 
        |- apache2 
        |- htdocs 
    
  • Webfaction也會自動在您的htdocs目錄下創建一個簡單的腳本index.py。檢查示例腳本是否工作訪問新創建的應用程序的根目錄(在Webfaction上進行細化,您需要在網站上「掛載」應用程序)。如果它都可以修改腳本刪除內容並添加:

    from myapp import app as application 
    
  • apache2/conf/httpd.conf添加follwing線:

    WSGIPythonPath /home/username/webapps/myapp/htdocs/ 
    #If you do not specify the next directive the app *will* work but you will 
    #see index.py in the path of all subdir 
    WSGIScriptAlias//home/username/webapps/myapp/htdocs/index.py 
    
    
    <Directory /home/username/webapps/myapp/htdocs> 
        AddHandler wsgi-script .py 
        RewriteEngine on 
        RewriteBase/
        WSGIScriptReloading On 
    </Directory> 
    
  • 重新啓動的Apache2

+7

請注意,myapp.py必須位於python模塊搜索路徑中。您可以簡單地通過將以下代碼添加到index.py來實現該目的(如果myapp.py存儲在index旁邊。py): 'import sys sys.path.append('/ home//webapps//htdocs')' – 2011-10-07 07:47:57

+0

其實,沒有調整'sys.path',我得到了500個內部錯誤通過'/ home/<您的用戶名>/logs/user/error_ .log'中的Apache日誌文件指示的Python ImportError。 – 2011-10-07 07:54:27

1

您需要設置「自定義應用程序(偵聽端口)」應用程序。記下分配的端口。然後在你的代碼瓶,你需要把硬編碼的端口:

if __name__ == __main__: 
    app.run(host='0.0.0.0' port=XXXXXXX) 

如果你替換XXXXXXX與被隨機分配到您的自定義應用程序的端口。

希望有所幫助。

編輯:

請使用Raben's Answer,這種方式不應被用於生產。

+0

不推薦使用app.run進行生產。這很容易,而且會很快完成工作,但是當你的項目成熟時,你應該切換到類似mod_wsgi的東西。 – Joe 2011-09-10 17:57:29

+0

第2步:通過控制面板「添加網站」指向這個應用程序。 – Shekhar 2011-12-14 10:02:53

+0

與喬同意,這對生產不利。 app.run()只能用於開發。 – 2012-04-15 17:30:00