Hello everyone, I'm in need of help to get this configuration (ubuntu + 
cherokee + web2py + uwsgi) running.
I used a very similar how to on this (this happened many months ago) and 
everything worked perfectly.

When I followed the instructions I had an ubuntu version with python 2.6 
but when I decided to upgrade to ubuntu 12.04 (python 2.7) the problem 
started. Initially the problem was the 503 Service Unavailable message and 
by looking at the logs it was obvious the change in python version was 
responsible for this since uwsgi was saying libpython2.6.so.1.0 missing or 
something like that. So I reinstalled the latest uwsgi built with python 
2.7 and the 503 error went away. However I still couldn't get my web2py app 
to show, I now get:

*uWSGI Error*Python application not found

I searched all over for this but I can't find how to fix it. I'm posting 
the cherokee error log and the uwsgi config file hoping you can help me.


# cat /var/log/cherokee/cherokee.error
[uWSGI] parsing config file /var/web2py/config.xml
[WARNING] option "app" is deprecated: use the more advanced "mount" option
*** Starting uWSGI 1.2.3 (32bit) on [Thu Jun  7 11:19:17 2012] ***
compiled with version: 4.6.3 on 07 June 2012 09:24:31
detected number of CPU cores: 1
current working directory: /
detected binary path: /usr/bin/uwsgi
*** WARNING: you are running uWSGI without its master process manager ***
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:40890 fd 4
Python version: 2.7.3 (default, Apr 20 2012, 23:06:40)  [GCC 4.6.3]
*** Python threads support is disabled. You can enable it with 
--enable-threads ***
Python main interpreter initialized at 0x896f8a0
your server socket listen backlog is limited to 100 connections
*** Operational MODE: single process ***
added /var/web2py/ to pythonpath.
mounting wsgihandler on /
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 7903, cores: 1)
[pid: 7903|app: -1|req: -1/1] 192.1.209.75 () {54 vars in 875 bytes} [Thu 
Jun  7 11:19:17 2012] GET /favicon.ico => generated 48 bytes in 0 msecs 
(HTTP/1.1 500) 2 headers in 63 bytes (0 switches on core 0)
[pid: 7903|app: -1|req: -1/2] 192.1.209.75 () {56 vars in 922 bytes} [Thu 
Jun  7 11:20:01 2012] GET / => generated 48 bytes in 0 msecs (HTTP/1.1 500) 
2 headers in 63 bytes (0 switches on core 0)
[pid: 7903|app: -1|req: -1/3] 192.1.209.75 () {54 vars in 875 bytes} [Thu 
Jun  7 11:20:01 2012] GET /favicon.ico => generated 48 bytes in 0 msecs 
(HTTP/1.1 500) 2 headers in 63 bytes (0 switches on core 0)
[pid: 7903|app: -1|req: -1/4] 192.1.209.75 () {54 vars in 891 bytes} [Thu 
Jun  7 11:20:09 2012] GET / => generated 48 bytes in 0 msecs (HTTP/1.1 500) 
2 headers in 63 bytes (0 switches on core 0)
[pid: 7903|app: -1|req: -1/5] 192.1.209.75 () {54 vars in 875 bytes} [Thu 
Jun  7 11:20:09 2012] GET /favicon.ico => generated 48 bytes in 0 msecs 
(HTTP/1.1 500) 2 headers in 63 bytes (0 switches on core 0)


# cat /var/web2py/config.xml
<uwsgi>
    <pythonpath>/var/web2py/</pythonpath>
    <app mountpoint="/">
    <script>wsgihandler</script>
    </app>
</uwsgi>

cherokee interpreter:
/usr/bin/uwsgi -s 127.0.0.1:40890 -x /var/web2py/config.xml


Thanks in advance.

