2015-02-03 2 views
4

nginx + uwsgi를 사용하여 장고 응용 프로그램을 배포하려고합니다. 가상 환경 (virtualenv)을 생성하고, 가상 환경 (즉, 가상 환경에 국한) 내에 uwsgi와 Django를 모두 설치했습니다. 나는 장고와 uwsgi가 없다. 예외 : 나는 uwsgi --ini project.ini, 나는 데에 '아니오 모듈 이름 django.core.wsgi ImportError를을'실행하면uwsgi + nginx + Django : ImportError : django.core.wsgi라는 모듈이 없습니다.

내 검색을 바탕으로
from django.core.wsgi import get_wsgi_application 
ImportError: No module named django.core.wsgi 
unable to load app 0 (mountpoint='') (callable not found or import error) 
*** no app loaded. going in full dynamic mode *** 
*** uWSGI is running in multiple interpreter mode *** 
spawned uWSGI master process (pid: 5987) 
spawned uWSGI worker 1 (pid: 5988, cores: 1) 
spawned uWSGI worker 2 (pid: 5989, cores: 1) 
spawned uWSGI worker 3 (pid: 5990, cores: 1) 
spawned uWSGI worker 4 (pid: 5991, cores: 1) 

, ENV와 PYTHONPATH 변수를 넣어 권장 ini에서는 Django1.5 이하를 사용하고 있습니다. 그러나 장고 1.7을 사용하고 있으므로 더 이상 배치하지 않았습니다. 내 프로젝트는 다음과 같습니다.

#project.ini file 
[uwsgi] 

# Django-related settings 
# the base directory (full path) 
chdir   = /root/virtualenv/project 
# Django wsgi file 
module   = project.wsgi:application 
# the virtualenv (full path) 
home   = /root/virtualenv 

# process-related settings 
# master 
master   = true 
# maximum number of worker processes 
processes  = 4 
# the socket (use the full path to be safe 
socket   = /root/virtualenv/project/project.sock 
# ... with appropriate permissions - may be needed 
chmod-socket = 666 
chown-socket = root:root 
# clear environment on exit 
vacuum   = true 

# other config options 
uid = root 
gid = root 
processes = 4 
daemonize = /var/log/uwsgi/project.log 
no-site = True 

어떻게 수정합니까? 나는 이미 하루 동안 이걸 붙잡고있다. 모든 아이디어는 대단히 감사하겠습니다. 미리 감사드립니다.

+0

하지만 어떻게 uwsgi를 실행하고 있습니까? virtualenv를 실행하기 전에 활성화해야합니다. –

+0

그건 내 질문이다. uwsgi 실행 방법 ... 가상 환경을 활성화 한 다음 uwsgi를 실행했습니다. 그러나 언급 한 바와 같이 위의 오류가 – jaysonpryde

+0

인데 오류가 발생했을 때 어떻게 했습니까? 입력 한 명령의 정확한 순서를 보여주십시오. –

답변

2

모듈이 프로젝트를 가리키고 있기 때문에 프로젝트 주 응용 프로그램에서 wsgi 파일을 찾을 수 있도록 가리 키지 않아야합니까?

내 INI 파일에 다음과 같이 표시됩니다.

저는 가상 환경 인 django 1.7과 uwsgi를 사용하고 있습니다.

vhost = true 
plugins = python 
socket = /tmp/noobmusic.sock 
master = true 
enable-threads = true 
processes = 2 
wsgi-file = /home/myname/webapps/music/music/music/wsgi.py 
virtualenv = /home/myname/webapps/music/musicenv/ 
chdir = /home/myname/webapps/music/music/ 

이 내가 일반적으로 모드 - WSGI를 사용하고 불행하게도 모든 단계를 기억하지 않는 한 내가 설정 uwsgi 이제까지했습니다 유일한 사이트입니다.

+0

변수는 무엇입니까? – jaysonpryde

+0

# Django wsgi 파일 module = project.wsgi : application –

+0

chdir이/root/virtualenv/project로 설정되어 있기 때문에 내 wsgi 파일을 찾을 수 있다고 생각합니다. 이 디렉토리를 입력하면 wsgi.py는 프로젝트에 있습니다 (예 : /root/virtualenv/project/project/wsgi.py). 고마워요. – jaysonpryde

0

구성에 문제가 보이지 않지만 (이 항목이 좋지 않습니다.) 문제를 현지화하기위한 몇 가지 단계를 조언을 구할 수 있습니다. virtualenv를 사용하지 않고

  • 테스트 uwsgi. 가상 디렉터리는 단지 디렉터리이므로, PYTHONPATH에 추가하고 uwsgi을 실행하십시오. 그 작동하는 경우

    그 전에

    당신은 그 다음 문제는 uwsgi VIRTUALENV 구성에,

    python -c 'import django.core.wsgi'

    을 시도 할 수 있습니다.

  • 테스트 virtualenv. 모듈을 실행하고 모듈을 가져올 수 있는지 확인하십시오.

    작동하는 경우 문제는 uwsgi입니다. 이전 사례로 이동하십시오.

0

비슷한 문제가있었습니다. uwsgi가 virtualenv의 python 버전과 동일한 python 버전 (2/3)을 사용하여 설치되었는지 확인하여 많은 시간이 지나면이를 해결했습니다. 그렇지 않으면 virtualenv를 사용하지 않으므로 'xyz 모듈을 찾을 수 없습니다'라는 오류가 발생합니다. python3에서 uwsgi를 설치하려면 pip3 ('apt-get install python-pip3'과 같이 설치해야 할 수도 있음)을 사용해야합니다. cli 또는 .ini 파일을 통해 uwsgi를 호출 할 때는 전체 경로 (/ bin /가있는 폴더 위의 한 폴더 레벨을 끝내기 때문에 so/example/myvenv/bin/activate는 전체 경로를 의미 함)를 언급하는 virtualenv를 참조해야합니다./example/myvenv.

내 virtualenv 외부에서 uwsgi를 전역 설치했습니다. 위에서 언급 한 내용은 virtualenv 내에 uwsgi를 설치할 때 잘 작동하지만 (아직) 시도하지 않았습니다.

관련 문제