The Drupal overview

The Drupal way: manageable abstraction
Effective Web design is driven by the need to balance flexibility and simplicity. If a system is too simple, it can only be used for a single purpose - but if it is too flexible, it may be too difficult for new users to learn. Drupal strives to reconcile these conflicting goals by providing its users with the tools they need to make their own content management solution, while still providing some prebuilt components to help them get started. Thus, it can be described both as a content management system (CMS) and a content management framework (CMF) - one system which strives to have the strengths of both, without their deficiencies. Most CMS's are like a toy boat or toy truck - specific assumptions have been made about their use, assumptions it would be hard for you to override. Frameworks, on the other hand, provide you with raw materials only - you need to know a programming language, and have a clear design vision, to put them together. Drupal is like a Lego kit. Skilled developers have already made the building blocks - in the form of contributed modules - that you need to create a site that suits your needs, whether that is a news site, an online store, a social network, blog, wiki, or something else altogether.

Drupal in action
To make the contrast between Drupal and other CMS's more concrete, consider the example of a news site. You want to be able to post news articles on the site, and you want the homepage to have a section featuring the five most recent ones. Next, you decide that you want to add a blog section, and put a list of links to the five most recent of blog entries on the homepage as well. If you were using an ordinary CMS, first you would install a plugin that handled news articles and could put short blurbs on the homepage. Next, you¶d install a plugin that would track the latest blog posts and put a list of those on the homepage. Each plugin would only be responsible for tracking and managing a particular kind of content, and would remain relatively isolated from the others. But, what happens when you have that brilliant middle-of-the-night idea, and want to blend these two functions by showing a list of blog posts about the latest news items, ordered by most active contributor first? If you¶re using a ³toy truck´ CMS, you may be out of luck, or need to hire a developer to write you a custom plugin from scratch. But through the power of the Drupal way, the way of manageable abstraction, you can whip out a kit full of parts and knock this together pretty quickly. (Hint: just use Views.) Since Drupal's modules do things in a standard way, and interface with a common underlying system, building all sorts of clever, customized features is just a matter of snapping parts together.

Of course, this flexibility comes at a certain cost. While a toy truck is instantly understandable and ready to use without much thought, a modular vehicle construction kit will by nature require you to read the instruction manual first. The building blocks are out there, but you'll need to learn how they fit together before you can take a paper prototype and turn it into a fully-featured website. Drupal core, and the thousands of contributed modules that build on it, require an initial investment to learn, but mastering the Drupal way is immensely rewarding. Drupal's passionate community is a testament to its power to liberate site builders from the simplicity/flexibility dilemma. Once you've tried Drupal, you'll likely leave your toy truck and boat in the closet gathering dust.

How Drupal does it
Intrigued yet? Let's take a closer look at how Drupal works. People often think of a website as a collection of static pages, with some functions (like a blog, or a news engine) thrown in to round it out. When they go to manage their site, they are thinking in terms of a tree-like hierarchy of pages that they will go in and edit. Drupal, on the other hand, treats most content types as variations on the same concept: a node (more on this in a moment). Static pages, blog posts, and news items (some possible node types) are all stored in the same way, and the site's navigation structure is designed separately by editing menus, views (lists of content), and blocks (side content which often have links to different site sections). It¶s a lot like the separation you find in standards-compliant page coding²XHTML provides the meaningful structure of the information, while CSS arranges it for presentation. In Drupal, nodes hold the structured information pertaining to a blog post (such as title, content, author, date) or a news item (title, content, go-live date, take-down date), while the menu system, as well as taxonomy (tagging of content) and views, create the information architecture. Finally, the theme system, along with display modules like Panels, controls how all this looks to site visitors. Since these layers are kept separate, you can provide a completely different navigation and presentation of your content to different users based on their specific needs and roles. Pages can be grouped differently, prioritized in a different order, and various functions and content can be shown or hidden as needed.

Nodes: The secret to Drupal's flexibility
We don't talk about "nodes" every day, but since they are at the heart of Drupal's design, they deserve further investigation. At its most basic, a node is a set of related information. When you create a new blog post, you are not only defining its body text, but also its title, content, author link, creation date, taxonomy (tags), etc. Some of these elements will be shown by the theme layer when the node is displayed. Others are meta-data that control when the node will show up at all - such as taxonomy or publishing status.