On Thursday, January 14, 2010 2:14:09 PM UTC-8, Ivan P wrote:
>
> Inspired by Phyo Arkar's howto on setting up web2py with Cherokee and
> FCGI I tried the setup, but was somewhat unsatisfied with the fcgi
> method and decided to try uWSGI. I am happy I did so, since it proved
> to be real easy and uWSGI is a real powerhouse and deserves attention
> of the whole python webdev community. On to the howto.
>
> I. Compile from source and run the latest uWSGI, 0.9.3 in my case
> (available here http://projects.unbit.it/uwsgi/wiki).
> 1. Download the source from and unzip.
>
> 2. To compile you must install packages python-dev and libxml2-dev (at
> least thats what they are called on a debian-based system)
>
> 3. When compiling simply run pick a makefile which matches your OS and
> python version and run something like "make -f Makefile.Linux.Py26".
> This produces only one executable named uwsgi26, where 26 is my python
> version. You can put it in /usr/local/bin.
>
> 5. To run it, you have two options:
>
> 5a) Create an xml file and call it, for example, config.xml. Put
> something like this in it:
> <uwsgi>
>     <pythonpath>/var/web2py/</pythonpath>
>     <app mountpoint="/">
>     <script>wsgihandler</script>
>     </app>
> </uwsgi>
> In this file "pythonpath" is where your web2py directory is and
> "script" is the file you want to run, in this case its web2py's
> "wsgihandler.py". Now run uWSGI like this, but replace "www-data" with
> the owner of your web2py directory, if its the same as your current
> user omit the sudo command:
> sudo -u www-data uwsgi26 -s /tmp/uwsgi.sock -C -x config.xml
> Why you need to change user is because web2py writes things (session
> data for example) to disc during execution, so the uwsgi process,
> which runs the web2py code, has to be the owner of the directories
> that contain the framework. Note that uwsgi now opened a socket we
> called "/tmp/uwsgi.sock" About other options consult the uwsgi manual
> or "uwsgi -h".
>
> 5b) You can omit the xml file and pass all the info via command line,
> doing that is easy, so consult the uwsgi docs :)
>
>
> II. Setting up cherokee (0.99.37 in my case).
> 1. Install it, run cherokee-admin, go to localhost:9090
>
> 2. Open "Information Sources" and create a new one with these
> parameters:
> Nick: web2py
> Connection: /tmp/uwsgi.sock
> Interpreter: uwsgi26 -s /tmp/uwsgi.sock -C -x /path/to/config.xml
> The interpreter line is why it is a good idea to have your web2py
> source owned by www-data or the Cherokee server's user - when cherokee
> runs it, you can be sure that owners of the sources and process match.
> And of  course put the correct path in.
>
> 3. Go to "Virtual Servers" and edit the default one, or you can create
> a new one, but make sure you give it a domain name to avoid conflict
> (not really sure what happens when they conflict).
>
> 4. Go to the "Behavior" section and edit the "Default" behavior.
>
> 5. Set the "Handler" to uWSGI and on the bottom set the information
> source to "web2py"
>
> 6. Pick "Hard restart" from the dropdown on the left and click "Save".
> TO PREVENT HEADACHE READ THIS: I seem to get inconsistent results with
> these restarts, so if you're doing production it seems to me that one
> should restart the server manualy (via /etc/init.d/cherokee restart,
> that is). Or maybe I should RTFM.
>
> 6. Go to localhost and BAM! (or at least I hope its a bam). veeery
> easy if all goes smooth.
>
> "But wait, what about url rewriting?" was my thought, and this caused
> much confusion, so I'll add a section on that.
>
>
> III. Doing some redirection (I'll give few examples due to poor
> knowledge of regex).
> Lets redirect "localhost/" to "/myapp/cntrlr/index"
> 1. Go back to the "Behavior" section of your server.
>
> 2. Add a new rule and set it's type to "Regular Expression" and set
> the regular expression to "^/$", this simply matches "localhost/" or
> "localhost", nothing more, nothing less.
>
> 3. Go to the "Handler" section and set the rule to "Redirect" with
> these parameters
> Type: Internal
> Regular Expression:     (yes, blank)
> Substitution: /myapp/cntrlr/index
> The regular expression is blank because for this scenario we did all
> the matching while defining a new behavior, you can combine the two in
> creative ways.
>
> That's about all. Your imagination should take care of the rest. I,
> for example, put my static files separately from the framework by
> creating a behavior that points to "/static" and picking "static
> files" as the handler.
> Thanks to Massimo DiPierro for web2py and Phyo Arkar for his cherokee
> howto.
> I'm not much of a writer so feel free to ask for clarifications.
>
>

Reply via email to