У меня много проблем с развертыванием приложения 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. То же самое и с файлом вашего сайта.