To use Luminotes, please see the included README file instead of this INSTALL file. This file contains details about installing the Luminotes server, which you shouldn't need if you only want to make a wiki. First, install the prerequisites: * Python 2.4 * CherryPy 2.2 * PostgreSQL 8.1 * psycopg 2.0 * simplejson 1.3 * pytz 2006p * Python Imaging Library 1.1 In Debian GNU/Linux, you can issue the following command to install these packages: apt-get install python2.4 python-cherrypy postgresql-8.1 \ postgresql-contrib-8.1 python-psycopg2 python-simplejson \ python-tz python-imaging database setup -------------- Configure PostgreSQL's pg_hba.conf (usually found under /etc/postgresql/) to require passwords for local connections: local all all md5 Restart postgresql so these changes take effect: /etc/init.d/postgresql restart As the PostgreSQL superuser (usually "postgres"), create a new database user and set a new password, for instance, "mypassword". createuser -S -d -R -P -E luminotes createdb -E UTF8 luminotes echo "alter database luminotes owner to luminotes;" | psql luminotes Also as the PostgreSQL superuser, setup full-text searching. The path to the tsearch2.sql file may be different depending on your Linux distribution or PostgreSQL version: psql luminotes < /usr/share/postgresql/8.1/contrib/tsearch2.sql echo "grant all on pg_ts_cfg to luminotes;" | psql luminotes echo "grant all on pg_ts_cfgmap to luminotes;" | psql luminotes echo "grant all on pg_ts_dict to luminotes;" | psql luminotes echo "grant all on pg_ts_parser to luminotes;" | psql luminotes echo "update pg_ts_cfg set locale = 'en_US.UTF-8' where ts_name = 'default';" | psql luminotes Initialize the database with the starting schema and default data: export PYTHONPATH=. export PGPASSWORD=mypassword python2.4 tools/initdb.py development mode ---------------- Running the Luminotes server in development mode is convenient for testing out changes, because it uses CherryPy's built-in web server with auto-reload enabled, so the server will automatically reload any modified source files as soon as they're modified. To start the server in development mode, run: python2.4 luminotes.py -d Connect to the following URL in a web browser running on the same machine: http://localhost:8081/ production mode --------------- Production mode is intended for a live production web site, so you can skip this section entirely if you don't care about running such a site. Production mode doesn't support auto-reload, and logging goes to file (luminotes.log) instead of the console, but performance should be better than in development mode. First you'll need to configure your web server to forward requests for non-static pages to CherryPy. These instructions are for Apache, but in theory, Luminotes should work with just about any web server. In your Apache configuration file, enable mod_rewrite and mod_proxy, then add the following rewrite rules to the settings for your VirtualHost: RewriteEngine on RewriteRule ^/favicon.ico /path/to/luminotes/static/images/favicon.ico [L] RewriteRule ^/robots.txt /path/to/luminotes/static/html/robots.txt [L] RewriteRule ^/static/(.*) /path/to/luminotes/static/$1 [L] RewriteRule ^(.*) http://127.0.0.1:8081$1 [P] You should change the paths in the rules above to point to wherever Luminotes happens to be installed. These rules cause Apache to serve static files itself, while passing through requests for dynamic pages to the CherryPy web server running locally. Optionally, you can also enable Apache's mod_expires module and include the following configuration along with the above rules: ExpiresActive On ExpiresDefault "A600" This will tell clients not to request static pages more frequently than every ten minutes (unless the user forces a reload). If you want to use SSL, procure and install an SSL cert for use with Apache. Add the above mod_rewrite rules to the settings for your SSL-enabled VirtualHost, but change the IP in the last rule from 127.0.0.1 to 127.0.0.2. This hack allows the Luminotes server to distinguish between SSL and non-SSL requests by looking at the proxy IP. Without this, Luminotes would have no way of knowing whether a particular request was encrypted when received by Apache. (There are ways to do this in a less hacky manner with Apache 2, but not Apache 1.) To configure the Luminotes server for SSL support, edit config/Common.py and change the values of luminotes.http_url and luminotes.https_url based on the domain you're using. For instance: "luminotes.http_url": "http://luminotes.com", "luminotes.https_url": "https://luminotes.com", Then to actually start the production mode server, run: python2.4 luminotes.py You should be able to connect to the site at whatever domain you've configured Apache to serve. Optionally, you can copy tools/luminotes_debian_initscript to /etc/init.d/luminotes and use the following command to start the Luminotes server instead: /etc/init.d/luminotes start sending email ------------- If you would like Luminotes to be able to send password reset emails, then you'll need a mail server running on the same machine that is capabable of receiving local SMTP connections and sending email. Either way, please set the luminotes.support_email address in config/Common.py to the email address you'd like in the From field of all outgoing emails. This email address also shows up in various error messages and other places for a support contact address. memcached --------- For improved performance, it is recommended that you install and use memcached for production servers. First, install the prerequisites: * python-dev 2.4 * libmemcache-dev 1.4 * memcached 1.4 * cmemcache 0.91 In Debian GNU/Linux, you can issue the following command to install these packages: apt-get install python2.4-dev libmemcache-dev memcached The cmemcache package is not currently included with Debian Etch, so you'll have to build and install it manually. Download and untar the package from: http://gijsbert.org/cmemcache/ From the untarred cmemcache directory, issue the following command as root: python2.4 setup.py install This should build and install the cmemcache module. Once installed, Luminotes will use the module automatically. When Luminotes starts up, you should see a "using memcached" message. Python unit tests ----------------- If you're interested in running unit tests of the server, install: * nose 0.9.0 * pysqlite 2.3 In Debian GNU/Linux, you can issue the following command to install this package: apt-get install python-nose python-pysqlite2 Then you can run unit tests by running: nosetests JavaScript "unit" tests ----------------------- JsUnit is included with Luminotes, so to kick off tests of the client-side JavaScript code, simply run: python2.4 static/js/test/run_tests.py The run_tests.py script runs the tests inside browser windows and presumes that you have both Firefox and Internet Explorer 6 installed, and also that the Luminotes server is running on the local machine. Edit run_tests.py if you need to specify different paths to the browser binaries or want to test with additional browsers.