Drupal is an open-source and one of the most popular PHP-based Content Management System (CMS) platforms for building personal blogs or big corporate websites. It has thousands of templates and plugins that are mostly free to download and install. Due to the stability of the base, the adaptability of the platform, and its active community, Drupal remains a popular choice after more than a decade on the scene.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform related Linux Open-source Software Installation queries.
In this context, we shall look into the best method of installation of Drupal on Ubuntu 20.04 LTS.
1. Perform system update
First, make sure that all your system packages are up-to-date by running the following apt commands in the terminal:
$ sudo apt update
$ sudo apt upgrade
2. Install LAMP server
A Ubuntu 20.04 LAMP server is required. If you do not have LAMP installed, you can follow our guide here.
3. Install Drupal 9 on the system
The first thing downloads the Drupal 9 tarball to the host where the service will run:
$ wget https://www.drupal.org/download-latest/tar.gz -O drupal.tar.gz
Once the download is completed, extract the downloaded file with the following command:
$ tar xvf drupal.tar.gz
$ rm -f drupal*.tar.gz
$ sudo mv drupal-*/ /var/www/html/drupal
We will need to change some folders permissions:
$ sudo chown -R www-data:www-data /var/www/html/
$ sudo chmod -R 755 /var/www/html/
4. Configure MariaDB for Drupal
By default, MariaDB is not hardened. You can secure MariaDB using the mysql_secure_installation script. you should read and below each step carefully which will set a root password, remove anonymous users, disallow remote root login, and remove the test database and access to secure MariaDB:
$ mysql_secure_installation
Configure it like this:
- Set root password? [Y/n] y
- Remove anonymous users? [Y/n] y
- Disallow root login remotely? [Y/n] y
- Remove test database and access to it? [Y/n] y
- Reload privilege tables now? [Y/n] y
Next, we will need to log in to the MariaDB console and create a database for Drupal. Run the following command:
$ mysql -u root -p
This will prompt you for a password, so enter your MariaDB root password and hit Enter. Once you are logged in to your database server you need to create a database for Drupal installation:
CREATE DATABASE drupal;
CREATE USER 'drupaluser'@'localhost' IDENTIFIED BY 'your_password_here';
GRANT ALL ON drupal.* TO 'drupaluser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
5. Configure Apache for Drupal
Now we create a new Apache configuration for the Drupal website:
$ sudo nano /etc/apache2/sites-available/drupal.conf
Add the following lines:
<VirtualHost *:80>
ServerName yoursite.com
ServerAlias www.yoursite.com
ServerAdmin admin@yoursite.com
DocumentRoot /var/www/html/drupal/
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
<Directory /var/www/html/drupal>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</Directory>
</VirtualHost>
Now, we can restart the Apache webserver so that the changes take place:
$ sudo a2enmod rewrite
$ sudo a2ensite drupal.conf
$ systemctl restart apache2
6. Install Let's Encrypt Wildcard Certificates
First, download the required packages and create a new system binary:
$ wget https://dl.eff.org/certbot-auto
$ sudo mv certbot-auto /usr/local/bin/certbot-auto
$ sudo chown root /usr/local/bin/certbot-auto
$ sudo chmod 0755 /usr/local/bin/certbot-auto
Next, run the Certbot command that will download and install all of its dependencies:
$ sudo /usr/local/bin/certbot-auto --apache
7. Access Drupal CMS
Drupal will be available on HTTP port 80 by default. Open your favorite browser and navigate to https://your-domain.com or https://server-ip-address and complete the required steps to finish the installation.
Remember that you'll need the database name, username, and password you created earlier to connect.
If you are using a firewall, please open port 80 to enable access to the control panel.
This article covers the installation of Drupal content management system (CMS) on Ubuntu 20.04 LTS Focal Fossa system. In fact, Drupal provides a number of featured like user account registration and maintenance, menu management, RSS feeds, taxonomy, page layout customization and so on.
For additional help or useful information, we recommend you check the official Drupal website.