cp.lv — VPS, выделенные и облачные серверы

cp.lv (LANGMARKET LLP) — хостинг-провайдер: VPS, выделенные и облачные серверы на NVMe с выбором ОС, полным root-доступом и поддержкой 24/7. Тест-период до оплаты: выделенные серверы — 5 дней, VPS и облако — 5 часов.

Contact Info
LANGMARKET LLP
Rīga, Latvija

+371 00 000 000

Follow Us

Личный кабинет

Язык

Установка стека LEMP (Nginx + PHP-FPM + MySQL) на Ubuntu

Установка стека LEMP (Nginx + PHP-FPM + MySQL) на Ubuntu

Запустить на сервере одной командой (сначала проверьте содержимое скрипта ниже):

curl -sSL https://cp.lv/scripts/ustanovit-lemp-ubuntu.sh | sudo bash

…или через wget:

wget -qO- https://cp.lv/scripts/ustanovit-lemp-ubuntu.sh | sudo bash

Содержимое скрипта ustanovit-lemp-ubuntu.sh:

#!/usr/bin/env bash
set -e
export DEBIAN_FRONTEND=noninteractive

# 1. Обновление системы
sudo apt-get update
sudo apt-get upgrade -y

# 2. Nginx, MySQL, PHP-FPM и расширения для CMS
sudo apt-get install -y nginx mysql-server php-fpm php-mysql \
  php-cli php-curl php-gd php-mbstring php-xml php-zip
sudo systemctl enable --now nginx mysql

# 3. Корень сайта и тестовый index.php
sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com
echo "<?php phpinfo();" | sudo tee /var/www/example.com/index.php > /dev/null

# 4. server block (кавычки 'EOF' — переменные Nginx не трогаем)
sudo tee /etc/nginx/sites-available/example.com > /dev/null << 'EOF'
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

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

    location ~ /\.ht {
        deny all;
    }
}
EOF

# 5. Активация сайта
sudo ln -sf /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
sudo nginx -t && sudo systemctl reload nginx
echo "LEMP готов: откройте http://example.com"

LEMP — это связка Linux, Nginx, MySQL и PHP: типовое окружение для сайтов на PHP (WordPress, Laravel, самописные проекты). Ниже готовая последовательность команд для Ubuntu 22.04/24.04. Весь процесс занимает 10–15 минут.

Что нужно заранее

  • VPS с Ubuntu 22.04 или 24.04 и доступом по SSH.
  • Пользователь с правами sudo (не работайте под root постоянно).
  • Домен, указывающий A-записью на IP сервера (для боевого сайта).

Первым делом обновите систему:

sudo apt update && sudo apt upgrade -y

Шаг 1. Установка Nginx

sudo apt install nginx -y
sudo systemctl enable --now nginx

Проверьте статус и откройте порты в брандмауэре:

sudo systemctl status nginx
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable

Откройте IP сервера в браузере — должна появиться страница «Welcome to nginx».

Шаг 2. Установка MySQL

sudo apt install mysql-server -y
sudo systemctl enable --now mysql

Запустите интерактивную защиту сервера БД:

sudo mysql_secure_installation

Здесь задайте пароль root, удалите анонимных пользователей, запретите удалённый вход root и удалите тестовую базу. Создайте базу и отдельного пользователя под сайт:

sudo mysql
CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'СложныйПароль123!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Шаг 3. Установка PHP-FPM

Nginx не умеет обрабатывать PHP сам — он передаёт запросы процессу PHP-FPM через сокет.

sudo apt install php-fpm php-mysql -y

Проверьте версию и имя сервиса (в Ubuntu 24.04 это php8.3-fpm):

php -v
systemctl status php8.3-fpm

Полезный набор расширений для CMS:

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

Шаг 4. Настройка server block

Создайте корень сайта и тестовый файл:

sudo mkdir -p /var/www/example.com
sudo chown -R www-data:www-data /var/www/example.com
echo "<?php phpinfo();" | sudo tee /var/www/example.com/index.php

Откройте конфиг /etc/nginx/sites-available/example.com в редакторе:

sudo nano /etc/nginx/sites-available/example.com

Содержимое файла:

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

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

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

    location ~ /\.ht {
        deny all;
    }
}

Либо создайте конфиг целиком одной командой — скопируйте и вставьте в консоль (кавычки 'EOF' важны, чтобы переменные Nginx $uri остались как есть):

sudo tee /etc/nginx/sites-available/example.com > /dev/null << 'EOF'
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

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

    location ~ /\.ht {
        deny all;
    }
}
EOF

Активируйте сайт и перезагрузите Nginx:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Шаг 5. Проверка PHP

Откройте http://example.com — вы увидите страницу phpinfo() с версией PHP и подключёнными модулями. Убедитесь, что в списке есть mysqli или pdo_mysql. После проверки обязательно удалите тестовый файл — он раскрывает конфигурацию сервера:

sudo rm /var/www/example.com/index.php

Быстрая проверка компонентов

Компонент Команда проверки Ожидаемо
Nginx sudo nginx -t syntax is ok
PHP-FPM systemctl is-active php8.3-fpm active
MySQL mysqladmin -u root -p status Uptime: …
Сокет PHP ls /run/php/ php8.3-fpm.sock

Частые вопросы

Почему сайт отдаёт код PHP как текст? Nginx не передаёт запрос в PHP-FPM. Проверьте блок location ~ \.php$ и правильность пути к сокету в fastcgi_pass.

Ошибка 502 Bad Gateway — что делать? Обычно PHP-FPM не запущен или указан неверный сокет. Выполните systemctl status php8.3-fpm и сверьте имя .sock-файла с конфигом.

Как узнать версию PHP на моей Ubuntu? php -v. В Ubuntu 22.04 по умолчанию PHP 8.1, в 24.04 — PHP 8.3. Имя сервиса и сокета зависит от версии.

Можно ли поставить MariaDB вместо MySQL? Да, MariaDB совместима и ставится через apt install mariadb-server. Клиентские команды и SQL идентичны.

LEMP хорошо чувствует себя даже на небольшом сервере, но под боевой трафик берите NVMe-диск и достаточный объём RAM. Готовые тарифы — на странице аренда VPS, а под нагруженные сайты подойдёт VPS для WordPress.

Инга Витола

Инга Витола

Руководитель поддержки. Возглавляет команду поддержки и следит, чтобы клиенты получали живые ответы по делу в любое время.