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 joomla
as 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
- Configuration > Select Language: English
- Configuration > Website name: Joomla
- Configuration > E-mail: name.surname@domain.tld
- Configuration > Username: tibor
- Configuration > Password and Confirm password: This.1s.Strong:Password
- Configuration > Site offline: No (green background, white letters)
- Configuration > blue button Next
- Database > Database type: MySQLi
- Database > Host name: localhost
- Database > Username: tibor
- Database > Password: This.1s.Strong:Password
- Database > Database name: joomla
- Database > Table prefix: joomla_
- Database > Old database process: Remove (red background, white letters)
- Database > blue button Next
- Overview > Install sample data: None
- Overview > E-mail configuration: No (green background, white letters)
- 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.