Установка стека LEMP на сервере или десктопе с операционной системой Ubuntu 24.04

Данный учебник продемонстрирует, как выполнить установку стека LEMP (Nginx, MariaDB и PHP8.3) на Ubuntu 24.04. Стек программного обеспечения представляет собой совокупность инструментов, которые работают совместно. LEMP — это акроним, который включает в себя Linux, Nginx (Engine-X), MariaDB/MySQL и PHP, все из которых являются бесплатными и открытыми программными решениями.

Это самый популярный набор программных инструментов, который обеспечивает функционирование динамических веб-сайтов и приложений.

  • Linux представляет собой операционную систему.
  • Nginx является сервером для обработки веб-запросов.
  • MariaDB/MySQL представляет собой систему управления базами данных.
  • PHP — это язык сценариев, работающий на серверной стороне и предназначенный для разработки динамических веб-страниц.

Требования

Чтобы воспользоваться этим учебником, вам потребуется операционная система Ubuntu 24.04, установленная на вашем персональном компьютере или на удаленном сервере.

Если вы ищете виртуальный частный сервер (VPS), обратите внимание на Kamatera VPS, который предоставляет:

  • Бесплатный пробный период на протяжении 30 дней.
  • Стартовая цена — всего $4 в месяц за 1 ГБ оперативной памяти.
  • VPS с высокой производительностью на платформе KVM
  • Девять центров обработки данных расположены по всему миру, среди которых США, Канада, Великобритания, Германия, Нидерланды, Гонконг и Израиль.

Используйте руководство по указанной ниже ссылке для настройки вашего сервера Linux VPS на платформе Kamatera.

  • Как организовать VPS-сервер на базе Linux с помощью Kamatera.

Как только вы получите VPS с Ubuntu 24.04, выполните следующие шаги.

Если вам требуется установить стек LEMP с доменным именем, я советую приобретать домены через NameCheap, так как там доступные цены и бесплатная защита конфиденциальности whois на постоянной основе.

Обновление программных пакетов

Перед установкой стека LEMP настоятельно рекомендуется обновить репозиторий и программные пакеты. Для этого выполните следующие команды в вашей системе Ubuntu 24.04.

sudo apt update sudo apt upgrade - y

Инсталляция веб-сервера Nginx

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

sudo apt install nginx

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

sudo systemctl enable nginx

После этого запустите Nginx, используя следующую команду:

sudo systemctl start nginx

Теперь узнайте его текущее состояние.

sudo systemctl status nginx

nginx.service - это высокоэффективный веб-сервер и обратный прокси-сервер. Статус загрузки: загружен (/lib/systemd/system/nginx.service; включен; поставщик по умолчанию: активирован). Текущее состояние: активен.действует активно с Пт 2024-05-10 14:11:43 UTC; 3 сек назад Документация: man:nginx(8) Процесс: 8533 ExecStartPre=/usr/sbin/nginx - t - q - g daemon on; master_process on; (код=выполнен, статус=0/УСПЕХ) Процесс: 8545 ExecStart=/usr/sbin/nginx - g daemon on; master_process on; (код=выполнен, статус=0/УСПЕХ) Главный PID: 8549 (nginx) Задачи: 3 (ограничение: 9451) Память: 3.9МБ CGroup: /system. slice/nginx.service ├─8549 nginx: главный процесс /usr/sbin/nginx - g daemon on; master_process on; ├─8550 nginx: рабочий процесс └─8551 nginx: рабочий процесс

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

Убедитесь, что вы знаете версию Nginx.

nginx - v

nginx версия: nginx/1.24.0 (Ubuntu)

Введите публичный IP-адрес вашего сервера с Ubuntu 24.04 в строку браузера. Вы увидите страницу «Welcome to Nginx», что подтвердит успешную работу веб-сервера Nginx. Если вы устанавливаете LEMP на локальной машине с Ubuntu 24.04, используйте 127.0.0.1 или localhost в адресной строке.

Читайте также:  Установка Drupal 8 на Ubuntu 16.04 с использованием Nginx, MariaDB и PHP7

Стек LEMP на Ubuntu 24.04

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

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

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

sudo ufw allow http

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

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

Настройка сервера базы данных MariaDB

MariaDB служит альтернативой MySQL и была создана бывшими участниками команды MySQL, которые выражали опасения по поводу возможности превращения MySQL в закрытое программное обеспечение под управлением Oracle. Для установки MariaDB на Ubuntu 24.04 выполните следующую команду.

sudo apt install mariadb-server mariadb-client

После установки сервер MariaDB должен запуститься автоматически. Для проверки его состояния воспользуйтесь командой systemctl.

systemctl status mariadb

Служба mariadb.service - это сервер базы данных MariaDB версии 10.11.7. Статус загрузки: загружен (/lib/systemd/system/mariadb.service; активирован; установка по умолчанию: активирована). Текущий статус: активен.действует активно с Пт 2022-05-10 14:19:16 UTC; 18 секунд назад Документация: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Основной PID: 9161 (mysqld) Статус: "Принимаем ваши SQL-запросы." Задачи: 31 (лимит: 9451) Память: 64.7M CGroup: /system. slice/mariadb.service └─9161 /usr/sbin/mysqld

