Установка LEMP [NGINX + PHP] сервера на Ubuntu 24.04: Подробное руководство

21 июля 2024 8 мин чтения Раздел: Руководства
LEMP сервер на Ubuntu 24.04

В этом руководстве мы установим LEMP стек сервер (Linux, Nginx, MariaDB, PHP) на Ubuntu 24.04. Настроим веб-сервер Nginx, базу данных MariaDB, и PHP, включая SSL сертификат с помощью Certbot. Это идеальное руководство для всех, кто хочет запустить свой сайт на собственном сервере.

Что можно разместить на таком сервере:

  • Веб-сайты: личные и корпоративные сайты.
  • Блоги: идеально под Wordpress.
  • Интернет-магазины: Платформы для электронной коммерции.
  • Веб-приложения: Приложения на PHP, такие как CRM и CMS.
  • Базы данных: Хранение и управление данными с помощью MariaDB.

Шпаргалка

Logs

nano /var/log/nginx/error.log
nano /var/log/nginx/access.log

Nginx config

nano /etc/nginx/nginx.conf
nano /etc/nginx/sites-available/cpmdealer

Php Config

nano /etc/php/8.3/fpm/pool.d/www.conf
systemctl stop php8.3-fpm
systemctl reload nginx
service php-fpm status
systemctl status nginx
systemctl restart php8.3-fpm
systemctl restart nginx

Files

sudo chown -R cpmdealer:cpmdealer /var/www/
sudo chmod -R 755 /var/www/

Шаг 1: Создание нового пользователя и настройка прав

Работа под root на сервере опасна, так как root имеет полный доступ ко всем системным файлам и функциям.

Например, если злоумышленник получит root-доступ через уязвимость в веб-приложении, он сможет удалить все файлы (rm -rf /) или установить вредоносное ПО. Использование ограниченных учетных записей снижает риски, ограничивая потенциальный ущерб от ошибок и атак.

Обновляемся:

sudo apt update && sudo apt upgrade -y

Добавление нового пользователя:

sudo adduser cpmdealer

Эта команда создает пользователя cpmdealer.

Добавление пользователя в группу sudo:

sudo usermod -aG sudo cpmdealer

Это дает пользователю cpmdealer права на выполнение команд с привилегиями суперпользователя.

Шаг 2: Установка и настройка временной зоны

Настройка временной зоны:

sudo dpkg-reconfigure tzdata

Следуйте инструкциям на экране для выбора нужной временной зоны.

Шаг 3: Установка и настройка компонентов LEMP

Установка необходимых пакетов:

sudo apt install -y nginx mariadb-server mariadb-client php-fpm php-cli php-zip php-xml php-mysql php-json php-curl php-imagick php-mbstring certbot python3-certbot-nginx

Эти пакеты включают в себя веб-сервер nginx, базу данных MariaDB и PHP с необходимыми расширениями.

Добавляем пользователя в группу www-data:

sudo usermod -aG www-data cpmdealer

Проверка версии PHP:

php -v

Убедитесь, что PHP установлен и работает.

Шаг 4: Настройка веб-сервера Nginx

Создаем директории для нашего проекта:

sudo mkdir /var/www/cpmdealerfolder

Назначаем права на эти директории:

sudo chown cpmdealer:cpmdealer /var/www/cpmdealerfolder

Создание конфигурационного файла для сайта:

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

Приведенный ниже конфигурационный файл настраивает сервер для вашего сайта (замените server_name, root, и listen на ваши значения):

server {
    listen 80;
    server_name cpmdealer.com www.cpmdealer.com;

    root /var/www/cpmdealercom;
    index index.php index.html index.htm;

    # Logs
    access_log /var/log/nginx/cpmdealercom.access.log;
    error_log /var/log/nginx/cpmdealercom.error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;  # Путь к PHP-FPM сокету, проверьте версию PHP на вашем сервере
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\. {
        deny all;
    }
}

Активация сайта:

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

Перезагрузка Nginx:

sudo systemctl reload nginx

Шаг 5: Установка SSL сертификата

Установка SSL сертификата с помощью Certbot:

sudo certbot -d cpmdealer.com -d www.cpmdealer.com

Запускаем только после привязки домена к серверу.

Шаг 6: Настройка MariaDB

Запускаем и включаем службу MariaDB:

sudo systemctl start mariadb
sudo systemctl enable mariadb

Проверяем статус MariaDB:

sudo systemctl status mariadb

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

sudo mysql_secure_installation

Вход в MariaDB (вместо пароля enter):

sudo mariadb -u root -p

Создание базы данных и пользователя:

CREATE DATABASE bdname;

Создайте нового пользователя и предоставьте ему права доступа к новой базе данных:

CREATE USER 'имя_пользователя'@'localhost' IDENTIFIED BY 'пароль_пользователя';
GRANT ALL PRIVILEGES ON имя_базы_данных.* TO 'имя_пользователя'@'localhost';
FLUSH PRIVILEGES;

Выходим из бд:

EXIT;

Как улучшить сервер

Поздравляю! Вы успешно установили и настроили LEMP сервер на Ubuntu 24.04. Теперь у вас есть полностью функционирующий веб-сервер, готовый к приему ваших веб-приложений.

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

Как можно улучшить сервер:

  • CDN: Подключите сеть доставки контента на примере Cloudflare.
  • Резервное копирование: Настройте автоматические резервные копии для защиты данных.
  • Мониторинг: Внедрите системы мониторинга, такие как Prometheus или Grafana, чтобы следить за производительностью сервера.
  • Оптимизация безопасности: Настройте файрволы (например, UFW), используйте Fail2Ban для защиты от брутфорс-атак и обновляйте ПО.
  • Скорость: Кэширование с помощью Varnish или Redis, сжатие Gzip или Brotli.