Как да инсталирате Linux, Nginx, MySQL, PHP (LEMP) Stack на Ubuntu: Пълно ръководство
LEMP stack — съкращение за Linux, Nginx, MySQL и PHP — е една от най-широко използваните конфигурации на уеб сървъри за захранване на динамични уебсайтове и високопроизводителни уеб приложения. Чрез комбиниране на каменната стабилност на Linux, блясъчната скорост на Nginx, мощните възможности за управление на данни на MySQL и универсалността на PHP, LEMP stack доставя мощна, мащабируема и енергийно ефективна хостинг среда.
Независимо дали развивате личен блог, бизнес уебсайт или сложно корпоративно приложение, правилно конфигуриран LEMP stack ви дава по-добра мащабируемост, по-бързи времена за зареждане на страниците и ефективно управление на паметта — особено при условия на висок трафик.
Ако имате нужда от надежна основа за стартиране на този stack, VPS Hosting на AlexHost предоставя високопроизводителни виртуални сървъри базирани на Linux с пълен root достъп, което ви дава пълен контрол над всеки компонент на вашата LEMP среда. Комбинирайте това с SSL сертификат за защита на вашето приложение от първия ден.
В този всеобхватен наръчник ще ви преведем през всяка стъпка на инсталиране и конфигуриране на пълния LEMP stack на Ubuntu сървър — от начална подготовка на системата до тестване на вашата работеща PHP среда.
1. Предварителни условия
Преди да започнете, убедете се, че имате следното:
- Сервър, работещ с Ubuntu 18.04, 20.04 или 22.04 LTS
- Потребителски акаунт с sudo привилегии
- SSH достъп или преки терминален достъп до вашия сервър
- Регистрирано доменно име (опционално, но препоръчително за production разгръщане — можете да регистрирате едно чрез AlexHost Domain Registration)
> Pro Tip: За чист, изолиран環境 с гарантирани ресурси, план 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 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 shell.
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 файлове. Трябва да създадете server block (еквивалентът на Nginx на Apache virtual host), който да инструктира 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 Server Block
Създайте нов 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: Активиране на Server Block
Създайте символна връзка от sites-available към sites-enabled за активиране на конфигурацията:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/За да избегнете потенциален проблем с паметта на hash bucket, е добра практика да отворите основния 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 Stack
С вашия LEMP stack в действие, помислете за следните допълнителни стъпки, за да подготвите вашия сървър за производство:
Активирайте 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 потребител
Избягвайте използването на root 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 stack, 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 доступ и круглосуточную техническую поддержку — все, что вам нужно для запуска быстрого, безопасного и масштабируемого веб-приложения.
Помните о необходимости регулярного обновления всех компонентов, мониторинга логов вашего сервера и внедрения брандмауэра и системы обнаружения вторжений как части вашей постоянной политики безопасности.
от всички хостинг услуги