Drupal is free, open-source software that is used to build websites and applications. Although it is recognized as a Content Management System (CMS), different kinds of applications can be built upon it. Due to its flexibility, digital solutions can be developed with Drupal to transform businesses, charitable organizations, educational institutions, and communities.


There are different types of applications running Drupal. These include:

  • Blogs
  • Personal websites
  • Corporate websites
  • Corporate intranets
  • Online stores
  • Customer Relationship Management (CRM) applications
  • Social networking sites
  • Support forums

Who uses Drupal? showcases a number of high-profile and high-traffic sites running Drupal. Undoubtedly, there are other innovative applications powered by Drupal out there.


Drupal is written in PHP, so it will run on any web server that supports the PHP programming language, e.g., Apache, Nginx, Microsoft IIS, etc. For development purposes only, even the web server built into PHP (as of version 5.4.0) is sufficient. The project gives special consideration to Apache and IIS by including some security features with the .htaccess and web.config files in the core package.

Drupal stores content and configuration in a database. The recommended database server is MySQL, MariaDB, or Percona Server. However, others are supported, and they include PostgreSQL, SQLite, Microsoft SQL Server, Oracle, and MongoDB.


The PHP code is organized in modules, which can be enabled and disabled. When a module is enabled, it provides a set of features, e.g., node (for creating and displaying content), taxonomy (for tagging and categorizing content), book (for organizing content in a hierarchy).

Drupal comes with many modules, and they are referred to as core. The application framework is extensible, and members of the community have made the extensions they have written available to others. There are over 38,000 contributed modules available for free download on drupal.org. If a special feature is required for a project, it can be implemented in a module which is then referred to as custom. If it is written in a way that others can find useful, then it may be contributed to the community where it begins life as a contributed module.

Apart from the logic, the presentation layer is defined in themes. Just like modules, a site can have several themes which can be enabled or disabled. By default, there is a different theme for the user-facing parts of the site and another one for the administrative sections.

Users may be assigned one or more roles and each role has permissions set, which control access to resources on the site.

A developer sometimes creates a profile which defines installation steps, modules, themes, and other things required for a site. If any other developer wants to create a site based on an installation profile, they will have to find all the necessary modules, libraries, and themes. A distribution goes a step further by collecting all the pre-requisites for a profile and packaging them together with Drupal core into a single package which makes it a lot easier to use.

How it works

Drupal is used to build dynamic websites. Static sites have content in flat HTML files. On the other hand, Drupal has special instructions written in the PHP programming language, in files called scripts. In addition, there are other files called templates, which apart from the HTML tags describing how they should be displayed, have special markers or placeholders which will later be replaced with the actual content by the programming engine.

When a browser connects to a web server and asks for a document, the server determines the type of file the instructions for getting the document is written in. In the case of Drupal, it is the PHP engine that gets called into action.

It then checks whether a copy of the document is available. If there is a cached version, it sends it back to the browser. If not, it starts assembling the contents of the document. Perhaps, it needs to get data from some database tables. It queries the database and collates the result. This process may have to be repeated for different parts of the page such as blocks of content on the right and left side, header and footer.

The entire page is then assembled from different fragments of HTML template files. Links to images, CSS and Javascript files will be added in the right places. The nicely laid out page is then returned to the browser for display.


Drupal is best described as a CMS platform. New labels for it include advanced content management system (Advanced CMS), content management framework (CMF) or just framework. Whatever you like to call it, it is most certainly worth investing time and effort into learning it or building your next application with.