Recommended Server Setup

Hardware

Depends on your traffic and usage amount. But ding.TING are pretty heavy and likes plenty of CPU and RAM.
A usual virtual server from DBC aimed for small to medium library size comes with a full dual-core CPU and 2GB of RAM. 4GB is better if you’re going for Varnish and Memcached.
Also you will need at least 30GB harddisk (covers are stored temporary, and it takes up a lot of space).

Software

We assume that the OS is a Linux/Unix environment, the system has only been production tested on Debian (Lenny), but should work on most Linux/Unix based systems. Windows is probably a world of pain.

Apache

VERSION

  • 2.2.x or higher

INFO

  • Listen 80 (port 80 is default, if you install Varnish then change this to something else, e.g. port 8080)
  • mod_rewrite enabled
  • AllowOverride All (in order to allow .htaccess rules)
  • Usually we create 2 virtual hosts - staging and production
    • staging: it’s a good idea to password protect this in order to avoid search engines to index it.

MySQL

VERSION

  • 5.x

INFO

  • At some point we will add a default configuration for this, but it depends on your server setup
  • Right now all tables are InnoDB Engine

PHP

VERSION

  • 5.2.6 or newer (NOT 5.3.x!, this is currently untested and will break some features)

INFO

php.ini

  • memory_limit = 128M
  • upload_max_filesize = 32M (in order for the backup/migrate drupal module to function)
  • post_size = 32M (in order for the backup/migrate drupal module to function)
  • max_execution_time = 60
  • date.timezone = Europe/Copenhagen (if you’re in Denmark :-) )
  • display_errors = Off
  • error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
  • log_errors = On
  • short_open_tags = Off
  • register_globals = Off
  • magic_quotes_gpc = On
  • safe_mode = Off
  • file_upload = On

Packages to be installed

  • php-apc (is usually activated via apc.ini)
  • php5-curl (is usually activated via curl.ini)
  • php5-gd (is usually activated via gd.ini)
  • php5-memcache (version 2.2.1 or higher, but NOT 3.x)
  • php5-mysql
  • mysqli
  • pdo_mysql
  • php-soap

Drush (Drupal Shell util)

Install drush as it will make your life and deployment easier!
http://drupal.org/project/drush

Newest version is fine.
There is installation information in README.txt but if you put the drush folder in /usr/local/lib/ and add this path to $PATH, then it will make everything easier for you. Again, we assume that you’re on a Debian/Linux environment.

Utils

  • git-core

Utils for production environments

  • Varnish - version 2.0.x
  • Memcached (latest stable version)
  • Munin (http://munin-monitoring.org/) - very nice server-statistics with plugins for a lot of stuff

Varnish

We strongly encourage you to use Varnish as an reverse proxy caching mechanism. It works wonders for anonymous users, and is not too difficult to set up.
Remember that Varnish only works properly if your ding.TING site is using the optimized Drupal core Pressflow (described in Ding Documentation 2.0).
Take a look at our default ding.vcl (Varnish configuration file) that works with Varnish in multiple versions:

https://github.com/dingproject/ding-deploy/tree/master/conf

If you do install Varnish, then we usually makes it listen on port 80 and then use Apache as backend on port 8080.

Other stuff

  • Remember to open for port 8080 in the firewall if you install Varnish
  • If your firewall restricts outgoing traffic, then you must open up for port 22 and 443. These are required in order to access external git repositories via SSH or HTTPS
Grupper: