В этом руководстве показано, как установить стек LEMP (Nginx, MariaDB и PHP-8.2) в Debian 12. Программный стек — это набор программных инструментов, объединенных вместе. LEMP означает Linux, Nginx (Engine-X), MariaDB/MySQL и PHP, все они имеют открытый исходный код и бесплатны для использования. Это наиболее распространенный программный стек, который поддерживает динамические веб-сайты и веб-приложения. Linux — это операционная система; Nginx — веб-сервер; MariaDB/MySQL — это сервер базы данных, а PHP — это серверный язык сценариев, отвечающий за создание динамических веб-страниц. В данном руководстве мы выполняем установку от пользователя root, если у Вас обычный, используйте команду sudo. |
Наиболее часто задаваемые вопросы:
-
Мы хотим, чтобы все данные находились у нас. Можете ли Вы произвести всю эту настройку на нашем оборудовании?
Да, Вы можете заказать установку и настройку данной конфигурации на Вашем оборудовании по ссылке.
Конфигурация преднастроенного сервера доступна на форме заказа.
1. Обновите пакеты программного обеспечения
Прежде чем мы установим стек LEMP, рекомендуется обновить репозиторий и пакеты программного обеспечения. Выполните следующие команды в ОС Debian 12.
apt update
apt upgrade
2. Установите веб-сервер Nginx
Nginx — это высокопроизводительный веб-сервер, очень популярный в наши дни. Его также можно использовать в качестве обратного прокси-сервера и кэширующего сервера. Введите следующую команду, чтобы установить веб-сервер Nginx.
apt install nginx
После его установки мы можем включить автоматический запуск Nginx во время загрузки, выполнив следующую команду.
systemctl enable nginx
Затем запустите Nginx с помощью этой команды:
systemctl start nginx
Теперь проверьте его состояние.
systemctl status nginx
Теперь введите общедоступный IP-адрес вашего сервера Debian 12 в адресной строке браузера. Вы должны увидеть веб-страницу «Добро пожаловать в Nginx», что означает, что веб-сервер Nginx работает правильно. Если вы устанавливаете LEMP на свой локальный компьютер с Debian 12, введите 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 12.
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. Установим PHP-8.2
PHP-8.2 включен в репозиторий Debian 12 и имеет незначительное улучшение производительности по сравнению с PHP-7.x. Введите следующую команду, чтобы установить PHP-8.2 и некоторые распространенные расширения.
apt install php php-fpm php-mysql php-common php-cli php-common php-json php-opcache php-readline php-mbstring php-xml php-gd php-curl
Расширения PHP обычно необходимы для систем управления контентом (CMS), таких как WordPress. Например, если в вашей установке отсутствует php8.2-xml, то некоторые страницы вашего сайта WordPress могут быть пустыми, и вы можете найти ошибку в журнале ошибок Nginx, например:
Сообщение PHP: Неустранимая ошибка PHP: необработанная ошибка: вызов неопределенной функции xml_parser_create()
Установка этих расширений PHP гарантирует бесперебойную работу вашей CMS. Теперь запустите php8.2-fpm.
systemctl start php8.2-fpm
Включите автозапуск во время загрузки.
systemctl enable php8.2-fpm
Проверить статус:
systemctl status php8.2-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/php8.2-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
Сохраните и закройте файл. Теперь в адресной строке браузера введите 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 и PHP8.2) успешно установлен на Debian 12. Все эти действия уже выполнены в предустановленной конфигурации LEMP Debian 12 для VPS серверов в форме заказа.
Сработало!, впервые сталкиваюсь с nginx.
apt remove nginx
apt install nginx
там в созданный документ по адресу /usr/share/nginx/html/info.php нужно внести следующее
<?php
phpinfo();
?>
тогда при переходе по адресу 127.0.0.1/info.php или localhost/info.php будет выдаваться информация об установленной версии php