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.
regards,
Alex F
P.S: try to make an slice in web2pyslices.com
El 14/01/2010 23:14, Ivan P escribi�:
--
Alejandro Fanjul Fdez.
alex....@gmail.com
www.mhproject.org
On Jan 14, 4:14 pm, Ivan P <ivanv...@gmail.com> 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 herehttp://projects.unbit.it/uwsgi/wiki).
===CHEROKEE results===
Server Software: Cherokee/0.99.39
Server Hostname: cparts.localhost
Server Port: 80
Document Path: /admin/default/index
Document Length: 5658 bytes
Concurrency Level: 5
Time taken for tests: 41.809 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 6031000 bytes
HTML transferred: 5658000 bytes
Requests per second: 23.92 [#/sec] (mean)
Time per request: 209.043 [ms] (mean)
Time per request: 41.809 [ms] (mean, across all concurrent
requests)
Transfer rate: 140.87 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 3
Processing: 65 208 11.3 208 283
Waiting: 65 208 11.3 208 283
Total: 69 209 11.2 208 283
Percentage of the requests served within a certain time (ms)
50% 208
66% 212
75% 214
80% 215
90% 219
95% 223
98% 235
99% 245
100% 283 (longest request)
===CHERRY PY results===
Server Software: CherryPy/3.2.0beta
Server Hostname: localhost
Server Port: 8000
Document Path: /welcome/default/index
Document Length: 6531 bytes
Concurrency Level: 5
Time taken for tests: 41.120 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 6892000 bytes
HTML transferred: 6531000 bytes
Requests per second: 24.32 [#/sec] (mean)
Time per request: 205.601 [ms] (mean)
Time per request: 41.120 [ms] (mean, across all concurrent
requests)
Transfer rate: 163.68 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 51 205 66.0 197 499
Waiting: 50 201 65.2 193 499
Total: 52 205 66.0 197 499
Percentage of the requests served within a certain time (ms)
50% 197
66% 222
75% 240
80% 254
90% 296
95% 328
98% 368
99% 402
100% 499 (longest request)
Sure, I'll make it a slice.
On Jan 17, 11:01 pm, Alex Fanjul <alex.fan...@gmail.com> wrote:
> Many thanks for your tutorial Ivan,
> I'll give it a try... have you noticed any improvements with cherokee?
> could you show us your "ab" benchmarks?
>
> regards,
> Alex F
>
> P.S: try to make an slice in web2pyslices.com
>
> El 14/01/2010 23:14, Ivan P escribi :
>
>
>
> > 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 herehttp://projects.unbit.it/uwsgi/wiki).
I think we need a standard app for testing with various options:
1) db, no-db
2) 1,10,100 tables
3) view, no-view
4) compiled, not-compiler
> ...
>
> read more »
Concurrency Level: 5
Time taken for tests: 22.585 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 6906000 bytes
HTML transferred: 6531000 bytes
Requests per second: 44.28 [#/sec] (mean)
Time per request: 112.923 [ms] (mean)
Time per request: 22.585 [ms] (mean, across all concurrent
requests)
Transfer rate: 298.62 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 65 113 6.2 111 164
Waiting: 65 112 6.2 111 164
Total: 66 113 6.2 111 164
Percentage of the requests served within a certain time (ms)
50% 111
66% 112
75% 113
80% 115
90% 119
95% 125
98% 133
99% 138
100% 164 (longest request)
ALSO, I tried running uwsgi with 4 worker processes by adding the
option "-p 4":
Concurrency Level: 5
Time taken for tests: 14.575 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 6906000 bytes
HTML transferred: 6531000 bytes
Requests per second: 68.61 [#/sec] (mean)
Time per request: 72.876 [ms] (mean)
Time per request: 14.575 [ms] (mean, across all concurrent
requests)
Transfer rate: 462.71 [Kbytes/sec] received
> ...
>
> read more »
> ...
>
> read more »
> ...
>
> read more »
by the way, it is shown as the best and fastest modern web server
http://www.cherokee-project.com/benchmarks.html
p.s: I'm Spaniard
El 18/01/2010 18:06, Ivan P escribi�:
>> read more �
I followed this howto, and when I try to access the application I get
an internal error thrown by web2py:
Ticket issued: unknown
Any idea how to read contents of this ticket to debug?
On Jan 15, 3:14 am, Ivan P <ivanv...@gmail.com> 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 herehttp://projects.unbit.it/uwsgi/wiki).
--
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To post to this group, send email to web...@googlegroups.com.
To unsubscribe from this group, send email to web2py+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/web2py?hl=en.
In my typical installation I have a generic user account (like
"servant") that everything server related exists in this home
directory, and it owns everything. With Apache I have to chown/mod the
files so that www-data can read them.
I need to use a user account instead of www-data since mercurial is involved.
As far as static file streaming, does cherokee intercept web2py file serving?
Is there a way to tell cherokee to serve all requests to the "static"
folder without even going through web2py?
-Thadeus
Cherokee will respond in the priority order you have set for the
virtual servers and behaviors. It will evaluate only the first rule in
the list that matches. For example, if you had a static content rule
for the directory "/static" and web2py was the default, a request for
"example.com/stuff" would pass to web2py, while "example.com/static/
stuff" would be evaluated by the static content rule.
On Feb 22, 2:40 pm, Thadeus Burgess <thade...@thadeusb.com> wrote:
> How do you tell what usercherokeegets executed as when the server boots up?
>
> In my typical installation I have a generic user account (like
> "servant") that everything server related exists in this home
> directory, and it owns everything. With Apache I have to chown/mod the
> files so that www-data can read them.
>
> I need to use a user account instead of www-data since mercurial is involved.
>
> As far as static file streaming, doescherokeeintercept web2py file serving?
>
> Is there a way to tellcherokeeto serve all requests to the "static"
> folder without even going through web2py?
>
> -Thadeus
>
> On Fri, Feb 5, 2010 at 4:45 AM, Ivan P <ivanv...@gmail.com> wrote:
> > Sorry for the delayed response.
> > I think that usually means that your permissions are not set. Make
> > sure thatuwsgiis running under the same user that owns your web2py
> > directory. The error is unknown cause web2py cannot open the error
> > file, because it cannot write it to disc.
>
> > On Jan 27, 3:56 pm, Adi <aditya.sa...@gmail.com> wrote:
> >> Hi Ivan,
>
> >> I followed this howto, and when I try to access the application I get
> >> an internal error thrown by web2py:
> >> Ticket issued: unknown
>
> >> Any idea how to read contents of this ticket to debug?
>
> >> On Jan 15, 3:14 am, Ivan P <ivanv...@gmail.com> wrote:
>
> >> > Inspired by Phyo Arkar's howto on setting up web2py withCherokeeand
> >> > FCGI I tried the setup, but was somewhat unsatisfied with the fcgi
> >> > method and decided to tryuWSGI. I am happy I did so, since it proved
> >> > to be real easy anduWSGIis a real powerhouse and deserves attention
> >> > of the whole python webdev community. On to the howto.
>
> >> > I. Compile from source and run the latestuWSGI, 0.9.3 in my case
> >> > (available herehttp://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 runuWSGIlike 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 theuwsgiprocess,
> >> > which runs the web2py code, has to be the owner of the directories
> >> > that contain the framework. Note thatuwsginow opened a socket we
> >> > called "/tmp/uwsgi.sock" About other options consult theuwsgimanual
> >> > or "uwsgi-h".
>
> >> > 5b) You can omit the xml file and pass all the info via command line,
> >> > doing that is easy, so consult theuwsgidocs :)
>
> >> > II. Setting upcherokee(0.99.37 in my case).
> >> > 1. Install it, runcherokee-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 theCherokeeserver's user - whencherokee
> >> > 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" touWSGIand on the bottom set the information
example.com/app/static
example.com/app2/static
What exact rule do I use for this situation?
On Feb 24, 12:37 am, GrayMatterComputing <battledi...@gmail.com>
wrote:
> Open theCherokeeAdmin -> General -> Server Permissions. There you
> are :)
>
> Cherokeewill respond in the priority order you have set for the