Image

(Последнее изменение: 22.03.2023)
В этом руководстве показано, как установить стек LEMP (Nginx, MariaDB и PHP7.4) в Debian 11. Программный стек — это набор программных инструментов, объединенных вместе. LEMP означает Linux, Nginx (Engine-X), MariaDB/MySQL и PHP, все они имеют открытый исходный код и бесплатны для использования. Это наиболее распространенный программный стек, который поддерживает динамические веб-сайты и веб-приложения. Linux — это операционная система; Nginx — веб-сервер; MariaDB/MySQL — это сервер базы данных, а PHP — это серверный язык сценариев, отвечающий за создание динамических веб-страниц. В данном руководстве мы выполняем установку от пользователя root, если у Вас обычный, используйте команду sudo.


Конфигурация преднастроенного сервера доступна на форме заказа.

1. Обновите пакеты программного обеспечения

Прежде чем мы установим стек LEMP, рекомендуется обновить репозиторий и пакеты программного обеспечения. Выполните следующие команды в ОС Debian 11.

apt update
apt upgrade

2. Установите веб-сервер Nginx

Nginx — это высокопроизводительный веб-сервер, очень популярный в наши дни. Его также можно использовать в качестве обратного прокси-сервера и кэширующего сервера. Введите следующую команду, чтобы установить веб-сервер Nginx.

apt install nginx

После его установки мы можем включить автоматический запуск Nginx во время загрузки, выполнив следующую команду.

systemctl enable nginx

Затем запустите Nginx с помощью этой команды:

systemctl start nginx

Теперь проверьте его состояние.

systemctl status nginx

Теперь введите общедоступный IP-адрес вашего сервера Debian 11 в адресной строке браузера. Вы должны увидеть веб-страницу «Добро пожаловать в Nginx», что означает, что веб-сервер Nginx работает правильно. Если вы устанавливаете LEMP на свой локальный компьютер с Debian 11, введите 127.0.0.1 или localhost в адресной строке браузера.

Если соединение отклонено или не может быть установлено, возможно, брандмауэр блокирует входящие запросы на порт TCP 80. Если вы используете брандмауэр iptables, вам необходимо выполнить следующую команду, чтобы открыть порт TCP 80.

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Если вы используете брандмауэр UFW, запустите эту команду, чтобы открыть TCP-порт 80.

ufw allow http

Теперь нам нужно сделать www-data (пользователя Nginx) владельцем веб-каталога. По умолчанию он принадлежит пользователю root.

chown www-data:www-data /usr/share/nginx/html -R

3. Установите сервер базы данных MariaDB

MariaDB является заменой MySQL. Он разработан бывшими членами команды MySQL, которые обеспокоены тем, что Oracle может превратить MySQL в продукт с закрытым исходным кодом. Введите следующую команду, чтобы установить MariaDB в Debian 11.

apt install mariadb-server mariadb-client

После установки сервер MariaDB должен быть запущен автоматически. Используйте systemctl, чтобы проверить его статус.

systemctl status mariadb

Если он не запущен, запустите его с помощью этой команды:

systemctl start mariadb

Чтобы разрешить автоматический запуск MariaDB во время загрузки, запустите

systemctl enable mariadb

Теперь запустите сценарий безопасности после установки.

mysql_secure_installation

Когда вас попросят ввести пароль root для MariaDB, нажмите клавишу Enter, так как пароль root еще не установлен. Затем введите y, чтобы установить пароль root для сервера MariaDB.

Затем вы можете нажать Enter, чтобы ответить на все оставшиеся вопросы, что приведет к удалению анонимного пользователя, отключению удаленного входа в систему root и удалению тестовой базы данных. Этот шаг является основным требованием для обеспечения безопасности базы данных MariaDB. (Обратите внимание, что Y пишется с большой буквы, что означает, что это ответ по умолчанию.)

По умолчанию пакет MaraiDB в Debian использует unix_socket для аутентификации пользователя, что в основном означает, что вы можете использовать имя пользователя и пароль ОС для входа в консоль MariaDB. Таким образом, вы можете запустить следующую команду для входа в систему, не предоставляя root-пароль MariaDB.

mariadb -u root

Для выхода запустите

exit;

4. Установите PHP7.4

PHP7.4 включен в репозиторий Debian 11 и имеет незначительное улучшение производительности по сравнению с PHP7.3. Введите следующую команду, чтобы установить PHP7.4 и некоторые распространенные расширения.

