Запуск LEMP-сервера на Debian 10

Краткая инструкция по быстрой установке и настройке веб-сервера в связке Debian GNU/Linux 10.10, HTTP-сервер nginx, PHP и MariaDB (MySQL).

Установка сервера баз данных

Для начала необходимо установить MariaDB (MySQL) сервер. В подавляющем большинстве веб-сайтов это — один из главных шагов, без которого нет смысла запускать проект.

Ниже приведены несколько команд, которые помогут запустить сервер БД на начальном этапе:

# apt install mariadb-client mariadb-server 
# /usr/bin/mysql_secure_installation
# systemctl status mariadb

Состояние должно быть в активном режиме.

Более подробно об установке сервера БД MariaDB (MySQL) можно почитать здесь: https://dondub.com/2021/05/zapusk-subd-mariadb-na-debian-10-9-i-ubuntu-server-21-04/

Установка HTTP-сервера nginx, PHP 7.3 и php-fpm

Устанавливаем nginx и проверяем его статус

# apt install nginx
# systemctl status nginx

Состояние должно быть в активном режиме.

Проверяем.

На другой машине в сети в адресной строке браузера вводим http://IP-адрес-сервера

Должна появиться страница по умолчанию:

Теперь устанавливаем PHP 7.3 с расширениями и php-fpm

# apt install php php-common php-gd php-mysql php-xml php-mbstring php-fpm

Проверяем статус службы php7.3-fpm

# systemctl status php7.3-fpm

Служба должна быть активна и работать

Настройка виртуальных хостов nginx

Перед созданием виртуальных хостов необходимо убедиться в наличии соответствующих A или AAAA записей на DNS-сервере. Эти записи создаются в личном кабинете в панели управления регистратора доменных имён, или на собственном DNS-сервере https://dondub.com/tag/nameserver/

Далее создадим необходимые каталоги для хранения файлов сайтов

# mkdir /var/www/{ws30.local,test.ws30.local}/

После этого создадим файлы конфигураций сайтов ws30.local и test.ws30.local и в них впишем:

# touch /etc/nginx/sites-available/ws30.local
# nano /etc/nginx/sites-available/ws30.local
server {
        listen 80;
        root /var/www/ws30.local/;
        server_name ws30.local;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass unix:/run/php/php7.3-fpm.sock;
                fastcgi_index index.php;
        }

}
# touch /etc/nginx/sites-available/test.ws30.local
# nano /etc/nginx/sites-available/test.ws30.local
server {
        listen 80;
        root /var/www/test.ws30.local/;
        server_name test.ws30.local;

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                try_files $uri =404;
                include /etc/nginx/fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass unix:/run/php/php7.3-fpm.sock;
                fastcgi_index index.php;
        }

}

Для активации сайтов создадим символические ссылки в каталоге /etc/nginx/sites-enabled/

# ln -s /etc/nginx/sites-available/ws30.local /etc/nginx/sites-enabled/
# ln -s /etc/nginx/sites-available/test.ws30.local /etc/nginx/sites-enabled/

Проверяем конфиг nginx

# /usr/sbin/nginx -t

если всё нормально, то перезапускаем службу nginx

# systemctl restart nginx

Затем для каждого сайта создадим файл index.html и впишем в него такую информацию, чтобы можно было понять, что файл предназначен именно для определённого сайта

# touch /var/www/ws30.local/index.html
# nano /var/www/ws30.local/index.html
<html>
<head>
        <title>ws30.local start page</title>
</head>
<body>
        <p align="center">Welcome to ws30.local</p>
</body>
</html>
# touch /var/www/test.ws30.local/index.html
# nano /var/www/test.ws30.local/index.html
<html>
<head>
        <title>test.ws30.local start page</title>
</head>
<body>
        <p align="center">Welcome to test.ws30.local</p>
</body>
</html>

Настройка PHP 7.3 и php-fpm

Открываем файл /etc/php/7.3/fpm/php.ini

# nano /etc/php/7.3/fpm/php.ini

и после закомментированной строки

;cgi.fix_pathinfo=1

запишем такую:

cgi.fix_pathinfo=0

Перезапускаем службу php7.3-fpm

# systemctl restart php7.3-fpm

и на всякий случай nginx

# systemctl restart nginx

Теперь проверим работу PHP на сайте ws30.local. Для этого создадим файл /var/www/ws30.local/info.php

# touch /var/www/ws30.local/info.php

откроем его

# nano /var/www/ws30.local/info.php

и впишем такие строчки:

<?php
	phpinfo();
?>

Проверяем.

На другой машине в сети в адресной строке браузера введём:

http://ws30.local/info.php

Должна появиться страница с информацией о настройках PHP на сервере:

Если появилась, значит PHP работает.

Подключение SSL-сертификатов

Один из самых эффективных способов настройки SSL-сертификатов — это через специализированные сервисы. Например — Certbot — https://certbot.eff.org/lets-encrypt/debianbuster-nginx

Там находится инструкция по установке и настройке сертификатов для Debian 10.

В файлах виртуальных хостов в секции server необходимо будет вписать прослушивание 443 порта:

listen 443;

а также пути к сертификатам сайтов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *