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

Python 如何在Webfaction上部署Flask应用程序?,python,flask,Python,Flask,有人知道如何在WebPosition上部署一个简单的Flask应用程序吗? 我知道Web派系支持mod_wsgi,我在Flask网站上阅读了指南,但我仍然无法让我的应用程序正常工作。有人有工作配置吗 更新以回答Graham Dumpleton的评论 我得到一个500内部服务器错误。Apache在日志中没有显示任何错误。WSGI脚本已经执行,并且似乎正确地创建了应用程序,但我一直收到一个500错误 谢谢。您需要设置一个“自定义应用程序(侦听端口)”应用程序。记下分配的端口。然后,在烧瓶代码中,需要

有人知道如何在WebPosition上部署一个简单的Flask应用程序吗? 我知道Web派系支持mod_wsgi,我在Flask网站上阅读了指南,但我仍然无法让我的应用程序正常工作。有人有工作配置吗

更新以回答Graham Dumpleton的评论

我得到一个500内部服务器错误。Apache在日志中没有显示任何错误。WSGI脚本已经执行,并且似乎正确地创建了应用程序,但我一直收到一个500错误

谢谢。

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

if __name__ == __main__:
    app.run(host='0.0.0.0' port=XXXXXXX)
其中,您使用随机分配给自定义应用程序的端口替换XXXXXXX

希望有帮助

编辑:


请使用,这种方法不应在生产中使用。

我通过以下步骤获得了它:

  • 创建并安装名为“myapp”的应用程序,类型为mod_wsgi 3.3/Python 2.7。Webfaction将创建以下文件夹:

    myapp
         |- apache2
         |- htdocs
    
  • WebPosition还将在
    htdocs
    目录中自动创建一个简单的脚本
    index.py
    。检查示例脚本在访问新创建的应用程序根目录时是否正常工作(要在Web上进行精简,需要在网站上“装载”应用程序)。如果一切正常,请修改脚本删除内容并添加:

    from myapp import app as application
    
  • apache2/conf/httpd.conf
    中添加以下行:

    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>
    
    WSGIPythonPath/home/username/webapps/myapp/htdocs/
    #如果不指定下一个指令,应用程序*将*工作,但您将
    #请参见所有子目录路径中的index.py
    WSGIScriptAlias//home/username/webapps/myapp/htdocs/index.py
    AddHandler wsgi script.py
    重新启动发动机
    重写基/
    WSGIScript正在重新加载
    
  • 重新启动apache2


您得到的实际错误是什么?请尝试在Flask中打开debug。我忘了怎么做了,所以你可能想通过pocco irc频道提问。如果您对单个进程使用mod_wsgi守护程序模式,您还可以打开Flask调试器。您是否曾经使用过该调试器?乔什·芬尼的答案对你有用吗?不建议在生产中使用app.run。这很容易,而且会很快完成工作,但是当你的项目成熟时,你应该切换到类似mod_wsgi的东西。步骤2:通过控制面板“添加网站”指向此应用程序。同意Joe的观点,这对生产不利。app.run()应仅用于开发。请注意,myapp.py必须位于python模块搜索路径中。只需将以下代码添加到index.py(如果myapp.py存储在index.py旁边):
import sys.path.append('/home//webapps//htdocs')
实际上,在不调整
sys.path
的情况下,我得到了由Python导入错误引起的500个内部错误,这由
/home//logs/user/error\uuz.log
中的Apache日志文件指示。