Установка LEMP · 9 min read · Oct 12, 2025
Как установить Nginx с PHP и MySQL (LEMP стек) на Ubuntu 22.04

LEMP стек программного обеспечения — это группа программ с открытым исходным кодом, которая позволяет серверу размещать динамические веб-сайты и приложения, написанные на PHP. Это акроним для L inux, Nginx (произносится как E ngine-X), M ySQL и P HP.
Этот гид покажет вам, как установить LEMP стек на сервере Ubuntu 22.04. Вы также научитесь устанавливать такие приложения, как phpMyAdmin.
Предварительные требования
- Сервер с установленной Ubuntu 22.04.
- Пользователь, не являющийся root, с правами sudo.
- Простой брандмауэр (UFW) включен и работает.
- Все обновлено.
$ sudo apt update && sudo apt upgrade
Шаг 1 - Настройка брандмауэра
Первый шаг перед установкой любых пакетов — настроить брандмауэр для разрешения HTTP и HTTPS соединений.
Проверьте статус брандмауэра.
$ sudo ufw status
Вы должны увидеть что-то вроде следующего.
Статус: активен
Кому Действие Откуда
-- ------ ----
OpenSSH РАЗРЕШИТЬ Везде
OpenSSH (v6) РАЗРЕШИТЬ Везде (v6)
Разрешите порты HTTP и HTTPS.
$ sudo ufw allow http
$ sudo ufw allow https
Проверьте статус снова, чтобы подтвердить.
$ sudo ufw status
Статус: активен
Кому Действие Откуда
-- ------ ----
OpenSSH РАЗРЕШИТЬ Везде
80/tcp РАЗРЕШИТЬ Везде
443/tcp РАЗРЕШИТЬ Везде
OpenSSH (v6) РАЗРЕШИТЬ Везде (v6)
80/tcp (v6) РАЗРЕШИТЬ Везде (v6)
443/tcp (v6) РАЗРЕШИТЬ Везде (v6)
Шаг 2 - Установка PHP
Ubuntu 22.04 поставляется с PHP 8.1 по умолчанию. Вы можете установить его, выполнив следующую команду.
$ sudo apt install php-fpm php-cli php-mysqlnd php-mbstring php-xml php-gd
Мы установили расширения MySQL, CLI, GD, Mbstring и XML для PHP. Вы можете установить любые дополнительные расширения в зависимости от ваших требований.
Чтобы всегда оставаться на последней версии PHP или если вы хотите установить несколько версий PHP, добавьте репозиторий PHP от Ondrej.
Добавьте репозиторий PHP от Ondrej.
$ sudo add-apt-repository ppa:ondrej/php
Теперь вы можете установить любую версию PHP.
$ sudo apt install php8.0-fpm php8.0-cli
Проверьте версию установленного PHP.
$ php --version
PHP 8.1.2 (cli) (собран: 13 июня 2022 13:52:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
с Zend OPcache v8.1.2, Copyright (c), от Zend Technologies
Шаг 3 - Установка MySQL
Ubuntu 22.04 поставляется с последней версией MySQL. Вы можете установить его одной командой.
$ sudo apt install mysql-server
Проверьте версию MySQL.
$ mysql --version
mysql Вер 8.0.29-0ubuntu0.22.04.2 для Linux на x86_64 ((Ubuntu))
Этот шаг необходим для версий MySQL 8.0.28 и выше. Войдите в оболочку MySQL.
$ sudo mysql
Выполните следующую команду, чтобы установить пароль для вашего пользователя root. Убедитесь, что он содержит смесь цифр, заглавных и строчных букв, а также специальных символов.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';
Выйдите из оболочки.
mysql> exit
Запустите скрипт безопасной установки MySQL.
$ sudo mysql_secure_installation
Вам будет предложено установить компонент проверки паролей. Он проверяет надежность паролей, используемых в MySQL. Нажмите Y, чтобы установить его.
Далее вам будет предложено установить уровень политики проверки паролей. Выберите 2, так как это самый строгий уровень.
Далее введите ваш пароль root. Нажмите N, чтобы отказаться от его изменения.
Нажмите Y, чтобы удалить анонимных пользователей, запретить удаленные входы root, удалить тестовую базу данных и перезагрузить таблицы привилегий.
Шаг 4 - Настройка MySQL
Войдите в оболочку MySQL. Введите ваш пароль root, когда будет предложено.
$ sudo mysql -u root -p
Создайте тестовую базу данных.
mysql> CREATE DATABASE exampledb;
Создайте учетную запись SQL пользователя.
mysql> CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'YourPassword2!';
Предоставьте все привилегии на базу данных пользователю.
mysql> GRANT ALL PRIVILEGES ON exampledb.* TO 'exampleuser'@'localhost';
Обновите привилегии пользователей.
mysql> FLUSH PRIVILEGES;
Выйдите из оболочки.
mysql> exit
Давайте снова войдем в оболочку MySQL, используя вновь созданного пользователя.
$ sudo mysql -u exampleuser -p
Создайте тестовую таблицу.
mysql> CREATE TABLE exampledb.name_list ( sno INT AUTO_INCREMENT, content VARCHAR(255), PRIMARY KEY(sno) );
Вставьте тестовые данные.
mysql> INSERT INTO exampledb.name_list (content) VALUES ("Navjot");
Повторите вышеуказанную команду несколько раз, чтобы добавить больше записей. Выполните следующую команду, чтобы проверить содержимое таблицы.
mysql> SELECT * FROM exampledb.name_list;
Вы получите следующий вывод.
+-----+---------+
| sno | content |
+-----+---------+
| 1 | Navjot |
| 2 | Adam |
| 3 | Josh |
| 4 | Peter |
+-----+---------+
4 строки в наборе (0.00 сек)
Выйдите из оболочки MySQL.
mysql> exit
Шаг 5 - Установка Nginx
Ubuntu 22.04 поставляется со старой версией Nginx. Чтобы установить последнюю версию, вам нужно загрузить официальный репозиторий Nginx.
Импортируйте ключ подписи Nginx.
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Добавьте репозиторий для стабильной версии Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
Обновите системные репозитории.
$ sudo apt update
Установите Nginx.
$ sudo apt install nginx
Проверьте установку.
$ nginx -v
nginx version: nginx/1.22.0
Шаг 6 - Настройка PHP-FPM
Откройте php.ini для редактирования.
$ sudo nano /etc/php/8.1/fpm/php.ini
Чтобы установить размеры загружаемых файлов, измените значения переменных upload_max_filesize и post_max_size.
upload_max_filesize = 50M
...
post_max_size = 50M
Настройте лимит памяти PHP в зависимости от ресурсов вашего сервера и требований.
memory_limit = 256M
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Откройте файл /etc/php/8.0/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf
Нам нужно установить Unix пользователя/группу процессов PHP на nginx. Найдите строки user=www-data и group=www-data в файле и измените их на nginx.
...
; Unix user/group of processes
; Примечание: Пользователь обязателен. Если группа не установлена, будет использована группа по умолчанию.
; будет использована.
user = nginx
group = nginx
...
Также найдите строки listen.owner=www-data и listen.group=www-data в файле и измените их на nginx.
listen.owner = nginx
listen.group = nginx
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Перезапустите процесс PHP-fpm.
$ sudo systemctl restart php8.1-fpm
Шаг 7 - Установка phpMyAdmin
Скачайте архивный файл phpMyAdmin для английского языка.
$ wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-english.tar.gz
Создайте публичный каталог для сайта.
$ sudo mkdir /var/www/html/example.com -p
Извлеките архив в публичный каталог.
$ sudo tar -xzvf phpMyAdmin-5.2.0-english.tar.gz -C /var/www/example.com
Перейдите в публичный каталог.
$ cd /var/www/html/example.com
Переименуйте извлеченный каталог во что-то неясное для повышения безопасности.
$ sudo mv phpMyAdmin-5.2.0-english sm175
Шаг 8 - Настройка phpMyAdmin
Скопируйте файл конфигурации образца.
$ sudo cp sm175/config.sample.inc.php sm175/config.inc.php
Откройте файл конфигурации для редактирования.
$ sudo nano sm175/config.inc.php
Найдите строку $cfg['blowfish_secret'] = ''; и введите случайную строку из 32 символов для аутентификации на основе cookie.
Вы можете использовать онлайн-генератор blowfish от phpSolved или сделать это через командную строку.
Скопируйте значение и вставьте его, как показано.
$cfg['blowfish_secret'] = 'Tc/HfLPBOAPxJ-rhQP}HJoZEK69c3j:m';
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Измените владельца сайта и phpMyAdmin на сервер Nginx.
$ sudo chown -R nginx:nginx /var/www/html/example.com
Удалите каталог настройки phpMyAdmin.
$ sudo rm -rf /var/www/html/example.com/sm175/setup
Шаг 9 - Настройка Opcache
Opcache — это система кэширования PHP. Она работает, сохраняя предварительно скомпилированный байт-код скрипта в памяти, так что каждый раз, когда пользователь посещает страницу, она загружается быстрее. Opcache установлен по умолчанию. Чтобы проверить, проверьте версию PHP.
$ php --version
PHP 8.1.2 (cli) (собран: 13 июня 2022 13:52:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
с Zend OPcache v8.1.2, Copyright (c), от Zend Technologies
Это говорит нам о том, что Opcache установлен и доступен. В случае, если он не отображается здесь, вы можете установить его вручную, выполнив следующую команду.
$ sudo apt install php-opcache
Чтобы изменить настройки Opcache, откройте файл /etc/php/8.1/fpm/conf.d/10-opcache.ini для редактирования.
$ sudo nano /etc/php/8.1/fpm/conf.d/10-opcache.ini
Следующие настройки должны помочь вам начать использовать Opcache и обычно рекомендуются для хорошей производительности. Вы можете включить конфигурацию, раскомментировав ее, удалив точку с запятой перед ней.
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Шаг 10 - Установка Certbot для SSL
Нам нужно установить Certbot, чтобы сгенерировать бесплатные SSL сертификаты, предлагаемые Let’s Encrypt.
Вы можете либо установить Certbot, используя репозиторий Ubuntu, либо взять последнюю версию, используя инструмент Snapd. Мы будем использовать версию Snapd.
Ubuntu 22.04 поставляется с установленным Snapd по умолчанию. Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.
$ sudo snap install core
$ sudo snap refresh core
Установите Certbot.
$ sudo snap install --classic certbot
Используйте следующую команду, чтобы убедиться, что команда Certbot может быть выполнена, создав символическую ссылку на каталог /usr/bin.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Шаг 11 - Тестирование демонстрационного сайта
Создание сайта
Создайте и откройте тестовую страницу для редактирования.
$ sudo nano /var/www/html/example.com/index.php
Вставьте следующий код в него.
Список участников";
foreach($db->query("SELECT content FROM $table") as $row) {
echo "- " . $row['content'] . "
";
}
echo "
";
} catch (PDOException $e) {
print "Ошибка!: " . $e->getMessage() . "
";
die();
}
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Создание SSL сертификата
Выполните следующую команду, чтобы сгенерировать SSL сертификат.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.com
Вышеуказанная команда загрузит сертификат в каталог /etc/letsencrypt/live/example.com на вашем сервере.
Сгенерируйте сертификат группы Диффи-Хеллмана.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096
Откройте файл /etc/letsencrypt/renewal/example.com.conf для редактирования.
$ sudo nano /etc/letsencrypt/renewal/example.com.conf
Вставьте следующий код внизу.
pre_hook = systemctl stop nginx
post_hook = systemctl start nginx
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Мы сгенерировали SSL сертификат, используя автономный вариант Certbot. Он запускает свой веб-сервер для создания сертификата, что означает, что Nginx должен быть выключен во время обновления. Команды pre_hook и post_hook выполняются до и после обновления, чтобы автоматически остановить и перезапустить сервер Nginx, тем самым не требуя ручного вмешательства.
Чтобы проверить, работает ли обновление SSL, выполните пробный запуск процесса.
$ sudo certbot renew --dry-run
Если вы не видите ошибок, значит, все готово. Ваш сертификат будет автоматически обновляться.
Настройка Nginx
Создайте и откройте файл /etc/nginx/conf.d/example.conf для редактирования.
$ sudo nano /etc/nginx/conf.d/example.conf
Вставьте следующий код в него.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
root /var/www/html/example.com;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Передать PHP скрипты FastCGI серверу
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
# принудить HTTPS
server {
listen 80;
listen [::]:80;
server_name example.com;
return 301 https://$host$request_uri;
}
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Откройте файл /etc/nginx/nginx.conf для редактирования.
$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
Проверьте вашу конфигурацию Nginx.
$ sudo nginx -t
Если вы не видите ошибок, значит, вы готовы к работе. Запустите сервер Nginx.
$ sudo systemctl start nginx
Загрузите ваш веб-сайт, посетив https://example.com в вашем браузере, и вы увидите следующую страницу.

Вы можете получить доступ к вашей установке phpMyAdmin, посетив URL https://example.com/sm175 в вашем браузере. Вы можете ввести своего пользователя root или пользователя, созданного ранее, чтобы войти.
Заключение
Это завершает наш учебник, в котором вы узнали, как настроить LEMP стек на сервере Ubuntu 22.04 и создать демонстрационный сайт. Если у вас есть какие-либо вопросы, оставьте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.