Pick one of the included themes. Collaborative at the core Creating an informational website that broadcasts from ³one to many´ is something that most CMSs do right out of the box. . sorting their contents so that they can be displayed individually with their own skins. However. use taxonomy to give site content structured. and contains the same basic information. hierarchical categorization or free-form tagging. views. Do you want to have visitors log in? Switch authentication on or off. With a simple FTP upload and a few short web-based configuration questions. and feature sets as there are distinct audiences for your site. customize extensively Drupal's flexibility is incredible. Comments aren¶t just part of the blog system. such as the five most recent blog articles described earlier). while also generating cross-blog topical digests. and you can install plugins to handle having a community of users. panels) in which to display them. You can define as many navigation schemes. and give each user their own gallery of taggable photos? Drupal is designed from the ground up so site builders can delegate content creation. you can set up a blog. since there isn't a separate "blog system. news items. and configuring the structures (menus. each can be handled in a standard way by both Drupal core and contributed modules. All you have to do is define who gets to do what on your site (through user permissions). customized user profiles? What if you want to also integrate that in with forums. but they also illustrate the Drupal way. and even site administration. book pages (which provide basic wiki features) and any other you may create.moving from "one to many" to "many to many. enable commenting on node types. to users. This allows site builders to choose exactly where they want content to show up. Most of a Drupal site builder's time is spent defining what kinds of information you want to store in your nodes. where Drupal really shines is when you want to empower site users to create content. and just start adding content." Comments can be enabled on any node type you choose . As suggested before. Want to switch on some of the included tools? Turn on forums. you aren't limited to a single way of presenting your site's content. and then you can start collaborating. create forums and polls.blog posts. top five lists. custom themes ("skins" for the site). but what happens when you want to give individual blogs to each of your users. a wiki-like environment. you can connect with your database and have your first Drupal site up and running within an hour. but installing it is surprisingly easy. turn on the book module for wiki-like collaboration. and exactly how they want it to look in each case. and links out to elaborate.Since each item of content is stored as a node. and connect with each other ." With some CMS's. taxonomy trees. Comments are second-class citizens in Drupal compared to nodes. Get started quickly. blocks (small bits of content.

Modules build on Drupal's core . he Drupal flow If you want to go deeper with Drupal. No cruft. No old-school tables. Drupal¶s generated markup is clean. standards-compliant XHTML. Before anything can be displayed on the site. it must be input as data. At the base of the system is the collection of nodes²the data pool. No kidding. The next layer up is where modules live. There are five main layers to consider: 1. 2. Modules are functional plugins that are either part of the Drupal core (they ship with Drupal) or they are contributed items that have been created by members of the Drupal community. you should understand how information flows between the system's layers.Do you want your own skin applied to the site? Drupal's theme system uses tiny snippets of PHP that you can insert into the appropriate spots in your design to replace your placeholder Lorem Ipsum text with dynamic content.

we find blocks and menus. Templates can also be assigned on-thefly based on user permissions. Did you forget to place the block. 4.php file. It also explains how to do a "multi site" installation. but you still don¶t see what you want on your site. They represent the innovation and collaborative effort of everyone from individuals to large corporations. Maybe the module is installed and activated. This section covers preparing for installation. and then can be placed in various spots in your template (theme) layout. and the steps that should be done after running the installation script has completed. This directional flow from bottom to top controls how Drupal works. 5. and in turn. with some PHP variables intermixed. as well as only showing on certain defined pages. Blocks often provide the output from a module or can be created to display whatever you want. Also included with each theme is a set of functions that can be used to override standard functions in the modules in order to provide complete control over how the modules generate their markup at output time. or only for certain defined users. On the top layer is the site theme (the "skin"). as in "B"? Or are your user permission settings conflicting with what you want and your users are not set to see the output as in "C"? Additionally²as mentioned earlier²getting the kind of granular control you want over the details of the XHTML module outputs requires understanding this flow. and when the system goes to output. or you¶d like to assign a CSS class to something? You accomplish this by copying the output function from the module and pushing it up to the functions document in your theme. This is made up predominantly of XHTML and CSS. 3. and this is making everything downstream non-functional (as in "A" in the diagram above). Is some new functionality you want not showing up? Perhaps you uploaded the module into the system but have not activated it yet. and more. only you wish the markup was just a little bit different? Maybe you¶d like it to use different tags. set up e-commerce.functionality. Modify the code there. where a number of different Drupal sites run off the same code base. users are assigned to these roles in order to grant them the defined permissions. . Next are user permissions. At the next layer. There are thousands of different options within the fastgrowing repository of contributed Drupal modules. allowing you to customize the data items (fields) on your node types. Blocks can be configured to output in various ways. Are you using a module that does exactly what you want. so Drupal-generated content can go in the appropriate spots. programmatically sorting and display of content (custom output controlled by filters you define). This is where settings are configured to determine what different kinds of users are allow to do and see. Installation guide Drupal provides an installation script that automatically populates database tables and configures the correct settings in the settings. it will see your customized function and use that instead. Permissions are defined for various roles. running the installation script itself.

For help with Drupal terms. new modules. There is also a handbook page listing Drupal distributions. you should also review the best practices section. System requirements Resources A minimum base installation requires at least 3MB of disk space but you should assume that your actual disk space will be somewhat higher. This documentation focuses on performing tasks at the command line. if you install many contributed modules and contributed themes. Phpinfo will also tell you what php variables are set as well as many other helpful things. For example. Web server Drupal has been deployed successfully on both Apache and IIS. For information about setting up a web server on a local computer. Other tools Some of the steps in the installation process can be performed with tools such as graphical applications for moving files and managing databases or tools that are provided by your hosting service. see the Local Server Setup section of the Developing for Drupal guide. For information on using other tools. the actual disk space for your installation could easily be 40 MB or more (exclusive of database content.Before proceeding with your first Drupal installation.org/node/59680) explains how to use phpinfo to get the details of your system. Creating a test site on a local computer It is considered a good practice to do all development work on a separate test site before making changes to a production site. see the documentation that accompanies the application or is provided by your hosting service. . A useful FAQ (http://drupal. phpinfo will tell you if you have a database already installed and what version your system is running. media. You may be able to locate one on the Drupal hosting handbook page. or specific Drupal support. Alternative methods for installation Some web hosting companies offer "one-click" installations of Drupal. see the terminology page. These may be of help as well. which include installation profiles and pre-packaged distributions of Drupal and modules. A test site allows you to evaluate the impact of upgrades. backups and other files). For example. modifications to themes etc. without causing disruption to your live site.

1. These rights are sufficient to run Drupal core 6. OS X.23. or IIS 7 if PHP is configured correctly. . or Windows. but we have limited or no reports of successful use on web servers not listed here.15 or higher.x and earlier supports MySQL 3.0. but Drupal core files alone will take up approximately 2 to 3 MB uncompressed. DELETE. UPDATE. Database server Recommended: MySQL (or an equivalent such as MariaDB) y y y Drupal 5. DROP. INSERT. and requires the PDO database extension for PHP (see PHP section below).x). ALTER. For IIS7 you can use the Microsoft URL Rewrite Module or a third party solution. and version 5. There are several drop-in replacements for MySQL. additionally require the following rights: CREATE TEMPORARY TABLES. The exact size depends on the version of Drupal you have installed. Drupal 7 will only support MySQL 5.44 (or greater) is recommended.1 or higher. KB954946 was included in Windows 2008 Server SP2 Drupal is being developed to be web server independent. INDEX. so there is more community experience and testing performed on Apache than on other web servers.x. When using Drupal on IIS 7 with fastcgi you must install Hotfix kb954946. or wait until the hotfix appears in a package update (recommended).Apache (Recommended) y y Drupal will work on Apache 1. IIS 6. but they have not specifically undergone testing. LOCK TABLES. and also Drupal core 5. Microsoft IIS y y y Drupal core will work using IIS 5.3 or Apache 2. Drupal 6 supports MySQL 4. The total file size of your Drupal installation will depend on what you add to your site. You can use the Apache 'mod_rewrite' extension to allow for clean URLs. 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. CREATE.1 or higher is strongly recommended.x hosted on UNIX/Linux.x (but not Drupal core 6. Some contributed modules. To achieve clean URLs you may need to use a third party product. The majority of Drupal development and deployment is done on Apache. MySQL 4.17 or higher. Drupal has been extensively tested with MariaDB. It is also likely that other drop-in replacements will work well with Drupal.

Note: Drupal supports MyISAM and InnoDB table types.Drupal 7 only Note: Some contributed modules are not as abstracted from MySQL-specific code as everyone would like.it is probably already installed on your server. Please see discussions in the Enterprise Group if you are interested in working on database support.3 or higher PHP 5.2. PostgreSQL Note: Some contributed modules are not as abstracted from MySQL-specific code as everyone would like. particularly with contributed modules. You will need to replace it with the php_pgsql. In that case.x. Note: When using Drupal 5. If you are familiar with SQLite please file issues with those contributed modules as you find them. Other database engines Microsoft SQL Server and Oracle are supported by an additional module. . 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. and then refer back to Drupal documentation for specific troubleshooting help if you run into problems. you may need to choose a better hosting plan.2.1 or newer and you receive the error "Client does not support authentication protocol requested by server".Note: If your system/host is running MySQL 4.6 for Windows has a bug in its pgsql extension. There is a minor OS issue with some MySQL 5+ installations primarily on Windows but affecting some versions of Unix/Linux as well. SQLite 3.x .1 or higher Drupal 7 will only support PostgreSQL 8. it may be necessary to set the system variable max_allowed_packet to at least 16M. y y y Drupal 6 supports PostgreSQL 7. it is very likely that you do not need to worry about installing a driver for MySQL -.dll from version 5.x or later. If you are familiar with PostgreSQL please file issues with those contributed modules as you find them. A value of 1M may be sufficient for 5. Some inexpensive hosting plans set this value too low (the MySQL default is only 1M).5. You might wish to simply create your database and proceed with installing Drupal. address the problem by following the instructions provided by MySQL AB.

Some installations may require much more. This extension is enabled by default in a standard PHP installation. Drupal 6. but some hosts have it enabled o error_reporting set to E_ALL & ~E_NOTICE. Warning messages will be shown if the PHP configuration does not meet these requirements.2 or higher will be a requirement for Drupal 7. Please read the links above for installing and enabling your chosen connector. PHP memory requirements can vary significantly depending on the modules in use on your site.4. Views etc.PHP Recommended: PHP 5.) could require 64 MB or more. Uncomment (remove the leading semicolon) at line . If you have administrator rights on a Debian/Ubuntu server. image and imagecache modules).3 Compatibility. However.x does not provide the option to select the mysql connector if mysqli is enabled in your PHP configuration.x.ini-recommended): o register_globals: off. Work is ongoing to change this to E_ALL for Drupal 6 and Drupal 7. but is supported by Drupal 6. Additionally.14 core and higher (see the release notes for 6. Drupal 6 core requires PHP's memory_limit to be at least 16MB.3.x. PHP needs the following configuration directives for Drupal to work (only directives that differ from the default php. and Ping modules). while these values may be sufficient for a default Drupal installation. a production site with a number of commonly used modules enabled (CCK. and pgsql (for PostgreSQL). o Php Data Objects (PDO) must be activated for Drupal 7 to install and run correctly.ini. this is the default value.14) and also by Drupal 7. the Windows version of PHP has built-in support for this extension. Look in your php.x no longer enables the mysql extension by default. Drupal. (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. 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.x Required: PHP version 4.3 and higher and usually enabled by default. especially with media-rich implementations. Note that some contributed modules may not be compatible with PHP 5. Safe mode may interfere with file and image uploads. o safe_mode: off. mysqli (an improved connector for newer MySQL installations).3 is not yet supported by Drupal 5. and that some PHP 5. PHP XML extension (for Blog API. PHP 5. Note: PHP 5.0 or higher (Contributed modules may not support this version of PHP) y y y y y y PHP 5. work is ongoing to resolve the latter in #360605: PHP 5. and Drupal 7 core requires 32MB. and GD is not already available (see your phpinfo) it can usually be installed by going: sudo apt-get install php5-gd or on Redhat/Centos: sudo yum install php-gd y See the ImageMagick install instructions for your platform if you want that. Drupal's currently supported database connectors are: mysql (the original MySQL extension). An image library for PHP such as the GD library is needed for image manipulation (resizing user pictures.3 configurations still show warnings with Drupal 6. GD is included with PHP 4.ini-dist / php. ImageMagick is also supported for basic image manipulations in Drupal core but there is much less support from contributed modules.2.14.

but of course the site will not look very similar to how it looks in a browser that does support CSS. If you find a problem with browser compatibility in a contributed module or theme. In some shared hosting environments. although the functionality will of course be slightly different. browsers have varying levels of compliance with Internet standards such as CSS 2. i.x and later Opera 7 and later Safari 1. If you cannot make these changes yourself. you will need to add them.htaccess file is actually read.dll. Drupal 7 may require the time parameter to be at least 30 seconds. please ask your hosting provider to adjust them for you.htaccess only works under the following conditions: o With Apache (or a compatible web server) o If the . access to these settings is restricted. however. in all modern browsers that support CSS and JavaScript. It is also possible to use a browser that does not support CSS with Drupal. you will still be able to position blocks. extension=php_pdo_mysql. we recommend the following setting: session. contributed modules) are compatible with. in Drupal 6 running in a browser with JavaScript enabled. or some functionality in a contributed module that does not work at all without JavaScript enabled.cache_limiter: nocache Some of these settings are contained in the default .htaccess file that ships with Drupal.x and later Camino 1. The PECL version of PDO is not compatible with Drupal 7 and cannot be used. you can use a drag-and-drop interface to position blocks on the Blocks administration page (admin >> site building >> blocks). and fully functional.e.y y y y extension=php_pdo. so you shouldn't need to set them explicitly. More information can be found on the What is PDO page. o In addition. Here is an incomplete list of browsers that are known to work well with Drupal core and support all of its features: y y y y y y Internet Explorer 6. Browser requirements Websites built using just Drupal core (i.x and later Firefox 2. However.x and later Google Chrome It is also possible to use a browser that does not support JavaScript with Drupal. please submit an issue to report it to the module or theme maintainer. If these lines are not there. Note. If you don't have JavaScript. For instance. .dll. AllowOverride is not None o If PHP is installed as an Apache module See the PHP manual for how to change configuration settings for other interfaces to PHP. Some contributed modules and themes may not be compatible with all browsers. that setting PHP configuration options from .e. with no additional. but you will use an interface more like Drupal 5. where you will assign numerical weights to the blocks. so there may be minor variations in appearance.

org/project/devel. and it's fairly easy to run into this problem once you start adding contrib modules.) See the overhead of splitting a CSS file into two files for easier maintenance.Simultaneous PHP Connections . See the overhead of adding Google analytics to a page.CPU Thresholds The following discussions state: "Drupal regularly makes more than 100 queries per page load" (Does 1 query = 1 connection?) http://drupal. See the time saved by Drupal CSS and Javascript merging. here are some relevant discussions: Need suggested baselines for Server Resource Requirements It would help to know baseline requirements for Drupal and just the Core Modules: . Capacity Planning There are no definite figures available for Drupal's resource requirements. They will vary depending on what modules you have installed. . http://drupal.org/node/625898 Executed 595 queries in 207 milliseconds. Firefox Firebug measures and displays the download times within the browser. and what proportion log in rather than browse anonymously. how many users you have. it is the slowest download.org/node/312868 Measuring stuff The Devel module.org/node/190070 Some combinations of modules and options have a big impact and would be worth measuring in D7. In the absence of definite information. Menu entries expanded for drop down menus + path aliases + logged in users in D6: http://drupal. (for many sites. counts database calls and execution times.Known Issues It's worth mentioning here that IE6 has an problem with loading more than 30 stylesheets. "Is it reasonable to expect 100s of simultaneous connections" http://drupal.Simultaneous MySQL Connections .

a significant difference for logged in users. You could be adding hundreds of menu entries to an otherwise small small menu. When you add a cloud display module. Remeasure after adding a module. A logged in user will get a fresh menu on every page view. It is worth reporting the results. PDO is a lean. PDO is not an abstraction layer like PearDB. An add on module in D6 might add a special table with one row per node. What is PDO? PDO is an acronym for PHP Data Objects. Some parts of D7 are different and some parts hardly changed. Check the impact of Fields in your favourite add on modules. especially if the theme creates problems with CSS or Javascript merging. Some themes add their own file and database accesses. both positive and negative. Now do something as simple as listing your main menu and select Expanded for items with a lot of children. to the module developers. you might add a read of every node for every display. Run Firebug to compare the CSS and Javascript file downloads. How to enable PDO To enable PDO configure --enable-pdo and --with-pdo_sqlite --with_pdo_mysql or whatever database needs supporting by PDO. . This means developers can write portable code much easier. either document the problem or open an issue for possible improvement. consistent way to access databases. If you know of something that had a big impact in D6 then check it in D7. Remeasure after changing themes. You might find an alternative module that performs the reads less frequently and caches the result.Measure your Drupal 6 configuration and modules to see what has the greatest impact on performance then look in the issues to see if there are major changes for the D7 versions. The change from separate tables to a single table might make things faster by reducing accesses. Remeasure after changing a setting. That extra overhead might occur once every 5 minutes for anonymous users and once every page for logged in users. The change might also slow things down because the separate table uses an index for a lookup while the merged table uses a standard row by row search. Check known Drupal 6 performance problems in D7. Combine that with hidden entries behind drop down menus and you could have a big overhead. Where the impact is similar. A feature might add hundreds or thousands of database calls. In D7 the same module might add a field to the existing node fields. PDO is a more like a data access layer which uses a unified API (Application Programming Interface). An example: Adding path aliases in Drupal 6 had the side effect of adding a database call for every entry in the menu. Measure for both anonymous users and logged in users.

g. Make a note of the username and password. you will need to make sure php_pdo. Extract the Drupal files." Save and continue. read a more detailed version of these instructions. They are very similar. This will take you to the Drupal installer. add that user to the database. The preferred method for enabling them is to go to the Control Panel | Add/Remove Programs. Drupal 7 Step 1: Download y y y Download the latest version of Drupal 7. y For example. and a web server that meets a few basic requirements (e.XP). a database such as MySQL. Step 3: Make the sites/default directory writable. a web server such as Apache. Basic installation The following is a simple guide to create a Drupal site in a few easy steps. Make a note of the database name. on a Unix/Linux command line. then for Drupal 6 below. To follow these steps. For IIS. You can also skip to the command line quick install guide for developers. and PHP. then modify the installed extensions to include these two. Choose "Standard.) First there are steps for Drupal 7.tar. un-comment or add the appropriate lines in php. .dll exist in the php/ext directory. PDO DLLs are not enabled by default.ini. Create a user.x. which starts with: "Select an installation profile. or check out the installation troubleshooting guide.gz. use this command: chmod a+w sites/default Step 4: Install y y Browse to your new Drupal site. and restart the web server. You will get a file called drupal-x. then restart your server. you will need a SFTP client such as WinSCP or FileZilla. Upload all the files inside your drupal folder into the web root folder. Step 2: Create a database y y Create a new database through your hosting provider's control panel.Windows users y y For Apache. and grant the user full rights on the database. highlight your PHP installation and click "Change" (Change/Remove .dll and php_pdo_mysql." Save and continue. Specify "FastCGI". Log into your server using your SFTP client and navigate to the web root directory.

