Save 15% on All Hosting Services

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Рубрики
Linux OS Администрация

Как установить Linux, Nginx, MySQL, PHP (LEMP) Stack на Ubuntu: полное руководство

Стек LEMP — аббревиатура для Linux, Nginx, MySQL и PHP — является одной из наиболее широко используемых конфигураций веб-сервера для питания динамических веб-сайтов и высокопроизводительных веб-приложений. Объединяя надежную стабильность Linux, молниеносную скорость Nginx, мощные возможности управления данными MySQL и универсальность PHP, стек LEMP обеспечивает мощную, масштабируемую и ресурсоэффективную среду хостинга.

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

Если вам нужна надежная основа для запуска этого стека, VPS Hosting AlexHost предоставляет высокопроизводительные виртуальные серверы на базе Linux с полным доступом root, предоставляя вам полный контроль над каждым компонентом вашей среды LEMP. Дополните это SSL-сертификатом, чтобы защитить ваше приложение с первого дня.

В этом подробном руководстве мы проведем вас через каждый этап установки и настройки полного стека LEMP на сервере Ubuntu — от начальной подготовки системы до тестирования вашей живой среды PHP.

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

Перед началом убедитесь, что у вас есть следующее:

  • Сервер, работающий на Ubuntu 18.04, 20.04 или 22.04 LTS
  • Учетная запись пользователя с привилегиями sudo
  • Доступ SSH или прямой доступ к терминалу вашего сервера
  • Зарегистрированное доменное имя (опционально, но рекомендуется для развертывания в production — вы можете зарегистрировать его через Регистрацию доменов AlexHost)

> Совет профессионала: Для чистой, изолированной среды с гарантированными ресурсами план VPS Hosting является идеальной отправной точкой для любого развертывания LEMP.

2. Обновите вашу систему

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

Откройте терминал и выполните:

sudo apt update && sudo apt upgrade -y

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

3. Установите Nginx

Nginx (произносится «engine-x») — это высокопроизводительный веб-сервер, управляемый событиями, и обратный прокси. В отличие от Apache, Nginx обрабатывает одновременные соединения с минимальным потреблением памяти, что делает его предпочтительным выбором для сред с высоким трафиком.

Шаг 1: Установите Nginx

sudo apt install nginx -y

Шаг 2: Запустите и включите Nginx

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

sudo systemctl start nginx
sudo systemctl enable nginx

Шаг 3: Проверьте, что Nginx работает

Проверьте статус сервиса, чтобы подтвердить, что Nginx активен:

sudo systemctl status nginx

Вы должны увидеть вывод, указывающий, что сервис активен (работает). Вы также можете открыть веб-браузер и перейти на IP-адрес вашего сервера:

http://your_server_ip

Если Nginx работает правильно, вы увидите страницу по умолчанию «Welcome to nginx!».

Шаг 4: Настройте брандмауэр (если применимо)

Если у вас включен UFW (Uncomplicated Firewall), разрешите трафик HTTP и HTTPS:

sudo ufw allow 'Nginx Full'
sudo ufw status

4. Установите MySQL

MySQL — это мощная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая служит основой данных для большинства динамических веб-приложений, включая WordPress, Joomla и пользовательские приложения PHP.

Шаг 1: Установите MySQL Server

sudo apt install mysql-server -y

Шаг 2: Защитите установку MySQL

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

sudo mysql_secure_installation

Вам будет предложена серия вопросов. Рекомендуемые ответы для production-сервера:

ВопросРекомендуемый ответ
Настроить компонент VALIDATE PASSWORD?Да
Уровень политики валидации пароля2 (STRONG)
Удалить анонимных пользователей?Да
Запретить удаленный вход root?Да
Удалить тестовую базу данных?Да
Перезагрузить таблицы привилегий?Да

Шаг 3: Проверьте, что MySQL работает

sudo systemctl status mysql

Шаг 4: Войдите в MySQL (опциональная проверка)

sudo mysql -u root -p

Введите пароль root при запросе. Введите exit для выхода из оболочки MySQL.

5. Установите PHP

PHP (Hypertext Preprocessor) — это язык сценариев на стороне сервера, который обрабатывает динамическое содержимое и взаимодействует с MySQL для предоставления веб-страниц, управляемых данными. При использовании Nginx PHP обрабатывается через PHP-FPM (FastCGI Process Manager), который обрабатывает запросы PHP независимо от веб-сервера для повышения производительности.

Шаг 1: Установите PHP-FPM и расширение MySQL

sudo apt install php-fpm php-mysql -y

Вы также можете установить часто используемые расширения PHP для более широкой совместимости приложений:

sudo apt install php-curl php-gd php-mbstring php-xml php-xmlrpc php-zip -y

Шаг 2: Настройте PHP-FPM для безопасности

Откройте файл конфигурации PHP-FPM. Замените 8.1 на вашу установленную версию PHP (проверьте с помощью php -v):

sudo nano /etc/php/8.1/fpm/php.ini

Найдите директиву cgi.fix_pathinfo и установите ее на 0 для предотвращения критической уязвимости безопасности:

cgi.fix_pathinfo=0

