Как установить 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 Domain Registration)
> Совет профессионала: Для чистой, изолированной среды с гарантированными ресурсами план 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 status4. Установка MySQL
MySQL — это мощная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая служит основой данных для большинства динамических веб-приложений, включая WordPress, Joomla и пользовательские приложения PHP.
Шаг 1: Установка сервера MySQL
sudo apt install mysql-server -yШаг 2: Защита установки MySQL
После установки запустите встроенный скрипт усиления безопасности. Этот скрипт помогает установить надежный пароль root, удалить анонимных пользователей, отключить удаленный вход root и удалить тестовую базу данных:
sudo mysql_secure_installationВам будет предложена серия вопросов. Рекомендуемые ответы для производственного сервера:
| Запрос | Рекомендуемый ответ |
|---|---|
| Установить компонент 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-fpm6. Настройка 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 nginx7. Создание и тестирование файла 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.php8. Следующие шаги: Укрепление и оптимизация вашего LEMP стека
Когда ваш LEMP стек работает, рассмотрите следующие дополнительные шаги для подготовки вашего сервера к production:
Включите HTTPS с бесплатным SSL сертификатом
Защитите ваш сайт с помощью TLS/SSL шифрования, используя Certbot и Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain -d www.your_domainКроме того, изучите AlexHost SSL Certificates для премиум, коммерчески проверенных сертификатов, которые обеспечивают более высокие уровни доверия для бизнес и электронной коммерции приложений.
Оптимизируйте производительность Nginx
Добавьте следующие директивы в вашу конфигурацию Nginx для улучшения производительности:
# Enable Gzip compression
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# Enable browser caching for static assets
location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}Установите выделенного пользователя MySQL
Избегайте использования корневой учетной записи MySQL для ваших приложений. Создайте выделенного пользователя базы данных с ограниченными привилегиями:
CREATE DATABASE your_app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON your_app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;Рассмотрите панель управления для более простого управления
Если вы предпочитаете графический интерфейс для управления вашим LEMP стеком, виртуальными хостами Nginx, базами данных и учетными записями электронной почты, рассмотрите развертывание панели управления. AlexHost предлагает VPS с cPanel и ряд других VPS панелей управления для упрощения администрирования сервера без ущерба для производительности или контроля.
9. Заключение
Вы успешно установили и настроили полный LEMP stack (Linux, Nginx, MySQL, PHP) на вашем сервере Ubuntu. Вот краткое резюме того, что вы достигли:
- ✅ Nginx установлен, запущен и настроен в качестве веб-сервера
- ✅ MySQL установлена и защищена с помощью скрипта усиления безопасности
- ✅ PHP-FPM установлена с конфигурацией, ориентированной на безопасность
- ✅ Nginx server block настроен для маршрутизации PHP-запросов в PHP-FPM
- ✅ Обработка PHP проверена через страницу тестирования
phpinfo()
Этот stack обеспечивает готовую к использованию основу для размещения практически любого приложения на PHP — от WordPress и Laravel до пользовательских платформ. Сочетание архитектуры, управляемой событиями Nginx, и управления процессами PHP-FPM делает его особенно хорошо подходящим для рабочих нагрузок с высокой параллелизмом.
Для лучшей производительности и надежности размещайте ваш LEMP stack в специально созданной среде Linux. Планы VPS Hosting от AlexHost предлагают хранилище на основе SSD, гарантированную RAM, полный доступ root и круглосуточную техническую поддержку — все, что вам нужно для запуска быстрого, безопасного и масштабируемого веб-приложения.
Помните, что необходимо регулярно обновлять все компоненты, отслеживать логи сервера и внедрять брандмауэр и систему обнаружения вторжений как часть вашей постоянной политики безопасности.
на всех хостинговых услугах