🌐

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

установка LEMP сервера на ubuntu 24.04

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

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

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

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

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

Использование ограниченных учетных записей снижает риски, ограничивая потенциальный ущерб от ошибок и атак.


Шаг 1: Подготовка к установке

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

sudo apt update && sudo apt upgrade -y

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

sudo dpkg-reconfigure tzdata

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

Шаг 2: Установка и настройка компонентов 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 с необходимыми расширениями.

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

php -v

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

Перезапуск PHP-FPM:

sudo systemctl restart php8.3-fpm

Применение изменений конфигурации PHP-FPM.

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

Создаем нового пользователя username1:

sudo adduser username1

Создаем новую группу cpmdealer:

sudo groupadd cpmdealer

Добавление username1 в группу cpmdealer:

sudo usermod -aG cpmdealer username1

Добавление www-data в группу cpmdealer:

sudo usermod -aG cpmdealer www-data

Теперь проверяем, в какой группе находятся пользователи username1 и www-data:

groups username

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

sudo mkdir /var/www/cpmdealerfolder

Устанавливаем группу cpmdealer и пользователя username1 для директории:

sudo chown -R username1:cpmdealer /var/www/cpmdealerfolder

Включаем наследование группы, флаг setgid (все новые файлы и папки, созданные внутри /path/to/directory, будут автоматически принадлежать группе cpmdealer):

sudo chmod g+s /var/www/cpmdealerfolder

Ставим права на запись директории:

sudo chmod -R 775 /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/cpmdealer;
    index index.php index.html index.htm;

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

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

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

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

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

sudo systemctl reload nginx

Применение изменений конфигурации 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 сервера.

1) Enter current password for root (enter for none) нажмите Enter.
2) Switch to unix_socket authentication y.
3) Change the root password? n.
4) Remove anonymous users? y.
6) Disallow root login remotely? y.
5) Remove test database and access to it? y.
7) Reload privilege tables now? y.

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.
  • Резервное копирование: Настройте автоматические резервные копии для защиты данных.
  • Оптимизация безопасности: Настройте файрволы (например, UFW), используйте Fail2Ban для защиты от брутфорс-атак и обновляйте ПО.
  • Скорость:кэширование с помощью Varnish или Redis, сжатие Gzip или Brotli.
  • Шпаргалка / Cheat sheet


    Logs

    tail /var/log/nginx/error.log  # Просмотр ошибок Nginx
    tail /var/log/nginx/access.log  # Просмотр доступа Nginx

    Nginx config

    ls /etc/nginx/sites-available/  # Смотрим, какие конфиги есть
    nano /etc/nginx/sites-available/YOUR_CONFIG  # Редактирование конфига YOUR_CONFIG 
      
    nano /etc/nginx/nginx.conf  # Редактирование основного конфига

    Php Config

    nano /etc/php/8.3/fpm/pool.d/www.conf  # Настройки пула PHP
    sudo nano /etc/php/8.3/fpm/php.ini  # Основной конфиг PHP
    systemctl restart php8.3-fpm  # Перезапуск PHP-FPM

    System Commands

    systemctl stop php8.3-fpm
    systemctl reload nginx
    service php-fpm status
    systemctl status nginx
    systemctl restart php8.3-fpm
    systemctl restart nginx

    File Permissions

    sudo chown -R projectx:projectx /var/www/  # Назначить владельца и группу
    sudo chmod -R 755 /var/www/  # Установить права на каталоги
    ls -la /var/www/  # Проверка прав доступа к файлам
    ls -la /home/projectx/screenshot-service/  # Проверка прав доступа к сервису
    Поделись в соц-сетях
    To top