180 lines
6.1 KiB
Plaintext
180 lines
6.1 KiB
Plaintext
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
|
|
|
|
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
|
|
|
|
Note: If you're using Debian Etch, you will need to get PostgreSQL 8.1 from
|
|
another source such as http://backports.org as 8.1 is not present in Etch.
|
|
|
|
|
|
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
|
|
|
|
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.
|
|
|
|
|
|
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.
|
|
|
|
|
|
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.
|