我正在尝试让 uwsgi 与 nginx 结合使用以开发 flask 应用程序。这是 UWSGI ini 文件:
[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/测试我有这个文件运行.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
谁能告诉我我哪里错了?
答案1
就我而言,由于我是 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
我尝试了 module 和 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()
我也尝试过使用 apt-get 然后 pip 加载 uwsgi,但最后并不需要做符号链接 - 所以我推测它使用的是 apt-get 安装的那个。
主要感谢以下人员(以及其他一些由于声望值不足而无法感谢的人):
- http://eshlox.net/en/2012/09/11/nginx-uwsgi-virtualenv-and-django-ubuntu-1204/- 插座已安装,但必须进行调整
- https://stackoverflow.com/questions/22798105/uwsgi-cannot-find-python-module- 正确使用 home/virtualenv 指向 .virtualenv/project 目录