Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/studio/static/doc/flask-docs/_sources/deploying/fastcgi.txt
diff options
context:
space:
mode:
authorSebastian Silva <sebastian@sugarlabs.org>2011-11-16 07:56:19 (GMT)
committer Sebastian Silva <sebastian@sugarlabs.org>2011-11-16 07:56:19 (GMT)
commit82511a6fe2d29d50c1cdca4b2abb23ff681a1943 (patch)
treeff6359d68287417abfaaf49e492e2630239e60c9 /studio/static/doc/flask-docs/_sources/deploying/fastcgi.txt
parent61517139f02df2ce417f465dfabdbf5dbe8f4063 (diff)
Major improvements in IDE usability.
Diffstat (limited to 'studio/static/doc/flask-docs/_sources/deploying/fastcgi.txt')
-rw-r--r--studio/static/doc/flask-docs/_sources/deploying/fastcgi.txt164
1 files changed, 0 insertions, 164 deletions
diff --git a/studio/static/doc/flask-docs/_sources/deploying/fastcgi.txt b/studio/static/doc/flask-docs/_sources/deploying/fastcgi.txt
deleted file mode 100644
index 6dace1a..0000000
--- a/studio/static/doc/flask-docs/_sources/deploying/fastcgi.txt
+++ /dev/null
@@ -1,164 +0,0 @@
-.. _deploying-fastcgi:
-
-FastCGI
-=======
-
-FastCGI is a deployment option on servers like `nginx`_, `lighttpd`_,
-and `cherokee`_; see :ref:`deploying-uwsgi` and
-:ref:`deploying-other-servers` for other options. To use your WSGI
-application with any of them you will need a FastCGI server first. The
-most popular one is `flup`_ which we will use for this guide. Make sure
-to have it installed to follow along.
-
-.. admonition:: Watch Out
-
- Please make sure in advance that any ``app.run()`` calls you might
- have in your application file are inside an ``if __name__ ==
- '__main__':`` block or moved to a separate file. Just make sure it's
- not called because this will always start a local WSGI server which
- we do not want if we deploy that application to FastCGI.
-
-Creating a `.fcgi` file
------------------------
-
-First you need to create the FastCGI server file. Let's call it
-`yourapplication.fcgi`::
-
- #!/usr/bin/python
- from flup.server.fcgi import WSGIServer
- from yourapplication import app
-
- if __name__ == '__main__':
- WSGIServer(app).run()
-
-This is enough for Apache to work, however nginx and older versions of
-lighttpd need a socket to be explicitly passed to communicate with the
-FastCGI server. For that to work you need to pass the path to the
-socket to the :class:`~flup.server.fcgi.WSGIServer`::
-
- WSGIServer(application, bindAddress='/path/to/fcgi.sock').run()
-
-The path has to be the exact same path you define in the server
-config.
-
-Save the `yourapplication.fcgi` file somewhere you will find it again.
-It makes sense to have that in `/var/www/yourapplication` or something
-similar.
-
-Make sure to set the executable bit on that file so that the servers
-can execute it:
-
-.. sourcecode:: text
-
- # chmod +x /var/www/yourapplication/yourapplication.fcgi
-
-Configuring lighttpd
---------------------
-
-A basic FastCGI configuration for lighttpd looks like that::
-
- fastcgi.server = ("/yourapplication.fcgi" =>
- ((
- "socket" => "/tmp/yourapplication-fcgi.sock",
- "bin-path" => "/var/www/yourapplication/yourapplication.fcgi",
- "check-local" => "disable",
- "max-procs" => 1
- ))
- )
-
- alias.url = (
- "/static/" => "/path/to/your/static"
- )
-
- url.rewrite-once = (
- "^(/static.*)$" => "$1",
- "^(/.*)$" => "/yourapplication.fcgi$1"
-
-Remember to enable the FastCGI, alias and rewrite modules. This
-configuration binds the application to `/yourapplication`. If you want
-the application to work in the URL root you have to work around a
-lighttpd bug with the
-:class:`~werkzeug.contrib.fixers.LighttpdCGIRootFix` middleware.
-
-Make sure to apply it only if you are mounting the application the URL
-root. Also, see the Lighty docs for more information on `FastCGI and
-Python <http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModFastCGI>`_
-(note that explicitly passing a socket to run() is no longer necessary).
-
-
-Configuring nginx
------------------
-
-Installing FastCGI applications on nginx is a bit different because by
-default no FastCGI parameters are forwarded.
-
-A basic flask FastCGI configuration for nginx looks like this::
-
- location = /yourapplication { rewrite ^ /yourapplication/ last; }
- location /yourapplication { try_files $uri @yourapplication; }
- location @yourapplication {
- include fastcgi_params;
- fastcgi_split_path_info ^(/yourapplication)(.*)$;
- fastcgi_param PATH_INFO $fastcgi_path_info;
- fastcgi_param SCRIPT_NAME $fastcgi_script_name;
- fastcgi_pass unix:/tmp/yourapplication-fcgi.sock;
- }
-
-This configuration binds the application to `/yourapplication`. If you
-want to have it in the URL root it's a bit simpler because you don't
-have to figure out how to calculate `PATH_INFO` and `SCRIPT_NAME`::
-
- location / { try_files $uri @yourapplication; }
- location @yourapplication {
- include fastcgi_params;
- fastcgi_param PATH_INFO $fastcgi_script_name;
- fastcgi_param SCRIPT_NAME "";
- fastcgi_pass unix:/tmp/yourapplication-fcgi.sock;
- }
-
-Running FastCGI Processes
--------------------------
-
-Since Nginx and others do not load FastCGI apps, you have to do it by
-yourself. `Supervisor can manage FastCGI processes.
-<http://supervisord.org/configuration.html#fcgi-program-x-section-settings>`_
-You can look around for other FastCGI process managers or write a script
-to run your `.fcgi` file at boot, e.g. using a SysV ``init.d`` script.
-For a temporary solution, you can always run the ``.fcgi`` script inside
-GNU screen. See ``man screen`` for details, and note that this is a
-manual solution which does not persist across system restart::
-
- $ screen
- $ /var/www/yourapplication/yourapplication.fcgi
-
-Debugging
----------
-
-FastCGI deployments tend to be hard to debug on most webservers. Very
-often the only thing the server log tells you is something along the
-lines of "premature end of headers". In order to debug the application
-the only thing that can really give you ideas why it breaks is switching
-to the correct user and executing the application by hand.
-
-This example assumes your application is called `application.fcgi` and
-that your webserver user is `www-data`::
-
- $ su www-data
- $ cd /var/www/yourapplication
- $ python application.fcgi
- Traceback (most recent call last):
- File "yourapplication.fcgi", line 4, in <module>
- ImportError: No module named yourapplication
-
-In this case the error seems to be "yourapplication" not being on the
-python path. Common problems are:
-
-- Relative paths being used. Don't rely on the current working directory
-- The code depending on environment variables that are not set by the
- web server.
-- Different python interpreters being used.
-
-.. _nginx: http://nginx.org/
-.. _lighttpd: http://www.lighttpd.net/
-.. _cherokee: http://www.cherokee-project.com/
-.. _flup: http://trac.saddi.com/flup