Fastcgi Install Instructions

Here are some draft instructions for installing Graphite to run under fastcgi.

1. Setup your virtualenv directory. I'll use /var/admin/graphite as my graphite root dir, and /var/admin/graphite/PYVIRT for my virtualenv environment directory.

   $ mkdir -p /var/admin/graphite/PYVIRT
   $ virtualenv /var/admin/graphite/PYVIRT

2. activate the environment via: source /var/admin/graphite/PYVIRT/bin/activate
   # note, some shells, like zsh, require running 'rehash' so you can find the proper python and easy_install.

3. install needed packages, etc

    (PYVIRT)$ easy_install Django
    (PYVIRT)$ apt-get install python-cairo python-pyparsing memcached

4. install graphite using --root-dir=/var/admin/graphite, following the standard instructions.
    ( I used 0.9.4 for this example.)
    Note that you'll also need to use 'apt-get install python-mod-python' for the normal install script.

5. create a dispatch.fcgi script like this:


# setup the virtualenv
import os
os.environ.setdefault('PATH', '/bin:/usr/bin')
os.environ['PATH'] = '/var/admin/graphite/PYVIRT/bin:' + os.environ['PATH']
os.environ['VIRTUAL_ENV'] = '/var/admin/graphite/PYVIRT'
os.environ['PYTHON_EGG_CACHE'] = '/var/admin/graphite/PYVIRT/egg_cache'

import sys

# Add a custom Python path.
sys.path.insert(0, "/var/admin/graphite/webapp/web")
sys.path.insert(0, "/var/admin/graphite/webapp")

# Switch to the directory of your project. (Optional.)

# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "settings"

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")

6. create an apache virtual host config like this:

NameVirtualHost *:80

FastCgiServer /var/admin/graphite/dispatch.fcgi -processes 1 -listen-queue-depth 1000 -idle-timeout 3600

<VirtualHost *:80>
        DocumentRoot "/var/admin/graphite/webapp"

         ScriptAliasMatch ^(.*)$ /var/admin/graphite/dispatch.fcgi$1

        <Location "/content">
                SetHandler None
        ErrorLog /var/admin/graphite/storage/log/webapp-error.log
        CustomLog /var/admin/graphite/storage/log/webapp-access.log common

7. fix the carbon init script to source the PYVIRT/bin/activate script so that carbon finds proper libs.

that's it. let me know if you have questions or bugs.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License