From cea93cbf3493ecf711ab36ab3d6f4c115154774c Mon Sep 17 00:00:00 2001 From: Noah Petherbridge Date: Thu, 11 Sep 2014 23:25:37 -0700 Subject: [PATCH] Moved documentation to the GitHub Wiki --- Apache.md | 137 ------------------------------------------------------ README.md | 117 ++++++++-------------------------------------- 2 files changed, 19 insertions(+), 235 deletions(-) delete mode 100644 Apache.md diff --git a/Apache.md b/Apache.md deleted file mode 100644 index 1496fa0..0000000 --- a/Apache.md +++ /dev/null @@ -1,137 +0,0 @@ -# Apache Configuration - -Here's some tips on getting Rophako set up on Apache. - -# mod\_wsgi - -For simple sites you can set it up with `mod_wsgi` in Apache. - -## Apache configuration: - -```apache - - ServerName www.example.com - 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 - - - WSGIProcessGroup rophako - WSGIApplicationGroup %{GLOBAL} - Order allow,deny - Allow from all - - -``` - -## app.wsgi - -A copy of `app.wsgi` is included in the git repo's root. Here it is though for reference. This assumes you're -using a Python virtualenv named "rophako": - -```python -#!/usr/bin/env python - -"""WSGI runner script for the Rophako CMS.""" - -import sys -import os - -# Add the CWD to the path. -sys.path.append(".") - -# Use the 'rophako' virtualenv. -activate_this = os.environ['HOME']+'/.virtualenv/rophako/bin/activate_this.py' -execfile(activate_this, dict(__file__=activate_this)) - -from rophako import app as application - -# vim:ft=python -``` - - -# mod\_fcgid and mod\_rewrite - -For kirsle.net I needed to set it up using `mod_fcgid` because my site has a lot -of legacy URLs to old static files, so Rophako needs to serve the main website -pages and Apache needs to serve everything else. - -## Apache configuration: - -```apache -# Rophako www.kirsle.net - - ServerName www.kirsle.net - DocumentRoot /home/kirsle/www - CustomLog /home/kirsle/logs/access_log combined - ErrorLog /home/kirsle/logs/error_log - SuexecUserGroup kirsle kirsle - - - Options Indexes FollowSymLinks ExecCGI - AllowOverride All - Order allow,deny - Allow from all - - - - SetHandler fcgid-script - Options +ExecCGI - AllowOverride all - Order allow,deny - Allow from all - - -``` - -## .htaccess configuration: - -This goes in `~/www/.htaccess` - -```apache - - RewriteEngine on - RewriteBase / - RewriteCond %{REQUEST_FILENAME} !-f - RewriteCond %{REQUEST_FILENAME} !-d - RewriteRule ^(.*)$ /fcgi/index.fcgi/$1 [QSA,L] - RewriteRule ^$ /fcgi/index.fcgi/ [QSA,L] - -``` - -## FastCGI script - -This is my FastCGI script I wrote to launch Rophako. 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. - -```python -#!/home/kirsle/.virtualenv/rophako/bin/python - -import os -import sys -sys.path.append("/home/kirsle/git/rophako") -os.chdir("/home/kirsle/git/rophako") - -from flup.server.fcgi import WSGIServer -from rophako import app - -class ScriptNameStripper(object): - def __init__(self, app): - self.app = app - - def __call__(self, environ, start_response): - environ["SCRIPT_NAME"] = "" - return self.app(environ, start_response) - -app = ScriptNameStripper(app) - -if __name__ == "__main__": - WSGIServer(app).run() -``` diff --git a/README.md b/README.md index d8ba1a3..4939f99 100644 --- a/README.md +++ b/README.md @@ -12,108 +12,29 @@ and a couple other small sites. Check out Rophako's official homepage and example site: [rophako.kirsle.net](http://rophako.kirsle.net/) -# Installation +# Documentation -`pip install -r requirements.txt` - -These may need to be installed for the dependencies to build: - -**Fedora:** `libffi-devel libjpeg-devel libpng-devel` - -# Server Configuration - -Instructions and tips are currently available for the Apache web server. -See [Apache.md](https://github.com/kirsle/rophako/blob/master/Apache.md) for -information. - -Copy the file `config-sample.py` as a file named `config.py`, 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. - -## Plugins - -The various site features in Rophako are delegated out into pluggable -modules. Your `config.py` should call a `load_plugin()` method for each -plugin you want your site to use. - -The core plugins `admin` and `accounts` are *always* loaded automatically. -The other built-in plugins like `blog`, `photo`, and `comment` are optional -but are enabled by default in the sample config file. - -Each of the built-in plugins are loaded as Flask blueprints, and the plugin -specifies where it attaches its endpoint to within its own code, i.e. the -blog plugin will attach to the `/blog` URI. For loading the built-in plugins -in your site, just refer to them by name: - -```python -load_plugin("rophako.modules.blog") -``` - -Plugins are assumed to be Flask blueprint modules, which use the variable -name `mod` to hold their Blueprint object. If your plugin isn't a blueprint, -and you simply want it to be imported and run (i.e. perhaps it manipulates -the `app` object directly to specify its endpoints), use the parameter -`as_blueprint=False`. An example of this is with `kirsle_legacy.py` which -defines legacy endpoints for kirsle.net for backwards compatible URIs: - -```python -load_plugin("kirsle_legacy", as_blueprint=False) -``` - -Finally, blueprint plugins can keep their own templates bundled within their -module's folder. All of the built-in plugins do this -- it means that, for -example, if you elect *not* to include the `photo` plugin, that the endpoints -for its URIs (i.e. `/photos/album`) will give 404 responses. - -You can specify the template path for your blueprint's templates as a -`template_path` parameter to `load_plugin()`. By default, the module's name -is converted into a path and a `/templates` folder is appended. So for -example, the blog's template path becomes `rophako/modules/blog/templates`. -This works fine for built-in modules (as your working directory will be the -root of your Flask application), but hasn't been tested for third party -modules. - -# Create the Admin User - -Once the web app is up and running, navigate to the `/account/setup` URL -to create the admin user account. Once the admin account has been created, -the `/account/setup` path can't be used anymore. Additional user accounts -can be created by the admin users at the `/admin` URL. - -# Building Your Site - -Rophako has a dual templating system. When the Rophako CMS wants to render -a template (for example, `blog/entry.html`), it will look inside your -`SITE_ROOT` path first for that template, before falling back to the default -site templates inside the `rophako/www` path. - -All of the core features of Rophako (user account, blog, photo albums, -comments, etc.) exist in the default site, so the CMS is already fully -functional out-of-the-box. You can override files in the default site by -putting files with the same name in your `SITE_ROOT` folder. For example, -the default `SITE_ROOT` is set to the "site/www" folder in the git repo, and -if you put a file at `site/www/layout.html` there, it will change the web -design template for the Rophako site. A file at `site/www/index.html` will -change the index page of your site away from the default. +For all documentation, including installation, configuration and how to build +your own site using the Rophako CMS, please see +[the Rophako Wiki on GitHub](https://github.com/kirsle/rophako/wiki). # Copyright - Rophako CMS - Copyright (C) 2014 Noah Petherbridge +``` +Rophako CMS +Copyright (C) 2014 Noah Petherbridge - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +``` \ No newline at end of file