How to Install Drupal with LAMP on CentOS Stream 9

Drupal is a commonly used PHP-based CMS (Content Management System). For small businesses, personal blogs & websites, Drupal can be a good fit.  In this article, we are going to learn how to install Drupal on CentOS Stream 9. So, let’s get started.

Pre-requisites :

  • A system with CentOS Stream 9 installed and running.

  • root access to the system.

  • LAMP Stack installed and running, for this, you can refer to one of our guides on installing the LAMP Stack (Apache, MariaDB and PHP).

Once you're all set, we'll proceed with Drupal installation and configuration.

Install Wget & Developer Tools

yum groupinstall "Development tools"

yum install wget

Download Drupal

First, navigate to the /var/www/html directory as follows:

cd /var/www/html

Now, download the latest Drupal archive from the official website of Drupal with the following command:

wget https://ftp.drupal.org/files/projects/drupal-9.2.10.tar.gz

Check for the latest version here : Drupal Official.

Check for files with the following command.

ls

Now, extract the Drupal archive file drupal-9.2.10.tar.gz with the following command:

tar xvzf drupal-9.2.10.tar.gz

Once the Drupal archive file drupal-9.2.10.tar.gz is extracted, a new directory drupal-9.2.10 should be created in the folder. Now, you can remove the drupal-9.2.10.tar.gz file as follows:

rm -v drupal-9.2.10.tar.gz

Rename the folder to drupal

mv drupal-9.2.10 drupal

Setting up FilePermission & Ownership

Create a directory to store website files and rename the default.settings.php file as shown below:

mkdir /var/www/html/drupal/sites/default/files

cp /var/www/html/drupal/sites/default/default.settings.php /var/www/html/drupal/sites/default/settings.php

Now, change the owner and group of the drupal/ directory and its contents to apache as follows:

chown -R apache:apache /var/www/html/drupal/

Now, change the permission or the drupal/ directory and its content to 775 as follows:

chmod -Rf 775 drupal/sites/

For, some update needed 777.

chmod -Rf 777 drupal/sites/files

chcon -R -t httpd_sys_content_rw_t /var/www/html/drupal/sites/

Install PHP-GD & PHP-MBSTRING.

dnf install php-gd

dnf install php-mbstring

Enable Firewall if not already done.

sudo firewall-cmd --add-service={http,https} --permanent

sudo firewall-cmd --reload

Configuring Apache vHost

First, create a php-fpm configuration file for Drupal with the following command:

vi /etc/php-fpm.d/drupal.conf

Add the following codes:

[drupal]
user = apache
group = apache
listen.owner = apache
listen.group = apache
listen = /run/php-fpm/drupal.sock
pm = ondemand
pm.max_children =  50
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /

Now, press i to go to INSERT mode and type in the following lines of codes in the drupal.conf file.

Create a new apache configuration file drupal.conf for Drupal with the following command:

vi /etc/httpd/conf.d/drupal.conf

Add the following codes:

<VirtualHost *:80>
ServerAdmin drupal@crowncloud.com
ServerName drupal.crowncloud.com
DocumentRoot /var/www/html/drupal
<Directory /var/www/html/drupal/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
ErrorLog /var/log/httpd/drupal_error.log
CustomLog /var/log/httpd/drupal_access.log combined
</VirtualHost>

Change drupal.crowncloud.com with Your Domain Name. If you are using with IP, Please remove the entire server_name line.

Now, press the Esc key, and type :wq! and press the Enter key to save and exit the file.

Now, restart & check the apache & PHP-FPM service with the following commands:

systemctl restart php-fpm

systemctl restart httpd

Enable Firewall:

firewall-cmd --permanent --add-service=http

firewall-cmd --permanent --add-service=https

firewall-cmd --reload

Configuring Database

Now create a Database, User & Password for Drupal:

mysql -u root

CREATE DATABASE drupal;

CREATE USER 'username'@'localhost' IDENTIFIED BY 'strong_password';

GRANT ALL PRIVILEGES ON drupal.* TO 'username'@'localhost';

FLUSH PRIVILEGES;

exit

If you want to use SQLite, You can use that. It comes with auto installation.

Configuring Drupal

Now open the IP address from your browser, this will redirect you to configuring the final parts of Drupal installation.

http://IP_address

Replace the IP_address with the actual IP of the server.

Input the Database details which was configured earlier.

Now you have successfully installed Drupal with LAMP on your server.