# Install and Run Joomla on an NGINX Server

This tutorial includes step-by-step instructions for installing Joomla on an NGINX server.

[Joomla](https://www.ionos.com/digitalguide/hosting/cms/joomla-the-basics-about-this-open-source-cms/ "Joomla: the basics about this open source CMS") is a popular and award-winning [content management system (CMS)](https://www.ionos.com/digitalguide/hosting/cms/cms-comparison-a-review-of-the-best-platforms/ "CMS comparison: A review of the best platforms") which has won over millions of users thanks to its extensibility and ease-of-use. NGINX is a web server which offers high performance and stability coupled with a streamlined design and simple architecture.

## Requirements

- A server running Linux (Ubuntu 16.04)
- NGINX installed and running.
- PHP version 5.3.3 or newer.
- MySQL 5.5.3+ or MariaDB 10.1+ (not compatible with MySQL 6+)

## Verify Server Requirements

Joomla has a number of server requirements for installing the latest version (3.x). Most up-to-date servers running Linux will meet or exceed all of Joomla's requirements, but it is wise to check these before you [install Joomla](https://www.ionos.com/digitalguide/hosting/cms/joomla-installation/ "Joomla installation").

### Check the MySQL/MariaDB Version

To check your version of MySQL/MariaDB, log into the client with the command:

```none
sudo mysql -u root -p
```

The version number will be displayed in the welcome message.

[![Image: MySQL-Version 5.5.47](https://www.ionos.com/digitalguide/fileadmin/_processed_/e/2/csm_installing-joomla-mysql-version_81ba3dd871.webp "MySQL-Version 5.5.47")](https://www.ionos.com/digitalguide/fileadmin/DigitalGuide/Screenshots_2021/installing-joomla-mysql-version.jpg) In the above example, the server is running MySQL version 5.5.47.       ###  Check the PHP Version

You can check your PHP version with the command:

```none
php -v
```

In this example, the server is running PHP version 7.0.8:

```none
user@localhost:# php -v
PHP 7.0.8-0ubuntu0.16.04.3 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.8-0ubuntu0.16.04.3, Copyright (c) 1999-2016, by Zend Technologies
```

## Connect NGINX to PHP-FPM with FastCGI

In order to run Joomla, you will need to use FastCGI to connect NGINX to PHP-FPM. FastCGI is included with a standard NGINX installation. You can verify this by examining the /etc/nginx/fastcgi\_params file:

```none
more /etc/nginx/fastcgi_params
```

This file should read:

```none
fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;
fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   PATH_INFO               $fastcgi_path_info;
fastcgi_param       PATH_TRANSLATED         $document_root$fastcgi_path_info;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param   DOCUMENT_ROOT           $document_root;
fastcgi_param   SERVER_PROTOCOL         $server_protocol;
fastcgi_param   GATEWAY_INTERFACE       CGI/1.1;
fastcgi_param   SERVER_SOFTWARE         nginx/$nginx_version;
fastcgi_param   REMOTE_ADDR             $remote_addr;
fastcgi_param   REMOTE_PORT             $remote_port;
fastcgi_param   SERVER_ADDR             $server_addr;
fastcgi_param   SERVER_PORT             $server_port;
fastcgi_param   SERVER_NAME             $server_name;
fastcgi_param   HTTPS                   $https;
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param   REDIRECT_STATUS         200;
```

If this file is in order, the next step is to add the FastCGI configuration to the NGINX configuration file for the domain on which you are installing Joomla.

In most cases, the domain's configuration file will be located in /etc/nginx/sites-available/example.com.conf on Ubuntu (with example.com replaced with your domain name). Edit this file:

```none
sudo nano /etc/nginx/sites-available/example.com.conf
```

Uncomment these lines (if the configuration file was copied from the default) or add the following code to the server block:

```none
location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
```

After adding the new section, it will look like this:

```none
server {
    listen       80;
    server_name  example.com;
    root /usr/share/nginx/example.com/html/;
    index index.php index.html index.htm;
}
```

Save and exit the file, then restart NGINX:

```none
sudo nginx -s reload
```

Next, test the connection by creating a file named test.php in the NGINX document root:

```none
sudo nano /usr/share/nginx/example.com/html/test.php
```

Put the following content into this file:

```none
<?php var_export($_SERVER)?>
```

Save and exit the file, then view it in a browser. If the connection to PHP-FM is working, you should see text output in your browser similar to:

```none
array ( 'USER' => 'www-data', 'HOME' => '/var/www', 'HTTP_CACHE_CONTROL' => 'max-age=0', 'HTTP_UPGRADE_INSECURE_REQUESTS' => '1', 'HTTP_CONNECTION' => 'keep-alive', 'HTTP_COOKIE' => 'Drupal.toolbar.collapsed=0; _ga=GA1.2.1098258524.1476830307', 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate', 'HTTP_ACCEPT_LANGUAGE' => 'en-US,en;q=0.5', 'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0', 'HTTP_HOST' => 'ubuntu.oxnardindustries.com', 'REDIRECT_STATUS' => '200', 'SERVER_NAME' => 'ubuntu.oxnardindustries.com', 'SERVER_PORT' => '80', 'SERVER_ADDR' => '50.21.182.126', 'REMOTE_PORT' => '61760', 'REMOTE_ADDR' => '45.48.69.102', 'SERVER_SOFTWARE' => 'nginx/1.10.0', 'GATEWAY_INTERFACE' => 'CGI/1.1', 'REQUEST_SCHEME' => 'http', 'SERVER_PROTOCOL' => 'HTTP/1.1', 'DOCUMENT_ROOT' => '/usr/share/nginx/ubuntu.oxnardindustries.com/html', 'DOCUMENT_URI' => '/test.php', 'REQUEST_URI' => '/test.php', 'SCRIPT_NAME' => '/test.php', 'CONTENT_LENGTH' => '', 'CONTENT_TYPE' => '', 'REQUEST_METHOD' => 'GET', 'QUERY_STRING' => '', 'SCRIPT_FILENAME' => '/usr/share/nginx/example.com/html/test.php', 'PATH_INFO' => '', 'FCGI_ROLE' => 'RESPONDER', 'PHP_SELF' => '/test.php', 'REQUEST_TIME_FLOAT' => 1478468241.011425, 'REQUEST_TIME' => 1478468241, )
```

After your test is complete, delete this file:

```none
sudo rm /usr/share/nginx/example.com/html/test.php
```

## Download and Unpack the Joomla Software

Install the unzip utility:

```none
sudo apt-get install unzip
```

Go to your website's document root:

```none
cd /usr/share/nginx/example.com/html
```

Download the current release from the Joomla website by using the command:

```none
sudo wget [download URL]
```

To find the download URL, [visit the current release page on the Joomla website](http://www.joomla.org/download.html "Joomla website"). Copy the "Full Package" URL. You can paste it into the command line by clicking Shift + Insert.

For example, to download the current stable release as of this article's publication (Joomla 3.6.4) the command is:

```none
sudo wget https://downloads.joomla.org/cms/joomla3/3-6-4/joomla_3-6-4-stable-full_package-zip?format=zip
```

Unpack this file with the command:

```none
sudo unzip [file name]
```

---

### Tip

You can use tab completion to make this process easier. Type sudo unzip joomla then hit Tab. The shell will automatically fill out the rest of the file name on the command line.

---

For example, to unzip the file downloaded above, the command is:

```none
sudo unzip joomla_3-6-4-stable-full_package-zip\?format\=zip
```

After the contents of the Drupal file have been unpacked, set the ownership of the files to the Apache user:

```none
sudo chown -R www-data:www-data *
```

## Create the Database

Before installing Joomla, you will need to create a database. Log in to MySQL/MariaDB with the command:

```none
sudo mysql –u root –p
```

After you enter the MySQL/MariaDB root user password, you will be logged into the MySQL/MariaDB client.

Create a database with the command:

```none
create database [database name];
```

Replace \[database name\] with the name you want to use for your new database. For example, if you wanted to name your database my\_joomla\_site the command would be:

```none
create database my_joomla_site;
```

Create a user for this database and grant them privileges with the command:

```none
grant all on [database name].* to [database username]@localhost identified by '[database user password]';
```

Replace:

- \[database name\] with the name of your database.
- \[database username\] with the username you want to create for your database.
- \[database user password\] with a password for this user. Note: Be sure to give the user a strong password.

For example, to create a user named my\_joomla\_user with the password Fr4i\*Re!2 and give the user privileges on the my\_joomla\_site database, the command would be:

```none
grant all on my_joomla_site.* to my_joomla_user@localhost identified by 'Fr4i*Re!2';
```

Once you have finished, exit the database with the command:

```none
quit;
```

## Install Joomla

To complete the installation, switch to a web browser and go to your website. You will see the Joomla installation page.

[![Image:  Joomla Installation](https://www.ionos.com/digitalguide/fileadmin/_processed_/f/4/csm_installing-joomla-install-page_69556c32e7.webp " Joomla Installation")](https://www.ionos.com/digitalguide/fileadmin/DigitalGuide/Screenshots_2021/installing-joomla-install-page.jpg)      Fill out the following fields:

- Site Name
- Administrator Email
- Administrator Username
- Administrator Password (twice)

Then click **Next** to go to the Database Configuration page.

On this page, fill out the following fields:

- Database Type: MySQLi
- Host Name: Localhost
- Username: The user you created for the database in the previous step.
- Password: The password for the database user.
- Database Name: The name of the database you created in the previous step.
- Table Prefix: Use the default, or specify one if you prefer.
- Old Database Process: Backup

Then click **Next** to go to the FTP Configuration page.

On this page, set the following:

- Enable FTP Layer: Yes
- FTP Username: Leave blank
- FTP Password: Leave blank
- FTP Host: 127.0.0.1
- FTP Port: 21
- Save FTP Password: No

Then click **Next** to go to the final installation page. Here you can review all your choices and make changes if necessary.

When you are sure that all of the information is correct, click **Install** to complete the installation.

After the installation has completed, click the yellow **Remove installation folder** button to remove the installation folder so that you can proceed.

Go to your main website page and verify that Joomla has installed correctly.

[![Image: Joomla Test Site](https://www.ionos.com/digitalguide/fileadmin/_processed_/4/c/csm_installing-joomla-test-site_7a91cfdc29.webp "Joomla Test Site")](https://www.ionos.com/digitalguide/fileadmin/DigitalGuide/Screenshots_2021/installing-joomla-test-site.jpg)      From here, you can log into Joomla using the Administrator username and password which you set in the installation process.


This is a markdown version of: [https://www.ionos.com/digitalguide/hosting/cms/install-joomla-on-an-nginx-server/](https://www.ionos.com/digitalguide/hosting/cms/install-joomla-on-an-nginx-server/) for AI/LLM consumption.