Установка LEMP · 8 min read · Sep 10, 2025

Как установить стек LEMP (Linux, Nginx, PHP и MariaDB) на Ubuntu 24.04

Стек LEMP (Linux, Nginx, MySQL/MariaDB и PHP) — это группа бесплатных и открытых программных приложений для хостинга и разработки веб-приложений на PHP. Стек LEMP может использоваться для развертывания как статических, так и динамических веб-приложений.

Этот гид покажет вам, как установить стек LEMP (Linux, Nginx, MySQL/MariaDB и PHP) на Ubuntu 24.04 “Noble Numbat”. Мы также покажем, как защитить сервер MariaDB и создать конфигурацию блока сервера Nginx для хостинга веб-сайтов или доменных имен.

Предварительные требования

Перед тем как начать, убедитесь, что у вас есть Ubuntu 24.04 “Noble Numbat” с правами root или не-root с правами sudo/администратора. Также убедитесь, что UFW (Uncomplicated Firewall) работает и включен.

Установка веб-сервера Nginx

Nginx или engine-x — это самый популярный веб-сервер в интернете. Он стал популярным, потому что Nginx может обрабатывать высокий трафик одновременно с минимальными системными ресурсами. На этом первом этапе вы будете устанавливать веб-сервер Nginx на сервер Ubuntu.

Перед установкой пакетов обновите и обновите список пакетов Ubuntu с помощью следующей команды.

sudo apt update

обновить репозиторий

Установите веб-сервер Nginx на вашу машину Ubuntu с помощью команды ниже. Введите Y, чтобы подтвердить установку, когда будет предложено.

sudo apt install nginx

установить nginx

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

sudo systemctl is-enabled nginx  
sudo systemctl status nginx

Вы должны увидеть, что служба Nginx “ включена “ и текущее состояние “ активно (работает) “.

проверить службу nginx

Перед доступом к Nginx вам нужно открыть порты HTTP и HTTPS на вашем сервере Ubuntu через UFW (Uncomplicated Firewall).

Выполните следующую команду ‘ ufw ‘, чтобы включить профиль ‘ Nginx Full ‘, который позволит доступ по HTTP и HTTPS к вашему серверу Ubuntu.

sudo ufw allow 'Nginx Full'

Теперь проверьте правила UFW с помощью следующей команды. Убедитесь, что профиль ‘ Nginx Full ‘ включен со статусом ‘ALLOW’.

sudo ufw status

настройка nginx ufw

Наконец, посетите http://192.168.5.30/ из вашего предпочтительного веб-браузера, чтобы получить доступ к вашей установке Nginx. Если все прошло успешно, вы должны увидеть страницу по умолчанию ‘ index.html ‘, как показано ниже:

nginx index

Установка сервера MariaDB

После установки Nginx вы установите сервер MariaDB на Ubuntu. В этом примере вы установите MariaDB через репозиторий Ubuntu, а затем защитите установку MariaDB с помощью утилиты ‘ mariadb-secure-installation ‘.

Чтобы установить сервер MariaDB на Ubuntu, выполните следующую команду ‘ apt install ‘. Введите Y и нажмите ENTER, чтобы продолжить процесс.

sudo apt install mariadb-server

установить сервер mariadb

После завершения установки проверьте службу MariaDB с помощью команды ниже. Это покажет вам статус службы MariaDB.

sudo systemctl is-enabled mariadb  
sudo systemctl status mariadb

Служба MariaDB “ включена “ с текущим статусом “ активно (работает) “.

проверить службу mariadb

После установки сервера MariaDB вы должны защитить его с помощью ‘ mariadb-secure-installation ‘. Это позволит вам настроить пароль root для MariaDB, отключить удаленную аутентификацию для пользователя root, а также удалить ненужные базы данных и привилегии из вашей установки сервера MariaDB.

Запустите команду ‘ mariadb-secure-installation ‘ ниже, чтобы защитить сервер MariaDB.

sudo mariadb-secure-installation

Теперь вам будет предложено ответить на следующие конфигурации сервера MariaDB:

Нажмите ENTER, когда будет предложено ввести пароль root для MariaDB.

Введите текущий пароль для root (введите для отсутствия):  
Хорошо, пароль успешно использован, продолжаем...

Введите ‘ n ‘, когда вас спросят о переключении на аутентификацию unix_socket.

Переключить на аутентификацию unix_socket [Y/n] n  
 ... пропускаем.

