03f015f99a
* Added a bunch of thumbnail-related methods to controller.Files. * Modified Files.download() method to redirect to image preview if requested. * Implemented image preview to popup full image in a separate window. * Added empty stubs for relevant unit tests. Still to-do. * Added new dependency on python-imaging package (PIL). * Updated file info popup to include clickable thumbnail.
218 lines
7.1 KiB
Plaintext
218 lines
7.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
|
|
* 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.
|