This guide will walk new users through the installation of Joomla CMS on Oracle Linux 8 with Nginx Web Server. Joomla is an open-source content management system used in creating dynamic websites and blogs. Just like WordPress, Joomla is one of the most used content management systems currently. Some of the most important features of Joomla include:

  • Open Source
  • Regular updates
  • Content Management
  • Content Versioning
  • Great documentation
  • Joomla Extensions Finder (JEF)
  • Nested categorization
  • Media Manager
  • Access Control
  • Multilingual
  • Community support
  • Powerful Extensibility

I am going to first set SElinux is permissive mode before starting installations

$ sudo vim /etc/selinux/conf
SELINUX=permissive

Save and close the file then reboot your system

$ sudo reboot

Install Joomla dependencies

Install Epel and Remi repositories to use in installing required dependencies.

sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm 
sudo dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Install PHP and other dependencies

We are going to install php7.4 and other php modules. Disable the default php7.2 that comes with Oracle Linux 8.

sudo dnf module reset php sudo dnf module install php:remi-7.4
sudo dnf -y install php-fpm php-curl php-xml php-zip php-mysqlnd php-intl php-gd php-json php-ldap php-mbstring php-opcache mariadb mariadb-server nginx 

Create Joomla Database

Since we have already installed MariaDB, we are going to create a database to be used by Joomla. Let us go ahead to start and enable MariaDB

sudo systemctl start mariadb
sudo systemctl enable mariadb

Secure MariaDB and set root password

$ sudo mysql_secure_installation
Enter current password for root (enter for none): Just press Enter
Set root password? [Y/n] Y 
New password:  New-root-password
Re-enter new password: Re-enter New-root-password
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 
Thanks for using MariaDB!

Now, connect to mysql using the below command and the password set above

$ mysql -u root -p

Once connected, create a database and user as shown below:

CREATE DATABASE joomla;
CREATE USER 'joomla'@'localhost' IDENTIFIED BY 'mypassword'; 
GRANT ALL PRIVILEGES ON joomla.* TO 'joomla'@'localhost'; 
FLUSH PRIVILEGES; 
exit

Start and enable Nginx and php-fpm

$ sudo systemctl start nginx php-fpm
$ sudo systemctl enable nginx php-fpm

Configure PHP-FPM

In this file, we need to specify nginx user and group.

$ sudo vim /etc/php-fpm.d/www.conf

Replace ‘apache’ with Nginx so that your file has the following lines:

user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode =  0660

Save the file and restart php-fpm

$ sudo systemctl restart php-fpm

Download Joomla Installation Package

Let us download the latest Joomla package with wget as shown below:

wget https://downloads.joomla.org/cms/joomla3/3-9-16/Joomla_3-9-16-Stable-Full_Package.zip

Extract the downloaded file in /var/www path as shown below:

sudo mkdir -p /var/www/html/joomla 
sudo unzip Joomla*.zip -d /var/www/html/joomla

Modify the directly permissions as below:

sudo chown -R nginx:nginx /var/www/html/ 
sudo chmod -R 755 /var/www/html/

Configure Nginx for Joomla

We are going to create Nginx configuration file for Joomla as below:

$ sudo vim /etc/nginx/conf.d/joomla.conf

Add the following content, replacing ‘server_name’ with your server hostname.

server { 
   listen 80; 
   listen [::]:80; 
   root /var/www/html/joomla; 
   index  index.php index.html index.htm; 
   server_name  joomla.example.com

   location / { 
       try_files $uri $uri/ /index.php?$args; 
   } 

   location ~ [^/]\.php(/|$) { 
   fastcgi_split_path_info  ^(.+\.php)(/.+)$; 
   fastcgi_index            index.php;  
   fastcgi_pass             unix:/var/run/php-fpm/php-fpm.sock; 
   include                  fastcgi_params; 
   fastcgi_param   PATH_INFO       $fastcgi_path_info; 
   fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name; 
   } 

}

Save the file and restart Nginx

sudo systemctl restart nginx

Now go to your browser and Joomla with server hostname: http://joomla.example.com. You should get a page as below where you key in all the necessary configurations. Click Next when done.

In the next page, configure Joomla database and click Next when done.

The next page is for FTP configuration. Fill the spaces as required and click Next

In the final page, check your configurations. If there is any warming ensure to work on it before finishing the installation.

Once done, click Install

Remove the installation media as advised and click on Administrator. You should get a login page as below:

Use the logins you specified earlier to access Joomla and enjoy your content creation! Check more guides below:

LEAVE A REPLY

Please enter your comment!
Please enter your name here

fifteen + seven =