7

I am trying to setup my server with a nginx to uwsgi to django stack, but I am having problems with the uwsgi part.

When I run uwsgi and pass in all the parameters on the command line, it works properly. My uwsgi call looks like this:

uwsgi --socket /tmp/uwsgi.sock --chdir ~/web/test.com --wsgi-file ~/web/test.com/store/wsgi.py --virtualenv ~/web/test.com/testenv --chmod-socket=666 --enable-threads

I then copied those parameters into an ini file that looks like this:

# django.ini file
[uwsgi]
master          = true 
socket          = /tmp/uwsgi.sock
chmod-socket    = 666
chdir           = /home/ubuntu/web/test.com
wsgi_file       = /home/ubuntu/web/test.com/store/wsgi.py
virtualenv      = /home/ubuntu/web/test.com/causumptionenv
vacuum          = true
enable-threads  = true

However, when I run uwsgi with the django.ini file, I get this output.

[uWSGI] getting INI configuration from django.ini
*** Starting uWSGI 1.9.11 (64bit) on [Fri May 31 14:52:44 2013] ***
compiled with version: 4.6.3 on 30 May 2013 15:40:11
os: Linux-3.2.0-40-virtual #64-Ubuntu SMP Mon Mar 25 21:42:18 UTC 2013
nodename: ip-10-245-64-211
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /home/ubuntu/web/test.com
detected binary path: /usr/local/bin/uwsgi
your processes number limit is 4594
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
uwsgi socket 0 bound to UNIX address /tmp/uwsgi.sock fd 3
Python version: 2.7.3 (default, Aug  1 2012, 05:25:23)  [GCC 4.6.3]
Set PythonHome to /home/ubuntu/web/test.com/testenv
Python main interpreter initialized at 0xcb4dd0
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 145440 bytes (142 KB) for 1 cores
*** Operational MODE: single process ***
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 15976)
spawned uWSGI worker 1 (pid: 15977, cores: 1)
--- no python application found, check your startup logs for errors ---

Most notable are the lines "no app loaded. going in full dynamic mode and no python application found, check your startup logs for errors

So my question is, whats the difference between passing the parameters on the command line and passing them through an ini file?

OpIvy
  • 113
  • 1
  • 1
  • 5
  • I ended up solving it by changing the 'wsgi_file' line to be 'module = store.wsgi:application'. Whats really strange is that the module parameter would not work when passing it on the command line. – OpIvy May 31 '13 at 21:18

4 Answers4

3

It 's wsgi-file not wsgi_file, command line options and file options are always the same

roberto
  • 1,812
  • 12
  • 8
  • 1
    Well thats embarrassing. I guess this is the one time that copy/paste would have actually saved me. – OpIvy Jun 02 '13 at 18:09
2

aptitude install uwsgi-plugin-python

and then restart uwsgi you will see the correct page.

watsy0007
  • 21
  • 1
2

Just to add to the overall confusion concerning uwsgi & django here is an ini file that works for me.

It works with http & http-socket but NOT socket.

it is designed to run with multiple settings files in a directory settings a'la two scoops of django multiple deployment files ( which is why I was testing)

so ---/velocity is the 'home' project directory where manage.py lives. /velocity/velocity/settings/dev_settings_chris_l.py is the actual settings file

THis all needs to be done because you need to be able to stear the correct settings files from outside of the django code and thus can't have lines setting DJANGO_SETTINGS_MODULE inside wsgi.py or indeed manage.py (use django-admin)

There is a lot of discussion about this sort of thing with various error messages reported. Hopefully althou' not entirely relevant to the question it might help someone.

Django 1.8

[uwsgi]
http-socket = 127.0.0.1:8004 
buffer-size = 32768
processes = 4
threads = 2
pythonpath = .. 
env = DJANGO_SETTINGS_MODULE=velocity.settings.dev_chris_l
module=velocity.wsgi:application
home = /home/chris/.virtualenvs/velocity 
plugin = python,http 
show-config 
stats =  127.0.0.1:9191
chdir = /home/chris/development/webfuels/velocity
wyleu
  • 21
  • 3
0

Check if u deleted any __init__.py file from the Django apps. As Django uses them to know which folders are apps, so they are kind of important.

  • you mean `__init__.py` - and yes this is a possible reason. Deleted is one possibility, forgotten to add the file to a module folder is the other (my case). Saved me a lot of time. Thank you. – Mario Mar 04 '20 at 00:28
  • yes and that what I typed the problem is if you added double underscores before and after any word it will be BOLD like this __bold__ and I forgot to add the code mark `__bold__` – Ibrahim Tayseer Mar 13 '20 at 07:25
  • Please vote up as my answer may help anyone who is missing or deleted these files by mistake. @Mario – Ibrahim Tayseer Mar 13 '20 at 07:28
  • I already upvoted it. – Mario Mar 13 '20 at 15:45