В данной статье рассмотрим как установить веб-сервер NGINX и модуль PHP-FPM. Для начала обновим индекс пакетов следующей командой:

sudo apt update

Введем пароль администратора.

Далее следующей командой установим nginx:

sudo apt install nginx

Теперь если открыть браузер и перейти по адресу localhost наш веб-сервер открывается:

localhost nginx

Теперь установим php и модуль php-fpm. Php-fpm это менеджер процессов fast-cgi. Он является альтернативной реализацией режима fast-cgi в php. В связке с nginx обеспечивают более высокую скорость обработки запросов, чем связка nginx + apache, которая используется по умолчанию.

sudo apt install php php-fpm

Далее перейдем к файлам веб-сервера. Они находятся по пути /var/www.

cd /var/www/

Следующей командой сделаем нашего пользователя владельцем папки:

sudo chown -R $USER:$USER html/

Перейдем в папку html и создадим папку test.loc:

cd html
mkdir test.loc

Перейдем в неё.

cd test.loc

И в ней создадим файл index.php.

nano index.php

Который выведет информацию о php, при помощи функции phpinfo().

<?php
    echo phpinfo();

Теперь попробуем открыть наш тестовый домен в браузере. 

local domain

Как мы видим наш домен не открывается. Для того чтобы, домен открывался необходимо добавить список доступных доменов сервера. Для этого перейдем по следующему пути:

cd /etc/nginx/sites-available/

В данной папке уже есть стандартный конфиг. Скопируем его следующей командой и назовем test.loc. Выполним эту команду от имени администратора.

sudo cp default test.loc

Теперь отредактируем наш файл. Тоже от имени администратора.

sudo nano test.loc

Удалим лишние строчки. В качестве корневой директории укажем нашу папку. А в качестве главного файла укажем index.php. В поле server_name укажем

наш домен: test.loc.

server {
        listen 80;
        listen [::]:80;
        
        root /var/www/html/test.loc;
        index index.php;
        
        server_name test.loc;
        ...

А теперь, для того, чтобы fast-cgi работал, необходимо раскомментировать некоторые строчки. Так как мы используем модуль php-fpm раcкомментируем строчку напротив php-fpm и раскомментируем последние строчки, для того чтобы запретить доступ .haccess файлам. 

   ...
        location ~ \.php$ {
            include snippers/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        location ~ /\.ht {
            deny all;
        }
    }

В итоге наш конфигурационный файл примет следующий вид:

server {
        listen 80;
        listen [::]:80;
        
        root /var/www/html/test.loc;
        index index.php;
        
        server_name test.loc;
        location / {
            try_files $uri $uri/ = 404;
        }
        location ~ \.php$ {
            include snippers/fastcgi-php.conf;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        }
        location ~ /\.ht {
            deny all;
        }
    }

Теперь перейдем в папку sites-enabled.

cd ../sites-enabled
ls -la

В данной папке уже есть стандартная символьная ссылка. Добавим символьную ссылку к нашему домену. Для этого пропишем следующую команду:

sudo ln -s /etc/nginx/sites-available/test.loc /etc/nginx/sites-enabled/
ls -la

Для того, чтобы изменения вступили в силу перезагрузим nginx следующей командой.

sudo nginx -s reload

Снова попробуем перейти на наш тестовый домен. Как мы видим наш домен не открывается. Для того, чтобы он заработал необходимо добавить запись в файл hosts. Отредактируем файл hosts от имени администратора и добавим следующую строчку:

sudo nano /etc/hosts
127.0.0.1 test.loc

linux hosts

Снова попробуем перейти по нашему домену.

Как мы видим наш домен успешно заработал. А в качестве api сервера используется fpm и fast-cgi. 

phpinfo

Изменим наш индексный файл.

nano /var/www/html/test.loc/index.php
<?php
    echo Hello;

Как мы видим все работает.

php echo hello

На этом установка веб-сервера завершена. До встречи в следующих статьях :)