1. Home
  2. Cloud and Servers
  3. Virtual Servers (VPS)
  4. Installing Joomla on Ubuntu 20.04 with LEMP

Installing Joomla on Ubuntu 20.04 with LEMP

If you have on your Virtual server (VPS) installed LEMP (Linux, Nginx, MySQL and PHP) and security certificate, you can finally start with the website itself. Not everyone can create a website from scratch only with programming languages like HTML, JavaScript or PHP, and for that we have content management systems (CMS).

One of the most popular and mostly used CMS worldwide is Joomla. It is a system that will supremely ease the process of creating a website. Web with unique design and content can be created without programming, you will simply click everything in the browser.

Set up web server Nginx

For Joomla to be able to display articles via permalinks in a nicer forma (instead of /index.php/hello-world/ at the end of URL there will be/hello-world/), we need to edit the configuration file on the Nginx server:

sudo nano  /etc/nginx/sites-available/default

In the configuration file locate a line server { with following commentary # SSL configuration under the section location / { edit the directives try_files as follows:

try_files $uri $uri/ /index.php?$args =404;

Under the directive ssl_dhparam enter additional lines:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;

Save the configuration file Ctrl + X and then press the button y and confirm with Enter.

Restart the web server Nginx for the change in the configuration file to take effect:

sudo systemctl restart nginx

More thorough setting of the web server Nginx for Joomla can be found in the official configuration Nginx on the address https://docs.joomla.org/Nginx#Configure_Nginx.

Set up PHP

Firstly it is necessary to secure the updates of all packages. Install updated software in two commands in one go:

sudo apt update && sudo apt upgrade

If the system finds the updated packages, it will ask you whether you want to install them:

Do you want to continue? [Y/n]

Stlačte klávesu y ak chcete začať aktualizačný proces alebo tlačidlo n, ak aktualizovať nechcete. Následne stlačte klávesu Enter.

Aby Joomla fungoval správne ako celok, potrebuje moduly, ktoré po bežnej inštalácii jazyka PHP nie sú k dispozícii. Týmto príkazom ich teda nainštalujeme:

sudo apt install php-curl php-gd php-imagick php-mbstring php-xml php-zip

If the system finds the updated packages, it will ask you whether you want to install them:

Do you want to continue? [Y/n]

Press the y if you want to proceed to update or press n, if you do not want to update them. Then press the Enter key.

Check for the PHP version, that is installed:

php -v

so we would be able in the correct configuration file php.ini

sudo nano /etc/php/7.4/fpm/php.ini

set the following lines :

short_open_tag = On
cgi.fix_pathinfo = 0
max_execution_time = 600
max_input_time = 600
default_socket_timeout = 600
memory_limit = 256M
upload_max_filesize = 100M
post_max_size = 100M
date.timezone = Europe/Bratislava

Save the configuration file Ctrl + X and then press the button y and confirm with Enter.

Restart the PHP version for the changes in the configuration to take effect:

sudo systemctl restart php7.4-fpm

Creating user and database in MySQL

Joomla text details like articles or comment are stored into database. So the Joomla would be able safely communicate with MySQL server, we need to create a new user with limited rights (we will not use the root user). Start the communication with database server MySQL:

sudo mysql

Create a user (in this example tibor), that we will assign a strong password (in this example This.1s.Strong:Password. In the password use at least 8 characters – lower and upper case, numbers and special symbols like dot, comma, colon, at, question mark , exclamation mark

create user 'tibor'@'localhost' identified by 'This.1s.Strong:Password';

create a database called joomla:

create database joomla;

and set for user tibor all right with the database joomlaas follows:

grant all privileges on joomla.* to 'tibor'@'localhost';
flush privileges;

End the work with MySQL server:

exit

Install Joomla

Before the Joomla installation erase all content from the html directory:

sudo rm -rf /var/www/html/*

Go to the directory html, where the Joomla will be installed:

cd /var/www/html

At https://downloads.joomla.org/latest copy the URL archive tar.gz with the newest Joomla version. Download (first line) and unpack (second line) all necessary files and directories of the current Joomla version:

sudo wget https://downloads.joomla.org/cms/joomla3/3-9-19/Joomla_3-9-19-Stable-Full_Package.tar.gz
sudo tar -zxvf Joomla_3-9-19-Stable-Full_Package.tar.gz

Delete unnecessary directories and files (first line) and then set the ownership and rights to files and directories (last two lines):

sudo rm -rf Joomla_3-9-19-Stable-Full_Package.tar.gz
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

Additional settings can be done via browser on the address of the server (in this example vps.active24.cz) in these steps

  1. Configuration > Select Language: English
  2. Configuration > Website name: Joomla
  3. Configuration > E-mail: name.surname@domain.tld
  4. Configuration > Username: tibor
  5. Configuration > Password and Confirm password: This.1s.Strong:Password
  6. Configuration > Site offline: No (green background, white letters)
  7. Configuration > blue button Next
  8. Database > Database type: MySQLi
  9. Database > Host name: localhost
  10. Database > Username: tibor
  11. Database > Password: This.1s.Strong:Password
  12. Database > Database name: joomla
  13. Database > Table prefix: joomla_
  14. Database > Old database process: Remove (red background, white letters)
  15. Database > blue button Next
  16. Overview > Install sample data: None
  17. Overview > E-mail configuration: No (green background, white letters)
  18. Overview > blue button Install

After the successful installation you will see “Congratulations! Joomla is installed.”

Select the button “Remove directory”, then select Administrator and log in by above created login details.

Summary

We have set the webserver Nginx, installed missing modules for PHP and set some variables in PHP and created a new user for database so we could then install the Joomla CMS. Part of the installation process was via console (Linux shell bash) and another part was in web browser. All other Joomla setting can be configured in the graphic interface in the web browser. From the web browser we can also realize installation, updates and adding new content.

Updated on January 3, 2025

Was this article helpful?

Related Articles