Я пытаюсь заставить uwsgi работать в сочетании с nginx для приложения фляги. Это ini-файл UWSGI:
[uwsgi]
socket = 127.0.0.1:8001
processes = 4
module = run:manager
virtualenv = /var/www/test/venv
chdir = /var/www/test
logto = uwsgi.log
В каталоге / var / www / test У меня есть этот файл run.py
from flask.ext.migrate import Migrate, MigrateCommand
from flask.ext.script import Manager
from app import app, db
if __name__ == "__main__":
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
manager.run()
Когда я запускаю его, я получаю эту ошибку:
Set PythonHome to /var/www/test/
ImportError: No module named site
Кто-нибудь может сказать мне, где я ошибаюсь, пожалуйста?
В моем случае, будучи новичком в uwsgi, я не понимал, где по умолчанию находятся virtualenvs (в каталоге ~ / .virtualkenvs). Для моего приложения moztrap подходящей конфигурацией оказалась:
[uwsgi]
vhost = true
plugins = python
socket = /tmp/testa.sock
master = true
enable-threads = true
module = wsgi:application
processes = 2
wsgi-file = /home/ianh/moztrap/moztrap/deploy/wsgi.py
virtualenv = /home/ianh/.virtualenvs/moztrap
chdir = /home/ianh/moztrap
touch-reload = /home/ianh/moztrap/reload
Я возился с модулем и virtualenv, и эта комбинация сработала для меня. Обратите внимание, что файл wsgi.py содержит следующее.
"""WSGI entry-point for MozTrap."""
import os
import sys
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, base_dir)
# Set default settings and instantiate application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "moztrap.settings.default")
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
Я также попытался загрузить uwsgi с помощью apt-get, затем pip, но в конце концов не нужно было создавать символическую ссылку, поэтому я предполагаю, что он использует один установленный apt-get.
В основном благодаря следующим (и нескольким другим, которых я не могу поблагодарить из-за отсутствия очков репутации):