Введите Y, чтобы настроить пароль root для MariaDB. Затем введите ваш новый пароль и повторите его.

Изменить пароль root? [Y/n] Y  
Новый пароль:  
Повторите новый пароль:  
Пароль успешно обновлен!  
Перезагрузка таблиц привилегий..  
 ... Успех!

Введите Y, чтобы удалить пользователя по умолчанию анонимного пользователя из вашей установки сервера MariaDB.

Удалить анонимных пользователей? [Y/n] Y  
 ... Успех!

Введите Y, чтобы отключить удаленный вход для пользователя root MariaDB. Пользователь root всегда должен подключаться с localhost.

Запретить удаленный вход для root? [Y/n] Y  
 ... Успех!

Теперь снова введите Y, чтобы удалить тестовую базу данных по умолчанию и ее привилегии из вашего сервера MariaDB.

Удалить тестовую базу данных и доступ к ней? [Y/n] Y  
 - Удаление тестовой базы данных...  
 ... Успех!  
 - Удаление привилегий на тестовую базу данных...  
 ... Успех!

Введите Y, чтобы перезагрузить таблицы привилегий и применить все изменения, которые вы сделали до сих пор.

Перезагрузить таблицы привилегий сейчас? [Y/n] Y  
 ... Успех!

Когда все будет завершено, вы увидите следующее сообщение:

Все готово! Если вы завершили все вышеперечисленные шаги, ваша установка MariaDB  
должна быть теперь защищена.  
  
Спасибо за использование MariaDB!

Установка PHP-FPM

PHP-FPM (FastCGI Process Manager) — это альтернатива реализации FastCGI для PHP. Он в основном используется для сайтов с высоким трафиком с Nginx в качестве веб-сервера. В этом разделе вы установите PHP-FPM с некоторыми дополнительными расширениями, такими как mysqli для драйвера MySQL/MariaDB, opcache и APCu для кэширования.

Установите PHP-FPM на ваш сервер Ubuntu с помощью следующей команды. Когда будет предложено, введите Y и нажмите ENTER, чтобы продолжить.

sudo apt install php-fpm php-mysql php-curl php-gd php-json php-intl php-bcmath php-opcache php-apcu php-mbstring php-fileinfo php-xml php-soap php-tokenizer php-zip

установить php-fpm

После завершения установки служба PHP-FPM должна быть запущена и работать. Проверьте статус службы PHP-FPM с помощью следующей команды.

sudo systemctl is-enabled php8.3-fpm  
sudo systemctl status php8.3-fpm

Как вы можете видеть ниже, PHP-FPM “ активно (работает) “ и “ включен “ при загрузке системы:

проверить службу php-fpm

На Ubuntu по умолчанию PHP-FPM работает через сокетный файл. Знание пути к сокетному файлу PHP-FPM важно, так как он будет использоваться для интеграции с веб-сервером Nginx.

Проверьте путь к сокетному файлу PHP-FPM с помощью следующей команды.

ss -pl | grep php

В следующем выводе вы можете увидеть, что сокетный файл PHP-FPM находится по адресу ‘ /run/php/php8.3-fpm.sock ‘.

Интеграция Nginx с PHP-FPM

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

Откройте конфигурацию блока сервера ‘ /etc/nginx/sites-available/default ‘ с помощью следующей команды редактора nano.

sudo nano /etc/nginx/sites-available/default

Распакуйте следующие строки и убедитесь, что вы изменили путь к сокетному файлу PHP-FPM на новое местоположение.

 # передать PHP-скрипты на сервер FastCGI  
 #  
 location ~ \.php$ {  
     include snippets/fastcgi-php.conf;  
  
     # # С php-fpm (или другими unix-сокетами):  
     fastcgi_pass unix:/run/php/php8.3-fpm.sock;  
  
     # # С php-cgi (или другими tcp-сокетами):  
     # fastcgi_pass 127.0.0.1:9000;  
 }

Сохраните файл и выйдите из редактора.

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

sudo nginx -t

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

интеграция nginx и php-fpm

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

sudo systemctl restart nginx

С перезапущенным Nginx вы можете проверить вашу интеграцию через файл PHPINFO. Выполните команду ниже, чтобы создать файл PHPINFO ‘ info.php ‘ в каталоге веб-корня по умолчанию ‘ /var/www/html/ ‘.

echo "" > /var/www/html/info.php

