Saw the slice from Bruce.  I was already there.

I have spent some 14 hours on this.  I have read the docs on many of the 
uwsgi options.  I have looked more carefully at the nginx docs.  I now get 
some diagnostics that tell me much more about what is going on.  Along the 
way I have learned to hand-author init scripts (somewhat).

Here is what I found out and have done.
1. I believe that cherokee may have installed uwsgi itself or maybe not. 
 But, I believe I had more than one version of uwsgi installed and 
criss-crossing symlinks.  Plus, the version that apt-get retrieves for 
ubuntu 11.10 is ancient.
2. I completed removed old installs of uwsgi.
3. I installed uwsgi 1.2.3 directly from unbit.it using pip. Unfortunately, 
this only builds the binary.  You get no config and no init script.  But, 
you do get a clean up-to-date binary.  That is something.
4. Looking at a clean nginx init and several examples of uwsgi init's, I 
created one.  It evolved and I believe it works. 
5. I created a more complete web2py.xml file for uwsgi.  There is a lot of 
conflicting information flloating around about this that is quite out of 
date (Bruce Wade got a bit of it more up to date).
6. I cleaned up my nginx and made sure it served static files so at least I 
could be sure that nginx was basically working before I changed the virtual 
server definitions to enable uwsgi and web2py.  (It did indeed serve 
"hello, world!")

But, I still don't think I am that much closer to having this work.  I no 
longer get 502 bad gateway. I get 504 gateway timeout.

Here is my uwsgi log:

*** Starting uWSGI 1.2.3 (32bit) on [Fri May 18 09:27:27 2012] ***
> compiled with version: 4.6.1 on 17 May 2012 23:33:21
> detected number of CPU cores: 4
> current working directory: /
> writing pidfile to /var/run/uwsgi.pid
> detected binary path: /usr/local/bin/uwsgi
> uWSGI running as root, you can use --uid/--gid/--chroot options
> setgid() to 33
> setuid() to 33
> your memory page size is 4096 bytes
> detected max file descriptor number: 1024
> lock engine: pthread robust mutexes
> uwsgi socket 0 bound to TCP address 127.0.0.1:9001 fd 3
> Python version: 2.7.2+ (default, Oct  4 2011, 20:29:37)  [GCC 4.6.1]
> *** Python threads support is disabled. You can enable it with 
> --enable-threads ***
> Python main interpreter initialized at 0x9829bd8
> your server socket listen backlog is limited to 100 connections
> *** Operational MODE: no-workers ***
> added /var/web2py/ to pythonpath.
> mounting /var/web2py/wsgihandler.py on /
> WSGI app 0 (mountpoint='/') ready in 0 seconds on interpreter 0x9829bd8 
> pid: 25731 (default app)
> spawned uWSGI master process (pid: 25731)


The fact that there are no workers is obviously wrong.  I requested 4 
processes.   I sort of wonder about the working directory.  But, I am 
launching uwsgi and python and pointing to wsgihandler.py.

Here is the web2py.xml.  It looks A LOT different from anything in the 
cookbook or slices:

<uwsgi>
>     <uid>33</uid>
>     <gid>33</gid>
>     <pidfile>/var/run/uwsgi.pid</pidfile>
>     <pythonpath>/var/web2py/</pythonpath>
>     <daemonize>/var/log/uwsgi.log</daemonize>
> <socket>127.0.0.1:9001</socket>
>     <processes>4</processes>
>     <master/>
>     <mount>/=/var/web2py/wsgihandler.py</mount>
>     <memory-report/>
> </uwsgi>


Here is the config for nginx (please ignore the port 443 setup--I just 
wanted to win one battle before moving on...):

