В этом уроке мы покажем вам, как установить стек LEMP в Ubuntu 24.04 LTS. Стек LEMP — это мощная комбинация программного обеспечения с открытым исходным кодом, позволяющая запускать динамические веб-сайты и веб-приложения. Он состоит из операционной системы Linux, веб-сервера Nginx (произносится как «engine-x»), сервера базы данных MariaDB и языка программирования PHP.

В этой статье предполагается, что у вас есть хотя бы базовые знания Linux, вы умеете использовать оболочку и, самое главное, размещаете свой сайт на собственном VPS. Установка довольно проста и предполагает, что вы работаете под учетной записью root, в противном случае вам может потребоваться добавить ‘sudo‘ к командам для получения root-прав. Я покажу вам пошаговую установку стека LEMP на Ubuntu 24.04 (Noble Numbat). Вы можете следовать тем же инструкциям для Ubuntu 22.04 и любого другого дистрибутива на основе Debian, такого как Linux Mint, Elementary OS, Pop!_OS и других.

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

  • Сервер под управлением одной из следующих операционных систем: Ubuntu и любого другого дистрибутива на основе Debian, например Linux Mint.
  • Рекомендуется использовать новую установку ОС, чтобы предотвратить любые потенциальные проблемы.
  • Доступ к серверу по SSH (или просто откройте терминал, если вы находитесь на рабочем столе).
  • Активное подключение к Интернету. Вам понадобится подключение к Интернету, чтобы загрузить необходимые пакеты и зависимости.
  • Система Ubuntu 24.04 с root-доступом или пользователь с привилегиями sudo.

Установите стек LEMP в Ubuntu 24.04 LTS Noble Numbat

Шаг 1. Обновление репозитория пакетов.

Также рекомендуется обновить индекс пакетов вашей системы и обновить все доступные пакеты до последних версий. Вы можете сделать это, выполнив следующие команды:

sudo apt update
sudo apt upgrade

sudo apt update Команда обновляет список пакетов, получая информацию о новейших версиях пакетов и их зависимостях. Этот шаг помогает менеджеру пакетов определить, какие пакеты необходимо обновить.

Шаг 2. Установка Nginx в Ubuntu.

Nginx — это первый компонент, который мы установим в наш стек LEMP. Он будет обрабатывать входящие HTTP-запросы и предоставлять клиентам веб-контент.

Откройте терминал и выполните следующую команду для установки Nginx:

sudo apt install nginx

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

sudo systemctl start nginx
sudo systemctl enable nginx

Настройте параметры брандмауэра, чтобы разрешить трафик Nginx. Если у вас включен UFW (несложный брандмауэр), выполните следующую команду:

sudo ufw allow 'Nginx Full'

Убедитесь, что Nginx работает правильно, посетив IP-адрес или доменное имя вашего сервера в веб-браузере. Вы должны увидеть страницу приветствия Nginx по умолчанию.

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

Далее мы установим MariaDB, систему управления базами данных, которая будет хранить данные ваших веб-приложений и управлять ими.

Установите MariaDB с помощью следующей команды:

sudo apt install mariadb-server

После завершения установки запустите сценарий mysql_secure_installation, чтобы защитить установку MariaDB:

sudo mysql_secure_installation

Этот скрипт предложит вам установить пароль root для MariaDB, удалить анонимных пользователей, отключить удаленный вход в систему root, удалить тестовую базу данных и перезагрузить таблицы привилегий. Следуйте подсказкам и выберите безопасные параметры.

Чтобы протестировать установку MariaDB, войдите в оболочку MariaDB:

sudo mysql -u root -p

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

Шаг 4. Установка PHP.

PHP — это язык программирования, который будет использоваться в ваших динамических веб-приложениях. Мы установим PHP 8.3 вместе с необходимыми расширениями для взаимодействия с MariaDB и Nginx.

Установите PHP и необходимые расширения с помощью следующей команды:

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, проверив версию:

php -v

Шаг 5. Настройте Nginx для использования процессора PHP.

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

Создайте новый файл конфигурации блока сервера для вашего домена или веб-сайта:

sudo nano /etc/nginx/sites-available/example.com

Вставьте в файл следующую конфигурацию, заменив example.com IP-адресом вашего домена или сервера:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html index.htm;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Сохраните файл, выйдите из текстового редактора и включите блокировку сервера, создав символическую ссылку:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Проверьте конфигурацию Nginx на наличие синтаксических ошибок:

sudo nginx -t

Если ошибок не обнаружено, перезагрузите Nginx, чтобы изменения вступили в силу:

sudo systemctl reload nginx

Шаг 6. Тестирование PHP с помощью Nginx.

Чтобы убедиться, что PHP работает правильно с Nginx, мы создадим простой информационный файл PHP. Теперь создайте новый файл в корневом каталоге веб-сайта:

sudo nano /var/www/example.com/info.php

Добавьте в файл следующий PHP-код:

<?php
phpinfo();
?>

Сохраните файл и выйдите из текстового редактора, посетите http://example.com/info.php в вашем веб-браузере. Вы должны увидеть страницу информации о PHP, подтверждающую, что PHP правильно работает с Nginx.

Шаг 7. Защита стека LEMP.

Хотя стек LEMP теперь установлен и работает, рекомендуется принять дополнительные меры безопасности для усиления защиты вашего сервера.

Настройте правила UFW (несложный брандмауэр), чтобы ограничить доступ к вашему серверу:

sudo ufw allow OpenSSH
sudo ufw enable

Настройте шифрование SSL/TLS с помощью Let’s Encrypt для безопасной связи:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

Включите автоматическое продление SSL-сертификатов:

sudo systemctl status certbot.timer

Шаг 8. Дополнительные настройки и оптимизации

В зависимости от ваших конкретных требований вы можете рассмотреть следующие дополнительные конфигурации и оптимизации:

  • Включение сжатия Gzip в Nginx: добавьте следующие строки в файл конфигурации Nginx, чтобы включить сжатие Gzip для повышения производительности:
gzip on;
gzip_types text/plain application/xml text/css text/javascript application/javascript;
  • Настройка кэширования с помощью Nginx: Внедрить механизмы кэширования, чтобы снизить нагрузку на сервер и улучшить время отклика для статического контента.
  • Настройка файла подкачки: Если ваш сервер имеет ограниченный объем оперативной памяти, создание файла подкачки может помочь повысить производительность, позволяя системе использовать дисковое пространство в качестве виртуальной памяти.