apt install php7.4 php7.4-fpm php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl

Расширения PHP обычно необходимы для систем управления контентом (CMS), таких как WordPress. Например, если в вашей установке отсутствует php7.4-xml, то некоторые страницы вашего сайта WordPress могут быть пустыми, и вы можете найти ошибку в журнале ошибок Nginx, например:

Сообщение PHP: Неустранимая ошибка PHP: необработанная ошибка: вызов неопределенной функции xml_parser_create()

Установка этих расширений PHP гарантирует бесперебойную работу вашей CMS. Теперь запустите php7.4-fpm.

systemctl start php7.4-fpm

Включите автозапуск во время загрузки.

systemctl enable php7.4-fpm

Проверить статус:

systemctl status php7.4-fpm

5. Создадим серверный блок Nginx

 

Блок сервера Nginx похож на виртуальный хост в Apache. Мы не будем использовать блок сервера по умолчанию, потому что он не подходит для запуска PHP-кода, и если мы его изменим, он превратится в беспорядок. Поэтому удалите символическую ссылку по умолчанию в каталоге с поддержкой сайтов, выполнив следующую команду. (Он по-прежнему доступен как /etc/nginx/sites-available/default.)

rm /etc/nginx/sites-enabled/default

Затем используйте текстовый редактор командной строки, такой как Nano, чтобы создать новый файл блока сервера в каталоге /etc/nginx/conf.d/. Вставьте следующий текст в файл. Следующий фрагмент заставит Nginx прослушивать порт 80 IPv4 и порт 80 IPv6 с универсальным именем сервера.


nano /etc/nginx/conf.d/default.conf

server {

  listen 80;
  listen [::]:80;
  server_name _;
  root /usr/share/nginx/html/;
  index index.php index.html index.htm index.nginx-debian.html;
  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Сохраните и закройте файл. (Чтобы сохранить файл в текстовом редакторе Nano, нажмите Ctrl+O, затем нажмите Enter для подтверждения. Чтобы выйти, нажмите Ctrl+X.)

Затем протестируйте конфигурации Nginx.

nginx -t

Если тест прошел успешно, перезагрузите Nginx.

systemctl reload nginx

6. Протестируем PHP

Чтобы протестировать PHP-FPM с веб-сервером Nginx, нам нужно создать файл info.php в каталоге webroot.

nano /usr/share/nginx/html/info.php

<?php phpinfo(); ?>

Сохраните и закройте файл. Теперь в адресной строке браузера введите server-ip-address/info.php. Замените серверный IP-адрес вашим фактическим IP-адресом. Если вы следуете этому руководству на своем локальном компьютере, введите 127.0.0.1/info.php или localhost/info.php.

Вы увидите информацию PHP вашего сервера. Это означает, что PHP-скрипты могут правильно работать с веб-сервером Nginx.

7. Автоматический перезапуск Nginx

Если по какой-либо причине ваш процесс Nginx остановлен, вам необходимо выполнить следующую команду, чтобы перезапустить его.

systemctl restart nginx

Вместо того, чтобы вручную вводить эту команду, мы можем сделать автоматический перезапуск Nginx, отредактировав системный модуль nginx.service systemd. Чтобы переопределить конфигурацию службы systemd по умолчанию, мы создаем отдельный каталог.

mkdir -p /etc/systemd/system/nginx.service.d/

Затем создайте файл в этом каталоге.

nano /etc/systemd/system/nginx.service.d/restart.conf

Добавьте в файл следующие строки, которые заставят Nginx автоматически перезапускаться через 5 секунд после обнаружения сбоя. Значение RetartSec по умолчанию — 100 мс, что слишком мало. Nginx может жаловаться, что «запрос на запуск повторяется слишком быстро», если RestartSec недостаточно велик.


[Service]

Restart=always
RestartSec=5s

Сохраните и закройте файл. Затем перезагрузите systemd, чтобы изменения вступили в силу.

systemctl daemon-reload

Чтобы проверить, будет ли это работать, уничтожьте Nginx с помощью:

pkill nginx

Затем проверьте статус Nginx. Вы обнаружите, что Nginx автоматически перезапускается.

systemctl status nginx

LEMP (Nginx, MariaDB и PHP7.4) успешно установлен на Debian 11. Все эти действия уже выполнены в предустановленной конфигурации LEMP Debian 11 для VPS серверов в форме заказа.




Нет комментариев