Django, Virtualenv, nginx + uwsgi import module wsgi error

I am trying to set up a django project on an intermediate server with nginx, virtualenv and uwsgi, but I keep getting the import module wsgi error.

If theres a community, I can find the answer here ... Thank you all in advance.

These are my configuration files:

uwsgi.py in my django project:

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 configuration

 # 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; } } 

and, my uwsgi.conf

 # 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 logs contain nothing but 500 in access.log, therefore herw 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) 

I don’t know if anything related to my project has anything to do with it, but in any case the control file is used, which I use to redirect django utilities:

manage.sh

 #!/bin/bash python ./project/configs/${DEPLOYMENT_TARGET:="common"}/manage.py $* 

and just in case, as I created the django project:

 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 
+6
source share
2 answers

I updated wsgi.py to look like this:

 import os import sys import site site.addsitedir(os.path.join('/home/ubuntu/ve','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() 

Now the uwsgi.conf file looks like this:

 # 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 ubuntu \ --pythonpath /home/ubuntu/django-projects/project/project/configs/staging \ -H /home/ubuntu/ve/project \ --socket /tmp/uwsgi.sock \ --chmod-socket 644 \ --module wsgi \ --logdate \ --optimize 2 \ --processes 2 \ --master \ --logto /home/ubuntu/logs/project/uwsgi.log 

And my available nginx file looks like this:

 # file: /etc/nginx/sites-available/yourdomain.com # nginx configuration for project.maumercado.com server { listen 80; charset utf-8; server_name project.maumercado.com; access_log /home/ubuntu/logs/project/nginx/access.log; error_log /home/ubuntu/logs/project/nginx/error.log; location ^~ /cache/ { root /home/ubuntu/django-projects/project/project/media; expires max; } location / { uwsgi_pass unix:/tmp/uwsgi.sock; include /etc/nginx/uwsgi_params; } } 

And now it works fine, I had some style problems due to the fact that some strange characters were used in the css files.

Now I would like to know what should I do when I need to run more projects on one server using uwsgi?

+5
source

be sure to add the directory containing the wsgi.py file in pythonpath (you can specify an unlimited sequence of pythonpath directives)

+1
source

Source: https://habr.com/ru/post/907782/


All Articles