server {
> listen 80;
> server_name $hostname;
> location ~* /(\w+)/static/ {
>             root /var/web2py/applications/;
>             }
>     location / {
>         uwsgi_pass          127.0.0.1:9001;
>         include             uwsgi_params;
>         }
>     }
> server {
> listen 443;
> server_name $hostname;
> ssl on;
> ssl_certificate /etc/nginx/ssl/web2py.crt;
> ssl_certificate_key /etc/nginx/ssl/web2py.key;
> }

 

One more suspicious symptom is that when I look at running processes, I 
only see the one master for uwsgi:

UID        PID  PPID  C STIME TTY          TIME CMD
> root         1     0  0 Mar05 ?        00:00:09 /sbin/init
> root         2     0  0 Mar05 ?        00:00:00 [kthreadd]
> root         3     2  0 Mar05 ?        00:00:32 [ksoftirqd/0]
> root         5     2  0 Mar05 ?        00:00:00 [kworker/u:0]
> root         6     2  0 Mar05 ?        00:00:00 [migration/0]
> root         7     2  0 Mar05 ?        00:00:00 [migration/1]
> root         8     2  0 Mar05 ?        00:00:00 [kworker/1:0]
> root         9     2  0 Mar05 ?        00:00:40 [ksoftirqd/1]
> root        10     2  0 Mar05 ?        00:00:00 [migration/2]
> root        11     2  0 Mar05 ?        00:00:00 [kworker/2:0]
> root        12     2  0 Mar05 ?        00:00:31 [ksoftirqd/2]
> root        13     2  0 Mar05 ?        00:00:00 [migration/3]
> root        14     2  0 Mar05 ?        00:00:00 [kworker/3:0]
> root        15     2  0 Mar05 ?        00:00:40 [ksoftirqd/3]
> root        16     2  0 Mar05 ?        00:00:00 [cpuset]
> root        17     2  0 Mar05 ?        00:00:00 [khelper]
> root        18     2  0 Mar05 ?        00:00:00 [kworker/u:1]
> root        22     2  0 Mar05 ?        00:00:00 [xenwatch]
> root        23     2  0 Mar05 ?        00:00:00 [xenbus]
> root       149     2  0 Mar05 ?        00:00:18 [sync_supers]
> root       151     2  0 Mar05 ?        00:00:00 [bdi-default]
> root       153     2  0 Mar05 ?        00:00:00 [kblockd]
> root       163     2  0 Mar05 ?        00:00:00 [md]
> root       247     2  0 Mar05 ?        00:00:00 [rpciod]
> root       248     2  0 Mar05 ?        00:02:37 [kworker/2:1]
> root       280     2  0 Mar05 ?        00:00:01 [kswapd0]
> root       281     2  0 Mar05 ?        00:00:00 [ksmd]
> root       282     2  0 Mar05 ?        00:00:00 [fsnotify_mark]
> root       286     2  0 Mar05 ?        00:00:00 [ecryptfs-kthrea]
> root       288     2  0 Mar05 ?        00:00:00 [nfsiod]
> root       291     2  0 Mar05 ?        00:00:00 [jfsIO]
> root       292     2  0 Mar05 ?        00:00:00 [jfsCommit]
> root       293     2  0 Mar05 ?        00:00:00 [jfsCommit]
> root       294     2  0 Mar05 ?        00:00:00 [jfsCommit]
> root       295     2  0 Mar05 ?        00:00:00 [jfsCommit]
> root       296     2  0 Mar05 ?        00:00:00 [jfsSync]
> root       297     2  0 Mar05 ?        00:00:00 [xfs_mru_cache]
> root       298     2  0 Mar05 ?        00:00:00 [xfslogd]
> root       299     2  0 Mar05 ?        00:00:00 [xfsdatad]
> root       300     2  0 Mar05 ?        00:00:00 [xfsconvertd]
> root       301     2  0 Mar05 ?        00:00:00 [glock_workqueue]
> root       302     2  0 Mar05 ?        00:00:00 [delete_workqueu]
> root       303     2  0 Mar05 ?        00:00:00 [gfs_recovery]
> root       304     2  0 Mar05 ?        00:00:00 [crypto]
> root       866     2  0 Mar05 ?        00:00:00 [khvcd]
> root       968     2  0 Mar05 ?        00:01:43 [kworker/0:1]
> root       981     2  0 Mar05 ?        00:00:00 [kpsmoused]
> root       982     2  0 Mar05 ?        00:05:35 [kworker/1:1]
> root      1009     2  0 Mar05 ?        00:01:37 [kjournald]
> root      1038     1  0 Mar05 ?        00:00:00 upstart-udev-bridge 
> --daemon
> root      1913     2  0 Mar05 ?        00:03:32 [kworker/3:1]
> root      1933     1  0 Mar05 ?        00:00:00 upstart-socket-bridge 
> --daemon
> root      1974     1  0 Mar05 ?        00:00:00 dhclient3 -e IF_METRIC=100 
> -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases -1 
> eth0
> root      1995     1  0 Mar05 ?        00:01:25 /usr/sbin/sshd -D
> syslog    2029     1  0 Mar05 ?        00:10:58 rsyslogd -c5
> 102       2032     1  0 Mar05 ?        00:00:00 dbus-daemon --system 
> --fork --activation=upstart
> daemon    2079     1  0 Mar05 ?        00:00:00 atd
> root      2080     1  0 Mar05 ?        00:00:11 cron
> root      2201     2  0 Mar05 ?        00:00:39 [flush-202:0]
> root      2268     1  0 Mar05 hvc0     00:00:00 /sbin/getty -8 38400 hvc0
> ntp       2318     1  0 Mar05 ?        00:06:18 /usr/sbin/ntpd -p 
> /var/run/ntpd.pid -g -u 105:110
> root     17087     2  0 Apr07 ?        00:00:54 [kworker/0:2]
> root     22656  1995  0 05:11 ?        00:00:01 sshd: root@pts/0    
> root     22671 22656  0 05:11 pts/0    00:00:00 -bash
> root     23855  1995  0 06:55 ?        00:00:00 sshd: root@notty    
> root     23870 23855  0 06:55 ?        00:00:00 
> /usr/lib/openssh/sftp-server
> www-data 25731     1  0 09:27 ?        00:00:00 /usr/local/bin/uwsgi -x 
> /etc/uwsgi/uwsgi-conf.xml -p /var/run/uwsgi.pid
> root     25752     1  0 09:28 ?        00:00:00 nginx: master process 
> /usr/sbin/nginx
> www-data 25753 25752  0 09:28 ?        00:00:00 nginx: worker process
> www-data 25754 25752  0 09:28 ?        00:00:00 nginx: worker process
> www-data 25755 25752  0 09:28 ?        00:00:00 nginx: worker process
> www-data 25756 25752  0 09:28 ?        00:00:00 nginx: worker process
> root     26018 22671  0 09:59 pts/0    00:00:00 ps -ef
> postgres 29498     1  0 May16 ?        00:00:18 
> /usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/main -c 
> config_file=/etc/postgresql/9.1/main/postgresql.conf
> postgres 29500 29498  0 May16 ?        00:00:19 postgres: writer process   
>                                                                             
>                      
> postgres 29501 29498  0 May16 ?        00:00:18 postgres: wal writer 
> process                                                                     
>                            
> postgres 29502 29498  0 May16 ?        00:00:15 postgres: autovacuum 
> launcher process                                                           
>                             
> postgres 29503 29498  0 May16 ?        00:00:26 postgres: stats collector 
> process                                                                     
>                       
> mysql    29796     1  0 May16 ?        00:00:25 /usr/sbin/mysqld
> root     29855     1  0 May16 ?        00:00:00 udevd --daemon



That's the news from Lake Woebegone.  

On the surface, nginx looks much easier to set up than apache.  But, uwsgi 
seems much more difficult than mod_wsgi.

Thanks for everyone's help.

Reply via email to