Im đang cố gắng thiết lập dự án django của tôi trên máy chủ dàn dựng với nginx, virtualenv và uwsgi, nhưng tôi vẫn nhận được lỗi nhập mô-đun wsgi.Django, Virtualenv, nginx + uwsgi mô-đun nhập khẩu lỗi wsgi
Nếu có cộng đồng mà tôi có thể tìm thấy câu trả lời ở đây ... Xin cảm ơn tất cả trước.
Đây là file cấu hình của tôi:
uwsgi.py về dự án django tôi:
import os
import sys
import site
site.addsitedir(os.path.join(os.environ['WORKON_HOME'],'project/lib/python2.6/site-packages'))
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../../'))
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), '../../'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.configs.staging.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Nginx Cấu hình
# nginx configuration for project.maumercado.com
server {
server_name project.maumercado.com;
access_log /home/ubuntu/logs/project/nginx/access.log;
error_log /home/ubuntu/logs/project/nginx/error.log;
location/{
uwsgi_pass unix:/tmp/uwsgi.sock;
include /etc/nginx/uwsgi_params;
}
location /static {
root /home/ubuntu/django-projects/project/project/media;
}
location /media {
root /home/ubuntu/django-projects/project/project/media;
}
}
và uwsgi.conf tôi
# file: /etc/init/uwsgi.conf
description "uWSGI starter"
start on (local-filesystems and runlevel [2345])
stop on runlevel [016]
respawn
# home - is the path to our virtualenv directory
# pythonpath - the path to our django application
# module - the wsgi handler python script
exec /home/ubuntu/ve/project/bin/uwsgi \
--uid www-data \
--pythonpath /home/ubuntu/django-projects/project/project/configs/staging/ \
--socket /tmp/uwsgi.sock \
--chmod-socket \
--module wsgi \
--logdate \
--optimize 2 \
--processes 2 \
--master \
--logto /home/ubuntu/logs/project/uwsgi.log
Nginx lo gs không nêu bất cứ điều gì ngoài một 500 trong access.log, vì vậy heres uwsgi.log:
Mon Feb 6 13:58:23 2012 - *** Starting uWSGI 1.0.2.1 (32bit) on [Mon Feb 6 13:58:23 2012] ***
Mon Feb 6 13:58:23 2012 - compiled with version: 4.4.5 on 06 February 2012 12:32:36
Mon Feb 6 13:58:23 2012 - current working directory:/
Mon Feb 6 13:58:23 2012 - detected binary path: /home/ubuntu/ve/project/bin/uwsgi
Mon Feb 6 13:58:23 2012 - setuid() to 1000
Mon Feb 6 13:58:23 2012 - your memory page size is 4096 bytes
Mon Feb 6 13:58:23 2012 - chmod() socket to 666 for lazy and brave users
Mon Feb 6 13:58:23 2012 - uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3
Mon Feb 6 13:58:23 2012 - Python version: 2.6.6 (r266:84292, Sep 15 2010, 16:02:57) [GCC 4.4.5]
Mon Feb 6 13:58:23 2012 - Set PythonHome to /home/ubuntu/ve/project
Mon Feb 6 13:58:23 2012 - Python main interpreter initialized at 0x9a9d740
Mon Feb 6 13:58:23 2012 - your server socket listen backlog is limited to 100 connections
Mon Feb 6 13:58:23 2012 - *** Operational MODE: preforking ***
Mon Feb 6 13:58:23 2012 - added /home/ubuntu/django-projects/project/ to pythonpath.
ImportError: No module named wsgi
Mon Feb 6 13:58:23 2012 - unable to load app 0 (mountpoint='') (callable not found or import error)
Mon Feb 6 13:58:23 2012 - *** no app loaded. going in full dynamic mode ***
Mon Feb 6 13:58:23 2012 - *** uWSGI is running in multiple interpreter mode ***
Mon Feb 6 13:58:23 2012 - spawned uWSGI master process (pid: 551)
Mon Feb 6 13:58:23 2012 - spawned uWSGI worker 1 (pid: 588, cores: 1)
Mon Feb 6 13:58:23 2012 - spawned uWSGI worker 2 (pid: 589, cores: 1)
Tôi không biết nếu cách tôi lập dự án của tôi có bất cứ điều gì để làm với nó, nhưng dù sao heres các quản lý tập tin mà tôi sử dụng để chuyển hướng các tiện ích django:
manage.sh
#!/bin/bash
python ./project/configs/${DEPLOYMENT_TARGET:="common"}/manage.py $*
và chỉ trong trường hợp này là làm thế nào tôi đã thiết lập một dự án django:
project
|-manage.sh -> this fellow is redirected to settings.py (production, common or staging)
|-requirements.txt
|-README
|-dashbard.py
|-project.sqlite
|- project/
|- apps
|- accounts
|-other internal apps
|- configs
|- common -> for local development
|-settings.py
|-manage.py
|-urls
|-staging
|-manage.py
|-settings.py
|-wsgi.py
|-logging.conf
|-production
|-manage.py
|-settings.py
|-wsgi.py
|-logging.conf
|-media
|-templates
Điều tôi làm cho nhiều dự án là sử dụng gói Debian uwsgi. Nó đi kèm với init script, một số tệp cài đặt .ini mặc định và quản lý từng dự án. Bạn chỉ cần cấu hình cho mỗi tệp và một ổ cắm khác nhau cho mỗi tệp (được xử lý theo mặc định) và tất cả chúng sẽ chạy độc đáo trên cùng một hệ thống.Ngay cả khi bạn không sử dụng Debian, bạn vẫn có thể sử dụng tập lệnh init và bố cục cấu hình từ gói Debian: http://ftp.de.debian.org/debian/pool/main/u/uwsgi/uwsgi_1.2.3 + dfsg.orig.tar.gz – freb