Назад | Перейти на главную страницу

Развертывание приложения Flask с помощью nginx, uWSGI и virtualenv

У меня много проблем с развертыванием приложения Flask на сервере CentOS 6. Я знаю, что по этой проблеме было задано еще несколько вопросов, но мне пока не удалось.

Описание

Python по умолчанию - Python 2.6.6
версия nginx - 1.0.15
Версия uWSGI - 1.2.5
Моя папка virtualenv - /home/me/dev/.venv
Моя виртуальная версия Python - 2.7.3 (я хочу запустить Python 2.7.3 с uWSGI)
Мой app.run() Файл Python - /home/me/dev/runserver.py
Мои файлы, модули, классы и т. Д. Находятся в / home / me / dev / contacts

Что я пробовал

Вот соответствующая часть nginx.conf:

server {
listen 80;
    access_log off;
    # ...

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3031;
    }
}

Вот полный файл runserver.py:

from contacts import app

if __name__ == "__main__":
    app.run()

Согласно документации, я попытался выполнить следующую команду:

uwsgi -H .venv/ -s 127.0.0.1:3031 -w runserver:app

Однако у меня есть две проблемы:
- uWSGI все еще работает на версии Python 2.6.6
- У меня есть 'import site' failed ошибка
- У меня есть ImportError: No module named flask ошибка, которая, скорее всего, связана с предыдущей ошибкой

Я также попробовал следующую команду из руководства по быстрому запуску на официальном сайте uWSGI:

uwsgi --socket 127.0.0.1:3031 --file runserver.py --callable app --processes 2 -H .venv/

Но у меня точно такие же проблемы, как и раньше.

Я полностью потерялся в данный момент, я пробовал другие команды, но не могу понять, что еще мне делать.

Что я мог сделать, чтобы запустить uWSGI из моей виртуальной среды?

редактировать : Хорошо, поэтому после нескольких других попыток мне удалось запустить свое приложение, установив uWSGI в моем виртуальном окружении и запустив его из активированной среды (команды для тех, кто может наткнуться на мои сообщения и найти приемлемое решение):

$ . .venv/bin/activate
$ which uwsgi
/home/me/dev/.venv/bin/uwsgi
$ uwsgi -s :3031 -w runserver:app -H .venv/

Должен ли я всегда запускать uwsgi из виртуальной среды? Нет более чистого способа сделать это?

Я всегда устанавливаю uwsgi в свой virtualenv. Это намного чище, и если вы запустите несколько приложений, вы можете установить uwsgi несколькими способами.

Я думаю, что вы спотыкаетесь выше, неправильно настроив свой путь к python, поэтому он не знает, где установлена ​​фляга, поскольку он не ищет ее в вашем virtualenv. То же самое и с файлом вашего сайта.