如何在Webfaction上部署Flask应用程序?

问题描述:

任何人都知道如何在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

我得到它通过以下步骤工作:

  • 创建和应用类型的名为 '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

您需要设置“自定义应用程序(侦听端口)”应用程序。记下分配的端口。然后在你的代码瓶,你需要把硬编码的端口:

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