Спестете 15% от всички хостинг услуги

Тествай уменията си и получи Отстъпка за всеки хостинг план

Използвайте код: Skills За начало
Заглавия
Linux Администрация Операционни системи

Как да инсталирате 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 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 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-fpm

6. Конфигуриране на 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 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. Следващи стъпки: Укрепете и оптимизирайте вашия 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 доступ и круглосуточную техническую поддержку — все, что вам нужно для запуска быстрого, безопасного и масштабируемого веб-приложения.

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