MobileBlur

Hex Artifact Content
Login

Artifact 196448d2fb871f5ec930356f8717b37fbb66918f:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70  #!/usr/bin/env p
0010: 79 74 68 6f 6e 0a 23 20 2d 2a 2d 20 63 6f 64 69  ython.# -*- codi
0020: 6e 67 3a 20 75 74 66 2d 38 20 2d 2a 2d 0a 0a 22  ng: utf-8 -*-.."
0030: 22 22 0a 54 68 69 73 20 66 69 6c 65 20 69 73 20  "".This file is 
0040: 70 61 72 74 20 6f 66 20 74 68 65 20 77 65 62 32  part of the web2
0050: 70 79 20 57 65 62 20 46 72 61 6d 65 77 6f 72 6b  py Web Framework
0060: 0a 43 6f 70 79 72 69 67 68 74 65 64 20 62 79 20  .Copyrighted by 
0070: 4d 61 73 73 69 6d 6f 20 44 69 20 50 69 65 72 72  Massimo Di Pierr
0080: 6f 20 3c 6d 64 69 70 69 65 72 72 6f 40 63 73 2e  o <mdipierro@cs.
0090: 64 65 70 61 75 6c 2e 65 64 75 3e 0a 4c 69 63 65  depaul.edu>.Lice
00a0: 6e 73 65 3a 20 4c 47 50 4c 76 33 20 28 68 74 74  nse: LGPLv3 (htt
00b0: 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f  p://www.gnu.org/
00c0: 6c 69 63 65 6e 73 65 73 2f 6c 67 70 6c 2e 68 74  licenses/lgpl.ht
00d0: 6d 6c 29 0a 0a 54 68 69 73 20 69 73 20 61 20 68  ml)..This is a h
00e0: 61 6e 64 6c 65 72 20 66 6f 72 20 6c 69 67 68 74  andler for light
00f0: 74 70 64 2b 66 61 73 74 63 67 69 0a 54 68 69 73  tpd+fastcgi.This
0100: 20 66 69 6c 65 20 68 61 73 20 74 6f 20 62 65 20   file has to be 
0110: 69 6e 20 74 68 65 20 50 59 54 48 4f 4e 50 41 54  in the PYTHONPAT
0120: 48 0a 50 75 74 20 73 6f 6d 65 74 68 69 6e 67 20  H.Put something 
0130: 6c 69 6b 65 20 74 68 69 73 20 69 6e 20 74 68 65  like this in the
0140: 20 6c 69 67 68 74 74 70 64 2e 63 6f 6e 66 20 66   lighttpd.conf f
0150: 69 6c 65 3a 0a 0a 73 65 72 76 65 72 2e 70 6f 72  ile:..server.por
0160: 74 20 3d 20 38 30 30 30 0a 73 65 72 76 65 72 2e  t = 8000.server.
0170: 62 69 6e 64 20 3d 20 27 31 32 37 2e 30 2e 30 2e  bind = '127.0.0.
0180: 31 27 0a 73 65 72 76 65 72 2e 65 76 65 6e 74 2d  1'.server.event-
0190: 68 61 6e 64 6c 65 72 20 3d 20 27 66 72 65 65 62  handler = 'freeb
01a0: 73 64 2d 6b 71 75 65 75 65 27 0a 73 65 72 76 65  sd-kqueue'.serve
01b0: 72 2e 6d 6f 64 75 6c 65 73 20 3d 20 28 27 6d 6f  r.modules = ('mo
01c0: 64 5f 72 65 77 72 69 74 65 27 2c 20 27 6d 6f 64  d_rewrite', 'mod
01d0: 5f 66 61 73 74 63 67 69 27 29 0a 73 65 72 76 65  _fastcgi').serve
01e0: 72 2e 65 72 72 6f 72 2d 68 61 6e 64 6c 65 72 2d  r.error-handler-
01f0: 34 30 34 20 3d 20 27 2f 74 65 73 74 2e 66 63 67  404 = '/test.fcg
0200: 69 27 0a 73 65 72 76 65 72 2e 64 6f 63 75 6d 65  i'.server.docume
0210: 6e 74 2d 72 6f 6f 74 20 3d 20 27 2f 73 6f 6d 65  nt-root = '/some
0220: 77 68 65 72 65 2f 77 65 62 32 70 79 27 0a 73 65  where/web2py'.se
0230: 72 76 65 72 2e 65 72 72 6f 72 6c 6f 67 20 20 20  rver.errorlog   
0240: 20 20 20 3d 20 27 2f 74 6d 70 2f 65 72 72 6f 72     = '/tmp/error
0250: 2e 6c 6f 67 27 0a 66 61 73 74 63 67 69 2e 73 65  .log'.fastcgi.se
0260: 72 76 65 72 20 3d 20 28 27 2e 66 63 67 69 27 20  rver = ('.fcgi' 
0270: 3d 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =>.             
0280: 20 20 20 20 20 20 20 28 27 6c 6f 63 61 6c 68 6f         ('localho
0290: 73 74 27 20 3d 3e 0a 20 20 20 20 20 20 20 20 20  st' =>.         
02a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
02b0: 27 6d 69 6e 2d 70 72 6f 63 73 27 20 3d 3e 20 31  'min-procs' => 1
02c0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
02d0: 20 20 20 20 20 20 20 20 20 20 20 27 73 6f 63 6b             'sock
02e0: 65 74 27 20 20 20 20 3d 3e 20 27 2f 74 6d 70 2f  et'    => '/tmp/
02f0: 66 63 67 69 2e 73 6f 63 6b 27 0a 20 20 20 20 20  fcgi.sock'.     
0300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0310: 20 20 20 29 0a 20 20 20 20 20 20 20 20 20 20 20     ).           
0320: 20 20 20 20 20 20 20 20 20 29 0a 20 20 20 20 20           ).     
0330: 20 20 20 20 20 20 20 20 20 20 20 20 29 0a 22 22              ).""
0340: 22 0a 0a 4c 4f 47 47 49 4e 47 20 3d 20 46 61 6c  "..LOGGING = Fal
0350: 73 65 0a 53 4f 46 54 43 52 4f 4e 20 3d 20 46 61  se.SOFTCRON = Fa
0360: 6c 73 65 0a 0a 69 6d 70 6f 72 74 20 73 79 73 0a  lse..import sys.
0370: 69 6d 70 6f 72 74 20 6f 73 0a 0a 70 61 74 68 20  import os..path 
0380: 3d 20 6f 73 2e 70 61 74 68 2e 64 69 72 6e 61 6d  = os.path.dirnam
0390: 65 28 6f 73 2e 70 61 74 68 2e 61 62 73 70 61 74  e(os.path.abspat
03a0: 68 28 5f 5f 66 69 6c 65 5f 5f 29 29 0a 6f 73 2e  h(__file__)).os.
03b0: 63 68 64 69 72 28 70 61 74 68 29 0a 73 79 73 2e  chdir(path).sys.
03c0: 70 61 74 68 20 3d 20 5b 70 61 74 68 5d 2b 5b 70  path = [path]+[p
03d0: 20 66 6f 72 20 70 20 69 6e 20 73 79 73 2e 70 61   for p in sys.pa
03e0: 74 68 20 69 66 20 6e 6f 74 20 70 3d 3d 70 61 74  th if not p==pat
03f0: 68 5d 0a 0a 69 6d 70 6f 72 74 20 67 6c 75 6f 6e  h]..import gluon
0400: 2e 6d 61 69 6e 0a 69 6d 70 6f 72 74 20 67 6c 75  .main.import glu
0410: 6f 6e 2e 63 6f 6e 74 72 69 62 2e 67 61 74 65 77  on.contrib.gatew
0420: 61 79 73 2e 66 63 67 69 20 61 73 20 66 63 67 69  ays.fcgi as fcgi
0430: 0a 0a 69 66 20 4c 4f 47 47 49 4e 47 3a 0a 20 20  ..if LOGGING:.  
0440: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 3d 20    application = 
0450: 67 6c 75 6f 6e 2e 6d 61 69 6e 2e 61 70 70 66 61  gluon.main.appfa
0460: 63 74 6f 72 79 28 77 73 67 69 61 70 70 3d 67 6c  ctory(wsgiapp=gl
0470: 75 6f 6e 2e 6d 61 69 6e 2e 77 73 67 69 62 61 73  uon.main.wsgibas
0480: 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e,.             
0490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04a0: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 66 69             logfi
04b0: 6c 65 6e 61 6d 65 3d 27 68 74 74 70 73 65 72 76  lename='httpserv
04c0: 65 72 2e 6c 6f 67 27 2c 0a 20 20 20 20 20 20 20  er.log',.       
04d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
04f0: 20 70 72 6f 66 69 6c 65 72 66 69 6c 65 6e 61 6d   profilerfilenam
0500: 65 3d 4e 6f 6e 65 29 0a 65 6c 73 65 3a 0a 20 20  e=None).else:.  
0510: 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 3d 20    application = 
0520: 67 6c 75 6f 6e 2e 6d 61 69 6e 2e 77 73 67 69 62  gluon.main.wsgib
0530: 61 73 65 0a 0a 69 66 20 53 4f 46 54 43 52 4f 4e  ase..if SOFTCRON
0540: 3a 0a 20 20 20 20 66 72 6f 6d 20 67 6c 75 6f 6e  :.    from gluon
0550: 2e 73 65 74 74 69 6e 67 73 20 69 6d 70 6f 72 74  .settings import
0560: 20 67 6c 6f 62 61 6c 5f 73 65 74 74 69 6e 67 73   global_settings
0570: 0a 20 20 20 20 67 6c 6f 62 61 6c 5f 73 65 74 74  .    global_sett
0580: 69 6e 67 73 2e 77 65 62 32 70 79 5f 63 72 6f 6e  ings.web2py_cron
0590: 74 79 70 65 20 3d 20 27 73 6f 66 74 27 0a 0a 66  type = 'soft'..f
05a0: 63 67 69 2e 57 53 47 49 53 65 72 76 65 72 28 61  cgi.WSGIServer(a
05b0: 70 70 6c 69 63 61 74 69 6f 6e 2c 20 62 69 6e 64  pplication, bind
05c0: 41 64 64 72 65 73 73 3d 27 2f 74 6d 70 2f 66 63  Address='/tmp/fc
05d0: 67 69 2e 73 6f 63 6b 27 29 2e 72 75 6e 28 29 0a  gi.sock').run().
05e0: 0a                                               .