Skip to content

Latest commit

 

History

History
109 lines (81 loc) · 2.51 KB

fastcgi-apache.md

File metadata and controls

109 lines (81 loc) · 2.51 KB
layout title
default
Web.py using FastCGI and Apache 2

Web.py using FastCGI and Apache 2

#Requirements

Note, on CentOS compiling mod_fcgid requires apache-devel be installed (available via yum). #Apache Configuration Replace '/var/www/myapp/' with the path to your apps directory

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule fcgid_module modules/mod_fcgid.so

SocketPath /tmp/fcgidsock
SharememPath /tmp/fcgid_shm

Alias /static "/var/www/myapp/static"
Alias / "/var/www/myapp/"
<Directory "/var/www/myapp/">
    allow from all
    SetHandler fcgid-script    
    Options +ExecCGI
    AllowOverride None
    <IfModule mod_rewrite.c>      
       RewriteEngine on
       RewriteBase /
       RewriteCond %{REQUEST_URI} !^/icons
       RewriteCond %{REQUEST_URI} !^/favicon.ico$
       RewriteCond %{REQUEST_URI} !^(/.*)+code.py/
       RewriteRule ^(.*)$ code.py/$1 [PT]
    </IfModule>
</Directory>

<Directory "/var/www/myapp/static">
      allow from all
      AllowOverride None
      Options -ExecCGI
      SetHandler None
  </Directory>

#Hello World Note the following line is required: web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)

#!/usr/bin/python

import web

urls = ("/.*", "hello")
app = web.application(urls, globals())

class hello: 
    def GET(self):
    return 'Hello, world!'

web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)
if __name__ == "__main__":
    app.run()

#Run

  1. Start your server.
  2. Open your application with your browser
  3. To confirm your application is running try:
ps aux | grep code.py

#Troubleshooting


###Check your apache error log for information!
##Common problems

###File permissions. You might see error code 255 in your logs. Ensure the directory is readable and that code. py is executable:

chmod +x code.py

###404 Not Found. Is your Alias path correct in your apache configuration?

###Other problems Web.py spawns http://0.0.0.0:8080, dies unexpectedly, or returns nothing. Did you add this line?

 web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr)

#Misc After updating your application you may need to restart your web server to see the changes.