Created Server Configuration (markdown)

Noah Petherbridge 7 years ago
  1. 130


@ -0,0 +1,130 @@
# Config File
Copy the file `` as a file named ``, and edit its contents to set up your site. It's very important that you change the `SECRET_KEY` variable, as this is used to sign the session cookies and
prevent people from tampering with them. The config script is well-documented with comments explaining what all the options do.
# Apache Configurations
## mod_wsgi
For simple sites you can configure Rophako to run as a mod_wsgi app.
In your Apache configuration:
<VirtualHost *:80>
WSGIDaemonProcess rophako user=www-data group=www-data threads=5 home=/home/www-data/git/rophako
WSGIScriptAlias / /home/www-data/git/rophako/app.wsgi
WSGIScriptReloading On
CustomLog /home/www-data/logs/access_log combined
ErrorLog /home/www-data/logs/error_log
<Directory /home/www-data/sites/rophako>
WSGIProcessGroup rophako
WSGIApplicationGroup %{GLOBAL}
Order allow,deny
Allow from all
A file named `app.wsgi` is included in the git repo. Here it is for reference. You may need to make changes to it if you use a different virtualenv:
#!/usr/bin/env python
"""WSGI runner script for the Rophako CMS."""
import sys
import os
# Add the CWD to the path.
# Use the 'rophako' virtualenv.
activate_this = os.environ['HOME']+'/.virtualenv/rophako/bin/'
execfile(activate_this, dict(__file__=activate_this))
from rophako import app as application
# vim:ft=python
## mod_fcgid and mod_rewrite
For I had a legacy document root full of random static files, so Rophako needed to serve the dynamic pages but let Apache serve all the legacy stuff.
Apache configuration:
# Rophako
<VirtualHost *:80>
DocumentRoot /home/kirsle/www
CustomLog /home/kirsle/logs/access_log combined
ErrorLog /home/kirsle/logs/error_log
SuexecUserGroup kirsle kirsle
<Directory "/home/kirsle/www">
Options Indexes FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
<Directory "/home/kirsle/www/fcgi">
SetHandler fcgid-script
Options +ExecCGI
AllowOverride all
Order allow,deny
Allow from all
And in my `.htaccess` file in my document root:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /fcgi/index.fcgi/$1 [QSA,L]
RewriteRule ^$ /fcgi/index.fcgi/ [QSA,L]
And finally, my FastCGI script. Important things to note:
* The shebang line points to the Python binary in my virtualenv.
* I modify `sys.path` and `chdir` to my git checkout folder for Rophako.
* The `ScriptNameStripper` allows `mod_rewrite` to work best. Without it you'll sometimes get URL paths like `/fcgi/index.fcgi/blog/entry/...` etc. from Flask because that's what it thinks its path is.
import os
import sys
from flup.server.fcgi import WSGIServer
from rophako import app
class ScriptNameStripper(object):
def __init__(self, app): = app
def __call__(self, environ, start_response):
environ["SCRIPT_NAME"] = ""
return, start_response)
app = ScriptNameStripper(app)
if __name__ == "__main__":
**Next Step:** [[Configuration and Plugins]]