123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- INTRODUCTION
- ============
-
- 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
-
-
- REQUIREMENTS
- ============
-
- * The Apache, Lighttpd, Cherokee or Hiawatha web server
- * .htaccess support allowing overrides for DirectoryIndex
- * PHP Version 5.3.7 or greater including:
- - PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring (required)
- - PHP PDO with driver for either MySQL, PostgreSQL, SQL Server, Oracle or SQLite (required)
- - Libiconv, Zip, Fileinfo, Intl, Exif (recommended)
- - LDAP for LDAP addressbook support (optional)
- * PEAR and PEAR packages distributed with Roundcube or external:
- - Mail_Mime 1.10.0 or newer
- - Net_SMTP 1.7.1 or newer
- - Net_Socket 1.0.12 or newer
- - Net_IDNA2 0.1.1 or newer
- - Auth_SASL 1.0.6 or newer
- - Net_Sieve 1.3.2 or newer (for managesieve plugin)
- - Crypt_GPG 1.4.1 or newer (for enigma plugin)
- * php.ini options (see .htaccess file):
- - error_reporting E_ALL & ~E_NOTICE (or lower)
- - memory_limit > 16MB (increase as suitable to support large attachments)
- - file_uploads enabled (for attachment upload features)
- - session.auto_start disabled
- - suhosin.session.encrypt disabled
- - mbstring.func_overload disabled
- - magic_quotes_runtime disabled
- - magic_quotes_sybase disabled
- - register_globals disabled (PHP < 5.4)
- * A MySQL (4.0.8 or newer), PostgreSQL, MS SQL Server (2005 or newer), Oracle
- database or SQLite support in PHP
- * One of the above databases with permission to create tables
- * An SMTP server (recommended) or PHP configured for mail delivery
- * Composer installed either locally or globally (optional, for plugin installation)
-
-
- INSTALLATION
- ============
-
- 1. Decompress and put this folder somewhere inside your document root
- 2. Make sure that the following directories (and the files within)
- are writable by the webserver
- - /temp
- - /logs
- 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 CONFIGURATION)
- 6. After creating and testing the configuration, remove the installer directory
- 7. Check Known Issues section of this file
-
-
- CONFIGURATION HINTS
- ===================
-
- IMPORTANT! Read all comments in defaults.inc.php, understand them
- and configure your installation to be not surprised by default behaviour.
-
- Roundcube writes internal errors to the 'errors' log file located in the logs
- directory which can be configured in config/config.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.
- Note: See defaults.inc.php file for examples of DSN configuration.
-
- * MySQL
- -------
- Setting up the mysql database can be done by creating an empty database,
- importing the table layout and granting the proper permissions to the
- roundcube user. Here is an example of that procedure:
-
- # mysql
- > CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
- > GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost
- IDENTIFIED BY 'password';
- > quit
-
- # mysql roundcubemail < SQL/mysql.initial.sql
-
- 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'.
-
-
- * SQLite
- --------
- Versions of sqlite database engine older than 3 aren't supported.
- Database file and structure is created automatically by Roundcube.
- Make sure your configuration points to some file location and that the
- webserver can write to the file and the directory containing the file.
-
-
- * PostgreSQL
- ------------
- 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):
-
- $ createuser -P roundcube
- $ createdb -O roundcube -E UNICODE roundcubemail
- $ psql -U roundcube -f SQL/postgres.initial.sql roundcubemail
-
- Note: in some system configurations you might need to add '-U postgres' to
- createuser and createdb commands.
-
-
- * Microsoft SQL Server
- ----------------------
- Language/locale of the database must be set to us_english (1033). More info
- on this at http://trac.roundcube.net/ticket/1488918.
-
-
- Database cleaning
- -----------------
- To 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
- ====================
-
- First of all, copy the sample configuration file config/config.inc.php.sample
- to config/config.inc.php and make the necessary adjustments according to your
- environment and your needs. More configuration options can be copied from the
- config/defaults.inc.php file into your local config.inc.php file as needed.
- Read the comments above the individual configuration options to find out what
- they do or read http://trac.roundcube.net/wiki/Howto_Install for even more
- guidance.
-
- You can also modify the default .htaccess file. This is necessary to
- increase the allowed size of file attachments, for example:
- php_value upload_max_filesize 2M
-
-
- SECURE YOUR INSTALLATION
- ========================
-
- Access through the webserver to the following directories should be denied:
-
- /config
- /temp
- /logs
-
- Roundcube uses .htaccess files to protect these directories, so be sure to
- allow override of the Limit directives to get them taken into account. The
- package also ships a .htaccess file in the root directory which defines some
- rewrite rules. In order to properly secure your installation, please enable
- mod_rewrite for Apache webserver and double check access to the above listed
- directories and their contents is denied.
-
- NOTE: In Apache 2.4, support for .htaccess files has been disabled by
- default. Therefore you first need to enable this in your Apache main or
- virtual host config by with:
-
- AllowOverride all
-
-
- UPGRADING
- =========
-
- 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")
- }
-
-
- KNOWN ISSUES
- ============
-
- Installations with uw-imap server should set imap_disabled_caps = array('ESEARCH')
- in main configuration file. ESEARCH implementation in this server is broken (#1489184).
|