Наконец, вернитесь в ваш веб-браузер и посетите http://192.168.5.30/info.php. Если ваша интеграция Nginx и PHP-FPM успешна, вы должны увидеть следующее:

Вы можете увидеть ниже, что PHP 8.3 работает с серверным API PHP-FPM под веб-сервером Nginx.

phpinfo

Прокрутите вниз по странице, и вы увидите, что расширение PHP mysqli/mysqlnd также установлено.

php mysql включен

Наконец, вы также увидите кэширование через APC, включенное в вашу установку PHP.

php apc включен

Создание блока сервера Nginx (виртуальный хост)

Блок сервера — это просто другое название для “виртуального хоста” для веб-сервера Nginx. Он используется для хостинга нескольких веб-сайтов или доменных имен на одном сервере. В этом разделе вы узнаете, как создать блок сервера Nginx.

Перед созданием конфигурации блока сервера выполните команду ниже, чтобы создать новый каталог веб-корня ‘/var/www/newsite/public_html’ и пользовательскую страницу ‘index.html’.

mkdir -p /var/www/newsite/public_html  
echo "Добро пожаловать на newsite.com" > /var/www/newsite/public_html/index.html

Теперь выполните команду ниже, чтобы изменить владельца директории ‘ /var/www/newsite ‘ на пользователя ‘ www-data ‘. В системе Ubuntu веб-сервер Nginx работает от имени пользователя ‘ www-data ‘.

sudo chown -R www-data:www-data /var/www/newsite

Затем выполните следующую команду редактора nano, чтобы создать новую конфигурацию блока сервера ‘/etc/nginx/sites-available/newsite’.

sudo nano /etc/nginx/sites-available/newsite

Вставьте приведенную ниже конфигурацию, убедитесь, что вы изменили опцию server_name на ваше доменное имя, а каталог веб-корня на новый путь, такой как ‘ /var/www/newsite/public_html ‘.

server {  
   listen 80;  
   server_name newsite.com;  
  
   root /var/www/newsite/public_html;  
   index index.html;  
  
   location ~ \.php$ {  
     include snippets/fastcgi-php.conf;  
     fastcgi_pass unix:/run/php/php8.3-fpm.sock;  
   }  
  
   location / {  
     try_files $uri $uri/ =404;  
   }  
}

Когда закончите, сохраните и выйдите из файла.

Теперь выполните команду ниже, чтобы активировать конфигурацию блока сервера ‘ newsite ‘. С помощью этой команды вы создадите новую символическую ссылку файла ‘ /etc/nginx/sites-available/newsite ‘ в директории ‘ /etc/nginx/sites-enabled/ ‘.

sudo ln -s /etc/nginx/sites-available/newsite /etc/nginx/sites-enabled/

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

sudo nginx -t

Если ошибок нет, вы должны получить вывод ‘ … синтаксис в порядке / … тест успешен ‘.

Наконец, выполните команду ниже, чтобы перезапустить веб-сервер Nginx и применить вашу новую конфигурацию блока сервера. С этим ваша конфигурация блока сервера должна быть доступна с вашего локального компьютера.

sudo systemctl restart nginx

создать блок сервера

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

Чтобы убедиться, что конфигурация блока сервера Nginx успешна, вы получите доступ к доменному имени вашей конфигурации блока сервера с вашего локального компьютера. Если вы используете публичное доменное имя, посетите доменное имя напрямую. Но для пользователей локального домена отредактируйте файл ‘hosts’ на вашем локальном компьютере.

  • Для пользователей Linux и MacOS отредактируйте файл ‘ /etc/hosts ‘ с правами root/администратора.
  • Для пользователей Windows отредактируйте файл ‘ C:\Windows\System32\drivers\etc\hosts ‘ с правами администратора.

Добавьте ваш IP-адрес сервера и доменное имя, как показано ниже:

192.168.5.30 newsite.com

Сохраните файл и выйдите.

Теперь откройте ваш веб-браузер и посетите http://newsite.com/. Если ваша конфигурация блока сервера Nginx успешна, вы должны увидеть пользовательскую страницу ‘index.html’, которую вы создали, как показано ниже:

блок сервера nginx

Заключение

Поздравляем! Вы теперь установили стек LEMP (Linux, Nginx, MySQL/MariaDB и PHP) на Ubuntu 24.04 “Noble Numbat”. Вы также защитили установку сервера MariaDB и создали блок сервера Nginx для хостинга нескольких веб-сайтов.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.