Если команда не завершает выполнение сразу, нажмите «q», чтобы выйти.

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

sudo systemctl start mariadb

Для того чтобы MariaDB запускалась автоматически при старте системы, выполните следующую процедуру:

sudo systemctl enable mariadb

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

sudo mysql_secure_installation

  • При запросе ввести пароль root для MariaDB просто нажмите клавишу Enter, так как на данный момент пароль root не задан.
  • Не стоит переключаться на аутентификацию unix_socket, поскольку MariaDB уже применяет данный метод аутентификации.
  • Не изменяйте пароль для пользователя root, так как он не нужен при использовании аутентификации через unix_socket.

Установка LEMP стека на Ubuntu 22.04

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

How-to-Install-LEMP-stack-on-Ubuntu-22.04

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

sudo mariadb - u root

exit;

Убедитесь в актуальности данных о версии сервера MariaDB.

mariadb --version

Мы установили версию MariaDB 10.11.7.

mariadb Ver 15.1 Distrib 10.11.7-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper

Инсталляция PHP 8.3

PHP 8.3 добавлен в репозиторий Ubuntu 24.04 и демонстрирует незначительное увеличение производительности по сравнению с версией 8.2. Чтобы установить PHP 8.3 вместе с рядом популярных расширений, введите следующую команду.

sudo apt install php8.3 php8.3-fpm php8.3-mysql php-common php8.3-cli php8.3-common php8.3-opcache php8.3-readline php8.3-mbstring php8.3-xml php8.3-gd php8.3-curl

PHP-расширения часто играют важную роль в системах управления контентом (CMS), например, в WordPress. Если в вашей установке отсутствует расширение php8.3-xml, это может привести к тому, что некоторые страницы вашего сайта WordPress будут отображаться пустыми, и в журнале ошибок Nginx вы можете увидеть подобные сообщения об ошибках:

PHP message: PHP Fatal error: Uncaught Error: Call to undefined function xml_parser_create()

Инсталляция данных PHP-расширений обеспечивает бесперебойную работу вашей CMS. Теперь можете запустить php8.3-fpm.

sudo systemctl start php8.3-fpm

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

Читайте также:  Как использовать команду wc в Linux для подсчета строк слов и символов

sudo systemctl enable php8.3-fpm

systemctl status php8.3-fpm

php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php8.3-fpm.service; enabled ; vendor pr> Active: активный (работающий) since Fri 2024-05-10 14:40:26 UTC; 12s ago Docs: man:php-fpm8.1(8) Process: 21019 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /ru> Main PID: 21012 (php-fpm8.1) Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req> Tasks: 3 (limit: 9451) Memory: 9.4M CGroup: /system. slice/php8.3-fpm.service ├─21012 php-fpm: master process (/etc/php/8.1/fpm/php-fpm.conf) ├─21017 php-fpm: pool www └─21018 php-fpm: pool www

Если указанная команда не завершается сразу после запуска, вам следует нажать «q», чтобы выйти.

Настройка блока сервера Nginx

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

sudo rm /etc/nginx/sites-enabled/default

После этого воспользуйтесь текстовым редактором командной строки, таким как Nano, чтобы создать новый файл конфигурации сервера в директории /etc/nginx/conf.d/.

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

