At a conceptual level, the Drupal stack looks like Figure 1-5. Drupal is a sort of middle layer between the backend (the stuff that keeps the Internet ticking) and the frontend (what visitors see in their web browsers).
In the bottom layers, things like your operating system, web server, database, and PHP are running the show. The operating system handles the "plumbing" that keeps your website running: low-level tasks such as handling network connections, files, and file permissions. Your web server enables that computer to be accessible over the Internet, and serves up the correct stuff when you go to http://www.example.com. A database stores, well, data: all of the website's content, user accounts, and configuration settings, in a central place for later retrieval. And PHP is a programming language that generates pages dynamically and shuffles information from the database to the web server.
Drupal itself is composed of many layers as well. At its lowest layer, it provides additional functionality on top of PHP by adding several subsystems, such as user session handling and authentication, security filtering, and template rendering. This section is built upon by a layer of customizable add-on functionality called modules, which will be discussed in the next section. Modules add features to Drupal and generate the contents of any given page. But before the page is displayed to the user, it's run through the theme system, which allows modification and precise tweaking for even the pickiest designers' needs. The theme system is covered in detail in Chapter 11.
We've talked about the "old" way of building websites using static HTML files, the transition to collections of scripts, and the "new" way: full-featured web applications that manage the entire website. This third way—Drupal's way—requires a new set of conceptual building blocks. Every website you build with Drupal will use them!
Add-on modules (Fivestar, Organic Groups, Calendar...)
Core modules (User, Node, Block.)
Figure 1-5. How Drupal and its conceptual layers fit with other layers of a website
Was this article helpful?