> Почему это важно: Если cgi.fix_pathinfo установлен на 1, PHP попытается выполнить ближайший файл, который он сможет найти, если запрошенный файл PHP не существует. Это поведение может быть использовано злоумышленниками для выполнения произвольного кода.

Сохраните и закройте файл (Ctrl+X, затем Y, затем Enter).

Шаг 3: Перезагрузите PHP-FPM

Примените изменения конфигурации, перезагрузив сервис PHP-FPM:

sudo systemctl restart php8.1-fpm

6. Настройте Nginx для обработки PHP

По умолчанию Nginx не знает, как обрабатывать файлы PHP. Вам нужно создать блок сервера (эквивалент виртуального хоста Apache в Nginx), который инструктирует Nginx передавать запросы PHP в PHP-FPM для обработки.

Шаг 1: Создайте каталог веб-корня

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

sudo mkdir -p /var/www/your_domain
sudo chown -R www-data:www-data /var/www/your_domain
sudo chmod -R 755 /var/www/your_domain

Замените your_domain на ваше фактическое доменное имя или описательное имя проекта.

Шаг 2: Создайте новый блок сервера Nginx

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

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

Добавьте следующий блок конфигурации. Внимательно прочитайте встроенные комментарии — они объясняют, что делает каждая директива:

server {
    listen 80;
    listen [::]:80;

    server_name your_domain www.your_domain;  # Replace with your domain or server IP

    root /var/www/your_domain;                # Document root — where your files live
    index index.php index.html index.htm;     # Default files to serve

    # Handle all requests; return 404 if file not found
    location / {
        try_files $uri $uri/ =404;
    }

    # Pass PHP scripts to PHP-FPM for processing
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;  # Adjust PHP version as needed
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # Deny access to hidden files (e.g., .htaccess)
    location ~ /.ht {
        deny all;
    }
}

> Важно: Замените your_domain на ваше фактическое доменное имя и отрегулируйте php8.1-fpm.sock в соответствии с вашей установленной версией PHP.

Шаг 3: Включите блок сервера

Создайте символическую ссылку из sites-available на sites-enabled для активации конфигурации:

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

Чтобы избежать потенциальной проблемы с памятью хеш-бакета, также рекомендуется открыть основную конфигурацию Nginx и убедиться, что директива server_names_hash_bucket_size раскомментирована:

sudo nano /etc/nginx/nginx.conf

Найдите и раскомментируйте:

server_names_hash_bucket_size 64;

Шаг 4: Протестируйте конфигурацию Nginx

Перед перезагрузкой Nginx всегда проверяйте конфигурацию на синтаксические ошибки:

sudo nginx -t

Если вывод показывает:

nginx: configuration file /etc/nginx/nginx.conf test is successful

Вы готовы продолжить.

Шаг 5: Перезагрузите Nginx

Примените все изменения, перезагрузив сервис Nginx:

sudo systemctl restart nginx

7. Создайте и протестируйте файл PHP Info

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

Шаг 1: Создайте файл PHP Info

sudo nano /var/www/your_domain/info.php

Добавьте следующее содержимое:

<?php
phpinfo();
?>

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

Шаг 2: Получите доступ к странице PHP Info

Откройте веб-браузер и перейдите на:

http://your_domain/info.php

Или, если вы еще не настроили домен:

http://your_server_ip/info.php

Вы должны увидеть страницу информации PHP — подробный обзор вашей установки PHP, загруженные модули, значения конфигурации и переменные окружения. Это подтверждает, что все три компонента (Nginx, PHP-FPM и MySQL) работают вместе правильно.

Шаг 3: Удалите файл PHP Info (критический шаг безопасности)

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

sudo rm /var/www/your_domain/info.php

8. Следующие шаги: укрепите и оптим

VPS Администрация
Linux OS
Администрация

Save 15% on All Hosting Services

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Быстрый доступ к информации
Быстрый доступ к информации

Сэкономьте время и получите быстрый ответ на ваш вопрос

Решайте проблемы сами
Решайте проблемы сами

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

Повышение квалификации
Повышение квалификации

Используя базу знаний, вы расширяете свои знания о веб-хостинге и связанных темах

Иллюстрации и диаграммы
Иллюстрации и диаграммы

Многие статьи сопровождаются иллюстрациями и диаграммами, что упрощает понимание сложных процессов и настроек.

Полезные приемы
Полезные приемы

Вы найдете полезные советы и трюки для повышения производительности вашего сайта или веб-приложения.

Актуальность заданных тем
Актуальность заданных тем

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

Не нашли нужную тему? Есть отличное решение

Уважаемые клиенты! Ваш комфорт — наш приоритет!

Кроме того, мы даем вам возможность активно участвовать в создании нашей базы знаний. Если у вас есть темы или вопросы, которые вы хотели бы включить в нашу базу данных, дайте нам знать! Мы готовы написать подробные статьи и руководства на основе ваших потребностей.

Мы стремимся сделать ваш опыт работы с AlexHost максимально удобным и эффективным, и ваш вклад в базу знаний помогает нам достичь этой цели. Связаться с нами ->
info@alexhost.com и дайте нам знать, как мы можем сделать ваше пребывание у нас еще лучше.

Solution Image