Поместите указанный текст в файл. Данный код настроит Nginx на прослушивание порта 80 для IPv4 и порта 80 для IPv6 с использованием универсального имени сервера.

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.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; >Долговременное кэширование в браузере может ускорить повторные заходы на ваш сайт.~

  • .(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$
  • < access_log off; log_not_found off; expires 360d; >ограничить доступ к скрытым файлам местоположение~ /\.ht < access_log off; log_not_found off; deny all; >>

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

    После этого проверьте настройки Nginx.

    sudo nginx - t

    При успешном выполнении теста перезапустите Nginx.

    sudo systemctl reload nginx

    Проверка работы PHP

    Для проверки работы PHP-FPM с веб-сервером Nginx необходимо создать файл info.php в корневой папке веб-сайта.

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

    Поместите данный PHP-код в файл.

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

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

    Ubuntu 24.04 с установленным Nginx и PHP версии 8.3.

    Оптимизация производительности PHP

    Настройки PHP по умолчанию, находящиеся в файле /etc/php/8.3/fpm/php. ini, созданы для серверов с минимальными ресурсами, например, с 256 МБ оперативной памяти. Для повышения производительности веб-приложений необходимо внести в них определенные изменения.

    Можно внести изменения в файл конфигурации PHP (php. ini), однако рекомендуется создать индивидуальный файл конфигурации PHP. Это позволит сохранить ваши настройки при обновлении до версии PHP 8.3.

    sudo nano /etc/php/8.3/fpm/conf.d/60-custom. ini

    В данном файле следует включить следующие строки.

    ; Максимальное количество памяти, которое может использовать скрипт. По умолчанию 128M memory_limit = 512M ; Максимально допустимый размер загружаемых файлов. По умолчанию 2M. upload_max_filesize = 20M ; Максимальный размер данных POST, который PHP будет принимать. По умолчанию 2M. post_max_size = 20M ; Размер общей памяти для кэширования OPcache. По умолчанию 128 opcache. memory_consumption=256 ; Количество памяти для интернированных строк в мегабайтах. По умолчанию 8. opcache. interned_strings_buffer=32

    Ubuntu 24.04 улучшает производительность PHP 8.3

    Сохраните файл и закройте его. После этого перезапустите PHP 8.3-FPM, чтобы изменения начали действовать.

    sudo systemctl reload php8.3-fpm

    OPcache повышает эффективность работы PHP-приложений, кэшируя заранее скомпилированный байт-код. Статистику OPcache можно увидеть на странице info.php. Вот сравнение производительности до и после на одном из моих серверов.

    До

    Статистика кэша OpCache в PHP.

    После

    Оптимизация Zend Opcache

    Перед применением пользовательской настройки PHP, оперативная память, выделенная для OPcache, практически полностью занята. После внедрения пользовательских конфигураций PHP, OPcache получает возможность использовать больше оперативной памяти для кэширования заранее скомпилированного байт-кода.

    Поздравляем! Вам удалось установить Nginx, MariaDB и PHP 8.3 на Ubuntu 24.04. Для повышения безопасности вашего сервера рекомендуется удалить файл info.php, чтобы исключить его доступ для хакеров.

    sudo rm /usr/share/nginx/html/info.php

    Рекомендации по решению проблем.

    В случае возникновения ошибок вы можете ознакомиться с журналом ошибок Nginx ( /var/log/nginx/error.log ), чтобы определить причину проблемы.

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

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

    sudo systemctl restart nginx

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

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

    После этого создайте документ в данной папке.

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

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

    [Service] Restart=always RestartSec=5s

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

    sudo systemctl daemon-reload

    Чтобы убедиться в этом, остановите Nginx командой:

    sudo pkill nginx

    После этого убедитесь в статусе Nginx. Вы увидите, что Nginx перезапустился автоматически.

    systemctl status nginx

    Автоматическое стартование MariaDB

    MariaDB изначально настроена на автоматический перезапуск при возникновении сбоев (файл /lib/systemd/system/mariadb.service). Тем не менее, если на вашем сервере не хватает оперативной памяти, и MariaDB будет завершена oom-убийцей, она не перезапустится автоматически. Мы можем изменить настройки, чтобы обеспечить ее перезапуск в любых ситуациях.

    Создайте папку для хранения настроек пользователей.

    sudo mkdir - p /etc/systemd/system/mariadb.service.d/

    Сформируйте документ с индивидуальными настройками.

    sudo nano /etc/systemd/system/mariadb.service.d/restart.conf

    Включите следующие строки в документ.

    [Service] Restart=always RestartSec=5s

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

    sudo systemctl daemon-reload

    Предстоящие действия

    Если этот пост оказался для вас полезным, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше советов и рекомендаций. Также вы можете установить WordPress на платформу LEMP для создания собственного веб-сайта или блога.

    • Установите WordPress на Ubuntu 24.04, используя стек LEMP с Nginx, MariaDB и PHP 8.3.

    Сопутствующие руководства по Nginx:

    • Как устранить часто встречающиеся ошибки веб-сервера Nginx

    Создание резервных копий необходимо для защиты от взломов, аварий в дата-центрах и других непредвиденных ситуаций. Важно разработать план резервного копирования для вашего сервера.

    • Создание резервной копии и восстановление баз данных MariaDB через командную строку.
    • Применяйте Duplicati для создания резервных копий файлов на системах Debian, Ubuntu и Linux Mint.

    Оптимизация работы и отслеживание состояния серверов на базе Linux.

    • Простым способом повысить производительность сети в Ubuntu является активация TCP BBR.
    • HTTP/2 — это версия протокола передачи гипертекста, обеспечивающая более быструю и эффективную передачу данных по сравнению с HTTP/1.1. Она улучшает производительность за счет многопоточности и сжатия заголовков. Для включения HTTP/2 в Nginx необходимо:

      1. Убедиться, что Nginx поддерживает HTTP/2. Это можно проверить через команду

        nginx - v

        и убедиться, что версия Nginx 1.9.5 или выше.

      2. Изменить конфигурацию Nginx: откройте конфигурационный файл вашего сайта, обычно находящийся в

        /etc/nginx/sites-available/

        или

        /etc/nginx/conf.d/

        , и в блоке конфигурации сервера добавьте

        http2

        в строку с директивой

        listen 443 ssl

        .

      3. Перезагрузить Nginx, используя команду

        sudo systemctl restart nginx

        , чтобы изменения вступили в силу.

      После этих шагов ваш сервер будет использовать HTTP/2 для обработки запросов на защищённых соединениях (SSL).

    • Отслеживание работы серверов Linux с использованием Netdata (2022)