Полный пошаговый гайд по установке Nginx, PHP 8.4 и MySQL на Ubuntu 24.04

В этой статье подробно описано, как с нуля настроить на Ubuntu 24.04 полноценный стек веб-сервера на базе Nginx, PHP 8.4 (через PHP-FPM) и MySQL.

Подготовка системы

Перед началом убедитесь, что система обновлена. Это избавит вас от проблем с зависимостями:

sudo apt update && sudo apt upgrade -y

Эта команда обновит список пакетов и установит последние обновления для уже установленных программ.

Установка Nginx

Nginx - это быстрый и надёжный HTTP-сервер. Установить его можно через стандартный пакетный менеджер:

sudo apt install nginx -y

После установки проверьте статус сервера:

sudo systemctl status nginx

Если сервер ещё не запущен, стартуйте его:

sudo systemctl start nginx

Установка PHP 8.4

По умолчанию в Ubuntu 24.04 PHP 8.4 не включён в стандартные репозитории. Чтобы получить свежую версию PHP и необходимые расширения, добавим репозиторий ondrej/php который широко используется как источник актуальных пакетов PHP.

1. Установка зависимостей и добавление PPA

sudo apt install software-properties-common ca-certificates apt-transport-https -y
sudo add-apt-repository ppa:ondrej/php
sudo apt update

Нажмите Enter, когда система предложит подтвердить добавление PPA.

2. Установка PHP 8.4 с расширениями

Установите PHP и набор расширений, необходимых для работы с базами данных, XML, строками и прочим:

sudo apt install php8.4 php8.4-fpm php8.4-cli php8.4-mysql php8.4-curl \
php8.4-xml php8.4-mbstring php8.4-zip php8.4-bcmath php8.4-intl -y

Проверьте установленную версию:

php -v

Вы должны увидеть информацию о версии PHP 8.4.

Настройка PHP-FPM для Nginx

PHP-FPM (FastCGI Process Manager) обрабатывает PHP-запросы для Nginx.

Проверьте, что PHP-FPM запущен:

sudo systemctl status php8.4-fpm

Если он не активен, включите и запустите:

sudo systemctl enable php8.4-fpm
sudo systemctl start php8.4-fpm

Теперь нужно настроить Nginx для обработки PHP-файлов.

Настройка виртуального хоста Nginx

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

sudo nano /etc/nginx/sites-available/your-site.conf

Пример конфигурации:

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

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

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

Сохраните изменения, затем проверьте конфигурацию:

sudo nginx -t

Если проверка успешна, перезапустите Nginx:

sudo systemctl reload nginx

Теперь Nginx готов обрабатывать PHP-запросы через PHP-FPM.


Тестирование работы PHP

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

1. Создание тестового PHP-файла

Создайте файл info.php в каталоге сайта, который указан в директиве root вашего виртуального хоста Nginx.

Например, если в конфигурации используется:

root /var/www/your-site;

создайте файл так:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/your-site/info.php

2. Настройка файла hosts

Если вы используете доменное имя (например, example.com), но DNS ещё не настроен, необходимо добавить запись в локальный файл hosts. Откройте файл:

sudo nano /etc/hosts

Добавьте строку:

127.0.0.1 example.com

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

3. Проверка в браузере

Откройте в браузере:

http://example.com/info.php

Если всё настроено правильно, вы увидите страницу с подробной информацией о версии PHP и загруженных расширениях. Также можно проверить напрямую через localhost:

http://localhost/info.php

4. Удаление тестового файла

После проверки обязательно удалите файл info.php, так как он содержит чувствительную информацию о сервере:

sudo rm /var/www/your-site/info.php

Установка и настройка MySQL

Теперь установим СУБД MySQL:

sudo apt install mysql-server -y

После установки запустите встроенный скрипт безопасной настройки:

sudo mysql_secure_installation

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

Проверка соединения PHP -> MySQL

Создайте в корне сайта файл для теста подключения:

<?php
$conn = new mysqli("localhost", "username", "password", "database");
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

Сохраните его в /var/www/your-site/test-db.php и откройте через браузер.

Если вы увидите сообщение Connected successfully, значит PHP корректно работает с MySQL.


Все, вы настроили на Ubuntu 24.04 современный веб-сервер с Nginx, PHP 8.4 и MySQL. Это мощный и гибкий стек для обслуживания сайтов, CMS и веб-приложений.

Если потребуется расширить функциональность, можно установить дополнительные расширения PHP, настроить SSL, виртуальные хосты, или добавить инструменты отладки.

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

Типичные ошибки безопасности в Laravel-приложениях и как их правильно исправить

Распространённые ошибки безопасности в Laravel-приложениях и способы их устранения. Разбираем CSRF, SQL-инъекции, XSS, массовое заполнение, загрузку файлов и настройки окружения.

Наследование моделей в Laravel с помощью Parental

Разбор пакета Parental для Laravel, который реализует single table inheritance (STI) в Eloquent, т.е наследование моделей в одной таблице. Статья объясняет, зачем это нужно, как настроить Parental, управлять типами моделей и работать с дочерними связями.

Как использовать docker exec для запуска команд в контейнере Docker

Использование команды docker exec для запуска команд внутри работающего Docker-контейнера. Приведены примеры команд, вывод консоли, разбор опций и рекомендации по устранению ошибок.

Как ускорить Laravel-приложение: параллельные API-запросы через Http::pool и Http::batch

Статья объясняет, как ускорить Laravel-приложения, выполняя API-запросы параллельно с помощью Http::pool и Http::batch. Приводятся практические примеры, обработка ответов и советы по таймаутам.