You are here
A Drupal Server can have many configurations. This is one of it's strengths as a content management system, as it can run in many types of environments. Drupal 7 and Drupal 8 are going to have much better capabilties than Drupal 5 and 6 in this respect, as they expand Drupal to be able to run in even more database and HTTP server environments. If you aren't sure if your current configuration will work, please check out the information below. If you already know what you are doing, you can skip the requirements and head right on down to the Downloads section where you can Download Drupal CMS for your own web server.
Drupal Server Requirements
Below you can find the server requirements for Drupal.
A minimum base installation requires at least 3MB of disk space but you should assume that your actual disk space will be somewhat higher. For example, if you install many contributed modules and contributed themes, the actual disk space for your installation could easily be 40 MB or more (exclusive of database content, media, backups and other files).
A useful FAQ (http://drupal.org/node/59680) explains how to use phpinfo to get the details of your system. For example, phpinfo will tell you if you have a database already installed and what version your system is running. Phpinfo will also tell you what php variables are set as well as many other helpful things.
Drupal has been deployed successfully on both Apache, IIS, and Nginx.
- Drupal will work on Apache 1.3 or Apache 2.x hosted on UNIX/Linux, OS X, or Windows. The majority of Drupal development and deployment is done on Apache, so there is more community experience and testing performed on Apache than on other web servers.
- You can use the Apache 'mod_rewrite' extension to allow for clean URLs.
- Drupal core will work using IIS 5, IIS 6, or IIS 7 if PHP is configured correctly.
- To achieve clean URLs you may need to use a third party product. For IIS7 you can use the Microsoft URL Rewrite Module or a third party solution.
- When using Drupal on IIS 7 with fastcgi you must install Hotfix kb954946, or wait until the hotfix appears in a package update (recommended). KB954946 was included in Windows 2008 Server SP2
- Drupal core will work with Nginx .8.x if PHP is configured properly by using with either FastCGI or PHP-FPM.
- Nginx does not use .htaccess files, so you will need to configure your rewrite rules and redirects with Nginx syntax to allow for clean URLs.
Drupal is being developed to be web server independent, but we have limited or no reports of successful use on web servers not listed here.
The total file size of your Drupal installation will depend on what you add to your site, but Drupal core files alone will take up approximately 2 to 3 MB uncompressed. The exact size depends on the version of Drupal you have installed.
Recommended: MySQL 4.1 or MySQL 5.0
- Drupal 5.x and earlier supports MySQL 3.23.17 or higher. MySQL 4.1 or higher is strongly recommended.
- Drupal 6 supports MySQL 4.1 or higher.
- Drupal 7 will only support MySQL 5.0.15 or higher, and requires the PDO database extension for PHP (see PHP section below).
NOTE: Drupal makes use of some features not available on some inexpensive hosting plans so please check that your host allows database accounts with the following rights:
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER.
These rights are sufficient to run Drupal core 6.x.
Some contributed modules, and also Drupal core 5.x (but not Drupal core 6.x), additionally require the following rights:
CREATE TEMPORARY TABLES, LOCK TABLES.
- Note: If your system/host is running MySQL 4.1 or newer and you receive the error "Client does not support authentication protocol requested by server", address the problem by following the instructions provided by MySQL AB. There is a minor OS issue with some MySQL 5+ installations primarily on Windows but affecting some versions of Unix/Linux as well.
- Note: When using Drupal 5.x or later, particularly with contributed modules, it may be necessary to set the system variable max_allowed_packet to at least 16M. Some inexpensive hosting plans set this value too low (the MySQL default is only 1M). In that case, you may need to choose a better hosting plan. A value of 1M may be sufficient for 5.x.
- Note: Drupal supports MyISAM and InnoDB table types. NDB tables (MySQL Cluster) are not supported.
Note that if your web hosting account is set up with a graphic control panel such as Plesk or CPanel, it is very likely that you do not need to worry about installing a driver for MySQL -- it is probably already installed on your server. You might wish to simply create your database and proceed with installing Drupal, and then refer back to Drupal documentation for specific troubleshooting help if you run into problems.
PostgreSQL 7.4 or higher
- Note: Some contributed modules are not as abstracted from MySQL-specific code as everyone would like. If you are familiar with PostgreSQL please file issues with those contributed modules as you find them.
- Drupal 7 will only support PostgreSQL 8.3 or higher
- PHP 5.2.6 for Windows has a bug in its pgsql extension. You will need to replace it with the php_pgsql.dll from version 5.2.5.
SQLite 3.x - Drupal 7 only
- Note: Some contributed modules are not as abstracted from MySQL-specific code as everyone would like. If you are familiar with SQLite please file issues with those contributed modules as you find them.
Currently other databases, such as Microsoft SQL Server, Oracle, and MongoDB are not supported in Drupal core, but various efforts are underway to supply support. Please see discussions in the Enterprise Group, or projects http://drupal.org/project/oracle, http://drupal.org/project/sqlsrv, and http://drupal.org/project/mongodb_dbtng if you are interested in working on database support.
Recommended: PHP 5.2.x
Required: PHP version 4.4.0 or higher (Contributed modules may not support this version of PHP)
- PHP 5.3 is not yet supported by Drupal 5.x, but is supported by Drupal 6.14 core and higher (see the release notes for 6.14) and also by Drupal 7.x. Note that some contributed modules may not be compatible with PHP 5.3, and that some PHP 5.3 configurations still show warnings with Drupal 6.14; work is ongoing to resolve the latter in #360605: PHP 5.3 Compatibility.
- PHP 5.2 or higher will be a requirement for Drupal 7.
- PHP memory requirements can vary significantly depending on your use of modules. While 16 MB may be sufficient for a default Drupal 6 installation and 30 MB may be sufficient for a default Drupal 7 installation, a production site with a number of commonly used modules enabled (CCK, Views etc.) could require 64 MB or more. Some installations may require much more, especially with media-rich implementations. If you are using a hosting service it is important to verify that your host can provide sufficient memory for the set of modules you are deploying or may deploy in the future. (See the Increase PHP memory limit page in the Troubleshooting FAQ for additional information on modifying the PHP memory limit.)
- The PHP extension for connecting to your chosen database must be installed and enabled. Drupal's currently supported database connectors are: mysql (the original MySQL extension), mysqli (an improved connector for newer MySQL installations), and pgsql (for PostgreSQL). Note: PHP 5.x no longer enables the mysql extension by default. Please read the links above for installing and enabling your chosen connector. Additionally, Drupal 6.x does not provide the option to select the mysql connector if mysqli is enabled in your PHP configuration.
- PHP XML extension (for Blog API, Drupal, and Ping modules). This extension is enabled by default in a standard PHP installation; the Windows version of PHP has built-in support for this extension.
- An image library for PHP such as the GD library is needed for image manipulation (resizing user pictures, image and imagecache modules). GD is included with PHP 4.3 and higher and enabled by default. ImageMagick is also supported for basic image manipulations in Drupal core but there is much less support from contributed modules.
- PHP needs the following configuration directives for Drupal to work (only directives that differ from the default php.ini-dist / php.ini-recommended):
- register_globals: off; this is the default value, but some hosts have it enabled
- error_reporting set to E_ALL & ~E_NOTICE. Work is ongoing to change this to E_ALL for Drupal 6 and Drupal 7.
- safe_mode: off. Safe mode may interfere with file and image uploads.
- Php Data Objects (PDO) must be activated for Drupal 7 to install and run correctly. Look in your php.ini. Uncomment (remove the leading semicolin) at line extension=php_pdo.dll, extension=php_pdo_mysql.dll. If these lines are not there, you will need to add them. You can also use
pecl install pdoto install pdo, and then
pecl install pdo_mysql(for instance), to install the PDO database driver. More information can be found on the What is PDO page.
- In addition, we recommend the following setting: session.cache_limiter: nocache
- Some of these settings are contained in the default .htaccess file that ships with Drupal, so you shouldn't need to set them explicitly. Note, however, that setting PHP configuration options from .htaccess only works under the following conditions:
- With Apache (or a compatible web server)
- If the .htaccess file is actually read, i.e. AllowOverride is not None
- If PHP is installed as an Apache module
- See the PHP manual for how to change configuration settings for other interfaces to PHP.
- Drupal 7 may require the time parameter to be at least 30 seconds.
- In some shared hosting environments, access to these settings is restricted. If you cannot make these changes yourself, please ask your hosting provider to adjust them for you.
Note: if you meet these requirements but still have problems with your site, be sure to read through the Webhosting Troubleshooting FAQ.
Drupal releases are available in 2 stable releases and one development release during a development cycle. Here are the current stable Drupal releases and the current Drupal development release.
Drupal 7 - Current Version Stable Release
Drupal 6 - Previous Version Stable Release
Drupal 8 - Currently in Development State
Head over to the Drupal project page page to get the latest version of the release you want to run. Currently I would suggest using Drupal 6 for production websites until Drupal 7 has a full version 1 release.