X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=INSTALL;h=3fc6f5dfef03db456be5b70ead9a7105a6dbacd9;hb=48e244a464574aa732ef5ab3fe759f1e05665b3d;hp=fe71cdf167ff5d072b83da4631991c4df5ab3d4e;hpb=1213c6e65f2bab1e140369839a9d0f6db28a9492;p=roundcube.git diff --git a/INSTALL b/INSTALL index fe71cdf..3fc6f5d 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ INTRODUCTION ============ -This file describes the basic steps to install RoundCube Webmail on your +This file describes the basic steps to install Roundcube Webmail on your web server. For additional information, please also consult the project's wiki page at http://trac.roundcube.net/wiki @@ -9,29 +9,35 @@ wiki page at http://trac.roundcube.net/wiki REQUIREMENTS ============ -* The Apache or Lighttpd Webserver +* The Apache, Lighttpd, Cherokee or Hiawatha web server * .htaccess support allowing overrides for DirectoryIndex -* PHP Version 5.2 or greater including - - PCRE (perl compatible regular expression) - - DOM (xml document object model) +* PHP Version 5.2.1 or greater including + - PCRE, DOM, JSON, XML, Session, Sockets (required) - Libiconv - Multibyte String (mbstring) - Mcrypt (supporting Triple DES) + - Fileinfo (optional) - Database driver for either MySQL, Postgres or SQLite -* php.ini options: +* The PEAR framework with the following packages installed: + - MDB2 2.5.0 or newer + - Mail_Mime 1.8.1 or newer + - Net_SMTP 1.4.2 or newer + - Net_IDNA2 0.1.1 or newer + - Auth_SASL 1.0.3 or newer +* php.ini options (see .htaccess file): - error_reporting E_ALL & ~E_NOTICE (or lower) - - memory_limit (increase as suitable to support large attachments) + - memory_limit > 16MB (increase as suitable to support large attachments) - file_uploads enabled (for attachment upload features) - session.auto_start disabled - zend.ze1_compatibility_mode disabled -* The PEAR framework with the following packages installed - - MDB2 (2.4.1) - - Mail_Mime (1.5.2) - - Net_SMTP (1.2.11) + - suhosin.session.encrypt disabled + - mbstring.func_overload disabled + - magic_quotes_runtime disabled * PHP compiled with OpenSSL to connect to IMAPS and to use the spell checker -* A MySQL or PostgreSQL database engine or the SQLite extension for PHP +* A MySQL (4.0.8 or newer), PostgreSQL, MSSQL database engine + or the SQLite extension for PHP * One of the above databases with permission to create tables -* An SMTP server or PHP configured for mail delivery +* An SMTP server (recommended) or PHP configured for mail delivery INSTALLATION @@ -42,16 +48,32 @@ INSTALLATION are writable by the webserver - /temp - /logs -3. Create a new database and a database user for RoundCube (see DATABASE SETUP) +3. Create a new database and a database user for Roundcube (see DATABASE SETUP) 4. Point your browser to http://url-to-roundcube/installer/ -5. Follow the instructions of the install script (or see MANUAL CONFINGURATION) +5. Follow the instructions of the install script (or see MANUAL CONFIGURATION) 6. After creating and testing the configuration, remove the installer directory 7. Done! +CONFIGURATION HINTS +=================== + +Roundcube writes internal errors to the 'errors' log file located in the logs +directory which can be configured in config/main.inc.php. If you want ordinary +PHP errors to be logged there as well, enable the 'php_value error_log' line +in the .htaccess file and set the path to the log file accordingly. + +By default the session_path settings of PHP are not modified by Roundcube. +However if you want to limit the session cookies to the directory where +Roundcube resides you can uncomment and configure the according line +in the .htaccess file. + + DATABASE SETUP ============== +Note: Database for Roundcube must use UTF-8 character set. + * MySQL ------- Setting up the mysql database can be done by creating an empty database, @@ -70,18 +92,19 @@ Note 1: 'password' is the master password for the roundcube user. It is strongly recommended you replace this with a more secure password. Please keep in mind: You need to specify this password later in 'config/db.inc.php'. -Note 2: For MySQL version 4.1 and up, it's recommended to create the database for -RoundCube with utf-8 charset. - * SQLite -------- -Sqlite requires specifically php5 (sqlite in php4 currently doesn't -work with roundcube), and you need sqlite 2 (preferably 2.8) to setup -the sqlite db (sqlite 3.x also doesn't work at the moment). Here is +You need sqlite 2 (preferably 2.8) to setup the sqlite db +(sqlite 3.x also doesn't work at the moment). Here is an example how you can setup the sqlite.db for roundcube: # sqlite -init SQL/sqlite.initial.sql sqlite.db +Loading resources from SQL/sqlite.initial.sql +SQLite version 2.8.16 +Enter ".help" for instructions +sqlite> .exit +# chmod o+rw sqlite.db Make sure your configuration points to the sqlite.db file and that the webserver can write to the file and the directory containing the file. @@ -89,7 +112,7 @@ webserver can write to the file and the directory containing the file. * PostgreSQL ------------ -To use RoundCube with PostgreSQL support you have to follow these +To use Roundcube with PostgreSQL support you have to follow these simple steps, which have to be done as the postgres system user (or which ever is the database superuser): @@ -106,6 +129,14 @@ versions don't have a -O option for the createdb, so if you are using that version you'll have to change ownership of the DB later. +Database cleaning +----------------- +Do keep your database slick and clean we recommend to periodically execute +bin/cleandb.sh which finally removes all records that are marked as deleted. +Best solution is to install a cronjob running this script daily. + + + MANUAL CONFIGURATION ==================== @@ -122,7 +153,84 @@ increase the allowed size of file attachments, for example: UPGRADING ========= -If you already have a previous version of RoundCube installed, +If you already have a previous version of Roundcube installed, please refer to the instructions in UPGRADING guide. +OPTIMISING +========== + +There are two forms of optimisation here, compression and caching, both aimed +at increasing an end user's experience using Roundcube Webmail. Compression +allows the static web pages to be delivered with less bandwidth. The index.php +of Roundcube Webmail already enables compression on its output. The settings +below allow compression to occur for all static files. Caching sets HTTP +response headers that enable a user's web client to understand what is static +and how to cache it. + +The caching directives used are: + * Etags - sets at tag so the client can request is the page has changed + * Cache-control - defines the age of the page and that the page is 'public' + This enables clients to cache javascript files that don't have private + information between sessions even if using HTTPS. It also allows proxies + to share the same cached page between users. + * Expires - provides another hint to increase the lifetime of static pages. + +For more information refer to RFC 2616. + +Side effects: +------------- +These directives are designed for production use. If you are using this in +a development environment you may get horribly confused if your webclient +is caching stuff that you changed on the server. Disabling the expires +parts below should save you some grief. + +If you are changing the skins, it is recommended that you copy content to +a different directory apart from 'default'. + +Apache: +------- +To enable these features in apache the following modules need to be enabled: + * mod_deflate + * mod_expires + * mod_headers + +The optimisation is already included in the .htaccess file in the top +directory of your installation. + +If you are using Apache version 2.2.9 and later, in the .htaccess file +change the 'append' word to 'merge' for a more correct response. Keeping +as 'append' shouldn't cause any problems though changing to merge will +eliminate the possibility of duplicate 'public' headers in Cache-control. + +Lighttpd: +--------- +With Lightty the addition of Expire: tags by mod_expire is incompatible with +the addition of "Cache-control: public". Using Cache-control 'public' is +used below as it is assumed to give a better caching result. + +Enable modules in server.modules: + "mod_setenv" + "mod_compress" + +Mod_compress is a server side cache of compressed files to improve its performance. + +$HTTP["host"] == "www.example.com" { + + static-file.etags = "enable" + # http://redmine.lighttpd.net/projects/lighttpd/wiki/Etag.use-mtimeDetails + etag.use-mtime = "enable" + + # http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModSetEnv + $HTTP["url"] =~ "^/roundcubemail/(plugins|skins|program)" { + setenv.add-response-header = ( "Cache-Control" => "public, max-age=2592000") + } + + # http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ModCompress + # set compress.cache-dir to somewhere outside the docroot. + compress.cache-dir = var.statedir + "/cache/compress" + + compress.filetype = ("text/plain", "text/html", "text/javascript", "text/css", "text/xml", "image/gif", "image/png") +} + +