MySQL or SQLite). email. Save and continue. the username.com. you can set the site name and email from which the site will send out mail. Save and continue. You also set the username. create tables.y y y y Choose English or learn how to install Drupal in other languages. Enter the name of the database you created. Choose the type of database you created (e. The base URL is defined in your Web server configuration file and is specific to the document root where you placed your Drupal files. . and password. If you have installed Drupal on a Web server this will likely be a domain name such as http://example. Step 4: Run the installation script For Drupal 6 To run the install script point your browser to the base URL of your website. Save and continue. If you have installed Drupal on your desktop machine this URL might be http://localhost. You will be guided through several screens to set up the database. Log in to your new Drupal site. On the site information page.g. and password of the first administrator account.

.add the first user account and provide basic web site settings.

The "base URL" means the document root (directory) where you placed your Drupal files (and is . point your browser to the base URL of your web site.If you get any errors regarding the files directory and its permissions. For Drupal 7 To run the Drupal install script. see [#394704].

com/install. or add additional ones. If the installation process does not simply appear by entering the base URL of your site.example. 2.php" (for example http://www. but this may fail due to permission settings. follow the instructions in Step 2: Modify file permission.    sites/default/files sites/default/private sites/default/private/files These directories should be set to the following permissions chmod o+w sites/default/files OR chmod 777 sites/default/files o Missing settings.com.php or incorrect permissions If settings.php files. .) The standard profile also has a useful collection of modules pre-enabled for you. The "minimal" option is targeted toward more experienced Drupal site creators who wish to set up their own content types with associated publishing options. 3. Database logging.php).settings. Verify requirements If your installation directory is not yet configured properly. http://example. click the Learn how to install Drupal in other languages link. You can correct the settings individually and either refresh the browser screen or click 'Try again' to see whether there are any errors left. You will be guided through several screens: 1. add the file name "install. such as Article and Page. If you have installed Drupal on a web host this will likely be a domain name such as http://www.g. Select a language If you want to install using a language other than the default English. then you should point your browser to the subfolder (e. and Update status. (Of course you can later edit these default content types and their settings. and with appropriate publishing options already set.php and settings. The minimal profile has only three modules enabled: Block.defined in your web server configuration file). you will be informed at this step. Possible errors include: o Missing directories and/or incorrect permissions The installer will attempt to automatically set up a number of directories.php is missing or not accessible. Most people should select the "standard" option.com/subfolder). In this case you will find the missing directories listed. Choose which profile to use for the installation (standard or minimal). Note that you will need both the default. If you have installed Drupal on your desktop machine this URL might be http://localhost/drupal. If you installed Drupal in a subfolder. The standard option comes with default content types already enabled.example.

This username and password information allows Drupal to access your database. and password for the main administration account. You can also edit it later through the administration interface. as of Drupal 7.ini as an example of the location on a Windows box running WAMP). review and correct them now. and the "Administrator" site administrator user role that you will see when you visit the "Roles" and "Permissions" pages in the administration interface. Install profile A progress bar will appear and display notes from the installer regarding the progress of the installation. (This will be www.) o o In the Server settings field. for those of you familiar with that account from earlier versions of Drupal. . enter the Username. 5. E-mail address. Note that there is a distinction. Often updates relate to security issues and are important to perform. You only need to change the port if you are using a non-standard port number. 6. If there are any error messages. o In the Site name field enter the name you wish to use for the site. so the install script can create tables. The account you set up in the Site maintenance account section during installation is a super-user who has overall control over every aspect of the management and configuration of the site. However. enter the e-mail address that will be used by Drupal when it sends out notifications such as registration information. these will be created in the next step.example.2. select your Default country and Default time zone. Click "Save and continue". Click Save and continue at the bottom of the page.com/user/1. The Advanced options will allow you to change the database host ('localhost' is usually used in this entry: wamp/bin/apache/Apache2. On success you will see the Drupal installation complete screen. the next page will automatically load in your browser. o In the Site maintenance account field. If no errors are encountered.11/bin/php. o In the Site e-mail address field. The table prefix is useful if you are installing multiple instances of Drupal tables that share the same database. Set up database Enter the database name as well as the username and password for the database that you created in Step 3: Create Drupal's database. In the Update notifications field leave both boxes checked if you want your Drupal server to alert you when updates are required. Note that this is not the username and password for administering Drupal. You can also change the port and the table prefix.4. if you have restricted Internet connectivity (for example if you are behind a corporate firewall) you may want to leave these settings unchecked and test them later. between the main administration account that you set up on this page. Configure site Input the information for the first user account (which will be automatically assigned full administration permissions) and provide basic web site settings.

Secure your site After the installation is complete.php file later. and grant the user full rights on the database. Log into your server using your SFTP client and navigate to the web root directory. you will find the default. and password. Change the permissions on the settings. Step 3: Create the configuration file y y In your /sites/default folder. be sure to protect it again after making your modifications. Upload all the files inside your drupal folder into the web root folder. You will get a file called drupal-x. Create a user.php file is at sites/default/settings. When you get to the database screen.) Drupal 6 Step 1: Download y y y Download the latest stable version of Drupal 6. This will take you to the Drupal installer. Step 2: Create a database y y Create a new database through your hosting provider's control panel. Step 4: Install y y y Browse to your new Drupal site. . the username. remove write permissions for the settings.x.php OR chmod 644 sites/default/settings. Enter the name of the database you created.php file.g. add that user to the database.php. MySQL or SQLite). (On a Unix/Linux command line: chmod a-w sites/default). Make a copy of this file and rename it to settings. Change the permissions on the /sites/default folder and the settings.php file to remove write permissions. it may be in another location if you use the multi-site setup. (On a Unix/Linux command line: chmod a+w sites/default).tar.php If you make manual changes to the settings. choose the type of database you created (e.o=r. (Although the default location for the settings.settings. Make a note of the username and password.php file.a=r sites/default/settings. Make a note of the database name. Save and continue.php file to be writable. Failure to remove write permissions to that file is a security risk.gz. chmod u=rw. Extract the Drupal files. Start filling out the form.php.

1. Settings. The default file is not used by the installer. check both the Read and Write boxes for "Owner".php You must create a settings. You also set the username. To let the files directory be created automatically.php or chmod 666 sites/default/settings. NOTE: Do not simply rename the file. Quick install for experts This page provides a summary of the command line instructions for installing Drupal on a typical UNIX/Linux web server. using a 'file attribute' or 'get info' command.y y On the site information page.php. 2. If your ftp client has checkboxes for setting permissions. Transmit. and "Others" (leaving the Execute boxes unchecked). 3. Save and continue. Step 3: settings. Several FTP tools like Filezilla.settings.php and settings. read Troubleshooting common problems. Log in to your new Drupal site. The Drupal installer will need both files.settings.php to settings.settings. You can do this from the command line (working from the root of the directory containing your Drupal installation) using cp sites/default/default. 4. If you have problems. and Fetch allow you to change file permissions. Copy the default. you can set the site name and email from which the site will send out mail. It must be copied and the new file must be given the correct name.php. email.php file and set some permissions. You should now have both a default. "Group". In this case the octal or numeric value file permission should be set to 666. . so that the installer can edit it. NOTE: Do not forget to change permissions back after you have run the installation script. Every step contains a link to more detailed installation instructions where you also can find information about installing Drupal on other systems.php. and password of the first administrator account.php file in your sites/default directory.php sites/default/settings.php Your Drupal download comes with a sample configuration file at sites/default /default.php Both commands have the same effect.settings. Make the settings file writeable. chmod a+w sites/default NOTE: Do not forget to change permissions back after you have run the installation script. give the web server write privileges to the sites/default directory. using chmod a+w sites/default/settings.

org/project/translations.Read more about system requirements (among which detailed PHP-settings and browser requirements).org/project/drupal and extract the download file to a folder on your hard drive. chmod a+w sites/default Read more about preparing the configuration file. 3.php file and name the copied file as settings.tar. mysqladmin -u username -p create databasename . /var/www/drupal-x.tar. cp sites/default/default. Download and extract files Download Drupal from http://drupal.x.php.) mv drupal-x. (On many *nix computers the path from the server's root will be /var/www/.g=rw.gz tar -zxvf drupal-x. Extract the files into the Drupal directory (e. you must create a empty database and a user with full access the newly created database for Drupal to use.php Give the web server write privileges to the sites/default directory. 1.o=rw) to the configuration file.g. Create the configuration file and grant permissions In the sites/default directory. You can do this by command line or through phpMyAdmin or another database clients.php sites/default/settings. substituting drupal-x. wget http://drupal.x) Read more about downloading and extracting Drupal (includes instructions for FTP.settings. copy the default.org/files/projects/drupal-x.x with the actual version number.x /var/www/ You can install and use Drupal in other languages by downloading translations from http://drupal.gz Move the files to a directory within your web server's document root or your public HTML directory using the following command. Create the Drupal database To complete the installation.x. 2. chmod a+w sites/default/settings. Windows and Mac OS).settings.php Give the web server write privileges (666 or u=rw.

DROP. MySQL will reply with: Query OK. CREATE TEMPORARY TABLES. LOCK TABLES ON databasename.Where 'username' is a MySQL user which has the CREATE and GRANT privileges. Step 1: Download and uncompress Drupal Drupal is available in several versions. and PostgreSQL and SQLite as database). and provide basic web site settings. Next you must set the access database rights. http://www.g.com. http://www. . Run the installation script You are now ready to run the installation script. The "recommended release" is the latest stable release. see the Drupal version information page. MySQL will prompt for the 'username' database password.example. The installation wizard will guide you through several screens to set up the database. INDEX. add the first user account. Where: 'databasename' is the name of your database 'username' is the username of your MySQL account 'localhost' is the server name used to access MySQL 'password' is the password required for that username If successful. 4. INSERT.example.com/drupal or http://localhost/drupal).* TO 'username'@'localhost' IDENTIFIED BY 'password'. enter: GRANT SELECT. Read more about the installation script (along with a detailed description of all the available options). Follow the wizard to finalize the installation and start working with your Drupal website. 0 rows affected Read more about creating the database (among which instructions on using phpMyAdmin. ALTER. DELETE. CREATE. Log in to MySQL: mysql -u username -p At the MySQL prompt. Point your browser to the base URL of your website (e. UPDATE. To learn more about versions.

Not every computer has both.x.x directory (which is now empty): rmdir drupal-x. On a shared server. and you can delete the drupal-x.x directory one level "up" into the web server's document root or your public HTML directory: mv drupal-x.x/.Information about Drupal translations is available at http://drupal. If you are .gz (Note that the option for the curl command is the upper case letter "O" and not the numeral that stands for zero. Download Drupal using any download utility.tar.) (Replace the "http://drupal. ask your hosting provider for assistance.org/project/translations.org/files/projects/drupal-x..tar.x.org/files/projects/drupal-x.) Uncompressing Drupal Type the following command (replacing "x. the path will be different -. the two most popular of which are wget and curl.gz or curl -O http://drupal. so cd /var/www/html.gz" string with the link for the version you will be installing.gz Remove the compressed file by typing rm drupal-x./ The files from the directory you downloaded and decompressed have now been moved up a level into your web directory.x.x" with your downloaded version): tar -xzvf drupal-x.tar.. You will need to know this URL before proceeding to the next steps of the installation. Moving Drupal to its intended location Now you need to move the contents of the drupal-x.x Before continuing to the next page .gz.x. log in to your server and navigate to the directory from which you will be serving your Drupal site.perhaps the command cd ~/www or cd ~/public_html will work. Downloading Drupal Before you begin.x. If you are unsure of the directory.drupal. The commands are: wget http://ftp.tar. The base URL for your Drupal installation will be set in your Web server's configuration file. or a server that hosts multiple domains.htaccess .x/* drupal-x.tar.org/files/projects/drupal-x. On many *nix computers the path from the server's root will be /var/www/html.

example. if you log into your Web site control panel as "webadmin" and create a database named "drupal7db" and a user for that database named "d7user". When you create the user for your database. and for creating a "user" with rights to the database. if you simply check "All" privileges for the user you create (and then uncheck "Grant" if it is listed as a privilege) your user will be set up correctly.com.com/blog etc. Take note of the username.) as you create the database. you can skip the remainder of this page and continue with the install instructions on the next page. (This is because many hosting accounts are on shared servers. you must create an empty database and database user (a user name assigned the rights to use the Drupal database). This page offers guidance for creating your Drupal database using a Web browser-based control panel (such as "CPanel" or "Plesk"). password. www. and on one server each database and user name must be unique across all accounts on the server. To create a database using a browser-based control panel consult the documentation or ask your web host service provider. when running the Install script (see next page) the database and user may need to be typed in as "webadmin_drupal7db" and "webadmin_d7user".) If you have created your database and user via a Web-based interface.. Note that in many cases when creating databases and users via a Web-based graphic interface.g. database name and hostname (e. Step 2: Create the database Before running the installation script. If you are installing Drupal to a Web server your base URL may be a specific domain name (such as http://example. are you installing in www. the user name you use to log into your control panel is added as a prefix to the database name and possibly to the database user name as well.example. For example.installing Drupal on your local machine the base URL may be: http://localhost. . or by creating the database directly from the MySQL or PostgreSQL command prompt (for more advanced users). These tools include easy-to-use features for creating a new database. Create a database using a browser-based control panel Most web hosting accounts provide a Web-based control panel to help you administer your site. or by using phpMyAdmin (another browser-based database utility).example. you may see a page where you can specify the privileges that user will have for various operations on the database. In most Web control panels' "database wizard". You will enter these items into fields in your browser when running the install script (see next page).com.com). or in drupal.

if you log into your Web site control panel as "webadmin" and create a database named "drupal7db" and a user for that database named "d7user". 4.txt (for PostgreSQL). select Local which is more secure.. 3. www.com/blog etc. check out the official wiki. If you want to have a different name for database and user. you can follow the information below. You will enter these items into fields in your browser when running the install script (see next page).g.example. password.com. and instructions to create a database using the command line are available in INSTALL. select Create database with same name and grant all privileges and click Go You have now created a user that has all privileges only on the database with the same name. enter the username you wish to use In the Host field. For example.pgsql. as it limits access to your databases if someone gets hold of your database logins.example.txt (for MySQL) or INSTALL. the user name you use to log in to your control panel is added as a prefix to the database name and possibly to the database user name as well.mysql. Additional information about privileges.example. Log in to PHPMyAdmin as the root user Click Privileges & Add a new User In the User name field. This is more secure than using a general username & password for all your sites on the same server. Take note of the username. or in drupal. Enter or generate a password for the user. database name and hostname (e. then operations tab. unless you will be accessing the database with this user from another server 5. you can skip the remainder of this page and continue with the install instructions on the next page. (This is because many hosting accounts are on shared servers. 2. Create a database from the command line If you do not use a Web control panel or are experienced with and prefer to use MySQL or PostgreSQL commands. just select the created database. are you installing in www. You will find an option Rename database to.) If you have created your database and user via phpMyAdmin. when running the Install script (see next page) the database and user may need to be typed in as "webadmin_drupal7db" and "webadmin_d7user". and on one server each database and user name must be unique across all accounts on the server. 6. Note that in many cases when creating databases and users using a web interface.) as you create the database.Create database and user using PHPMyAdmin This presumes you have root access to PHPMyAdmin 1. If you need more details about using PHPMyAdmin. . In the Database for User list.com.

you will not be able to run Drupal.* for security (underscore is a wildcard). DELETE. CREATE. LOCK TABLES. 2. INSERT. MySQL will reply with: Query OK. Create a new database for your site. 'username' is an example MySQL user who will have the CREATE and GRANT privileges and 'databasename' is the name of the new database Use the appropriate names for your system.com/techresources/articles/mysql_intro.html In the following examples. and creates the initial database files. 0 rows affected 5.* Note: unless your database user has all of the privileges listed above. set the permissions using the following command: GRANT SELECT. If successful. `drupal\_test\_account`. UPDATE. DROP. ALTER. enter the following command: . 3. mysqladmin -u username -p create databasename MySQL prompts for the 'username' database password. CREATE TEMPORARY TABLES ON `databasename`. In this case: o o o 'databasename' is the name of your database 'username@localhost' is the username of your MySQL account 'password' is the password required for that username You will need the ` around the database name if you have used a MySQL escape character in your schema name.mysql. This requires the ` wrapper.* TO 'username'@'localhost' IDENTIFIED BY 'password'. 1. To activate the new permissions. Eg: drupal_test_account. Log in and set the access database rights: mysql -u username -p MySQL prompts for the 'username' database password.* should be drupal\_test\_account. At the MySQL prompt. INDEX.Create a database using MySQL commands For information on installing and configuring MySQL see http://dev. 4.

Create the database This step is only necessary if you don't already have a database setup (e. you'll see a CREATE USER notice. 2.g. you'll see a CREATE DATABASE notice. The following command creates a new user named 'username' (you should substitute this with the desired username). Create a database using PostgreSQL The database must be created with UTF-8 (Unicode) encoding. which is owned by previously created "username": createdb --encoding=UNICODE --owner=username databasename If everything works correctly. by your host) or you want to create new database for use with Drupal only. by your host) or you want to create new user for use with Drupal only.g. . The database should be created with UTF-8 (Unicode) encoding.FLUSH PRIVILEGES. 1. The following command creates a new database named "databasename" (you should substitute this with the desired database name). Create a database user This step is only necessary if you don't already have a user setup (e. and prompts for a password for that user: createuser --pwprompt --encrypted --no-adduser --no-createdb username If everything works correctly.