Как использовать приложение Flask в Webfaction?

Кто-нибудь знает, как развернуть простое приложение Flask на Webfaction? Я знаю, что Webfaction поддерживает mod_wsgi, и я читаю руководство на сайте Flask, но все же я не могу заставить свое приложение работать. У кого-нибудь есть рабочая конфигурация?

UPDATE, чтобы ответить на комментарий Грэма Дамплтона.

Я получаю ошибку внутреннего сервера 500. Apache не обнаруживает ошибок в журналах. WSGI script выполняется и, кажется, правильно создает приложение, но я все равно получаю ошибку 500.

Спасибо.

Ответ 1

Я начал работать со следующей процедурой:

  • создать и приложение с именем 'myapp' типа mod_wsgi 3.3/Python 2.7. Webfaction создаст следующие папки:

    myapp
         |- apache2
         |- htdocs
    
  • Webfaction также автоматически создаст простой script index.py в вашем каталоге htdocs. Проверьте, работает ли образец script в корне вашего вновь созданного приложения (чтобы сделать тонким на Webfaction, вам нужно "установить" приложение на веб-сайт). Если все ОК изменит script удаление содержимого и добавит:

    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>
    
  • Перезапустите apache2

Ответ 2

Вам нужно настроить приложение "Пользовательское приложение (прослушивание порта)". Запишите порт, который назначен. Затем в вашем флеш-коде вам нужно поместить hardcode в порт:

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

Если вы замените XXXXXXX портом, который произвольно назначен вашему пользовательскому приложению.

Надеюсь, что это поможет.

EDIT:

Пожалуйста, используйте Raben Answer, этот способ не должен использоваться в Production.