Если вы хотите создать сайт или запустить веб-приложение на сервере Ubuntu, одним из лучших решений является установка стека LAMP.
LAMP — это набор программного обеспечения: Linux, Apache, MySQL и PHP, которые вместе обеспечивают полноценную платформу для разработки и размещения веб-сайтов.
- Шаг 1. Обновляем систему
- Шаг 2. Устанавливаем Apache
- Шаг 3. Устанавливаем MySQL
- Шаг 4. Устанавливаем PHP и PHP-FPM
- Шаг 5. Настраиваем Apache для работы с PHP-FPM
В этой статье я подробно расскажу, как установить LAMP на Ubuntu шаг за шагом. Следуйте этим инструкциям, даже если вы новичок — всё объяснено простым языком.
Что такое LAMP и зачем он нужен?
LAMP — это акроним, который обозначает:
- Linux — операционная система, на которой работает сервер.
- Apache — веб-сервер, который обслуживает ваши веб-страницы.
- MySQL — система управления базами данных, хранит информацию сайта.
- PHP — язык программирования, на котором пишутся динамические веб-страницы.
Установка LAMP позволяет вам сделать собственный веб-сервер, чтобы размещать сайты, блоги или веб-приложения.
Как подготовиться к установке LAMP
Перед началом убедитесь, что:
– У вас есть доступ к серверу на Ubuntu (например, через SSH или веб консоль).
– Вы вошли с учетной записью с правами администратора (обычно через команду sudo).
Шаг 1. Обновляем систему
Первым делом, обновим список пакетов и систему для предотвращения ошибок при установке.
waky@ubuntu:~$ sudo apt upgrade -y
Эта команда проверит наличие обновлений и при наличии таковых скачает и установит.
Шаг 2. Устанавливаем Apache
Apache — это популярный и мощный веб-сервер.
Для установки используйте команду apt install:
waky@ubuntu:~$ sudo apt install apache2 -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
apache2-bin apache2-data apache2-utils libapr1t64 libaprutil1-dbd-sqlite3 libaprutil1-ldap libaprutil1t64 libjansson4 liblua5.4-0 ssl-cert
Suggested packages:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom www-browser ufw
The following NEW packages will be installed:
apache2 apache2-bin apache2-data apache2-utils libapr1t64 libaprutil1-dbd-sqlite3 libaprutil1-ldap libaprutil1t64 libjansson4 liblua5.4-0 ssl-cert
0 upgraded, 11 newly installed, 0 to remove and 137 not upgraded.
Need to get 1682 kB/2119 kB of archives.
...
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /usr/lib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service → /usr/lib/systemd/system/apache-htcacheclean.service.
waky@ubuntu:~$
После завершения установки проверьте, работает ли сервер, открыв в браузере IP-адрес вашего сервера. Вы должны увидеть дефолтную страницу Apache с надписью «It works!».

Также можно проверить статус сервиса с помощью systemctl:
waky@ubuntu:~$ sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-11-23 02:44:37 UTC; 3min 56s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 1759 (apache2)
Tasks: 55 (limit: 2268)
Memory: 5.4M (peak: 5.6M)
CPU: 134ms
CGroup: /system.slice/apache2.service
├─1759 /usr/sbin/apache2 -k start
├─1762 /usr/sbin/apache2 -k start
└─1763 /usr/sbin/apache2 -k start
Nov 23 02:44:37 localubuntu systemd[1]: Starting apache2.service - The Apache HTTP Server...
Nov 23 02:44:37 localubuntu apachectl[1758]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 192.168.0.112. Set the 'ServerName' directive globally to suppress this message
Nov 23 02:44:37 localubuntu systemd[1]: Started apache2.service - The Apache HTTP Server.
waky@ubuntu:~$
Если сервер запущен, статус будет «active (running)».
Шаг 3. Устанавливаем MySQL
MySQL – система управления базами данных, ее мы используем для того чтобы создавать базы и таблицы, в которых хранятся данные сайта.
Используя пакетный менеджер устанавливаем mysql-server:
waky@ubuntu:~$ sudo apt install mysql-server -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-core-2.1-7t64 libevent-pthreads-2.1-7t64 libfcgi-bin libfcgi-perl libfcgi0t64 libhtml-parser-perl
libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libprotobuf-lite32t64 libtimedate-perl liburi-perl mecab-ipadic
mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server-8.0 mysql-server-core-8.0 psmisc
Suggested packages:
libdata-dump-perl libipc-sharedcache-perl libio-compress-brotli-perl libbusiness-isbn-perl libregexp-ipv6-perl libwww-perl mailx tinyca
The following NEW packages will be installed:
libcgi-fast-perl libcgi-pm-perl libclone-perl libencode-locale-perl libevent-core-2.1-7t64 libevent-pthreads-2.1-7t64 libfcgi-bin libfcgi-perl libfcgi0t64 libhtml-parser-perl
libhtml-tagset-perl libhtml-template-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libmecab2 libprotobuf-lite32t64 libtimedate-perl liburi-perl mecab-ipadic
mecab-ipadic-utf8 mecab-utils mysql-client-8.0 mysql-client-core-8.0 mysql-common mysql-server mysql-server-8.0 mysql-server-core-8.0 psmisc
0 upgraded, 30 newly installed, 0 to remove and 137 not upgraded.
...
done!
waky@ubuntu:~$
После установки рекомендуется провести базовую настройку через mysql_secure_installation:
waky@ubuntu:~$ sudo mysql_secure_installation
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: n
Skipping password set for root as authentication with auth_socket is used by default.
If you would like to use password authentication instead, this can be done with the "ALTER_USER" command.
See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
waky@ubuntu:~$
Стандартный порядок ответов: n y y y y. Эта команда поможет ограничить локальным, доступ пользователя root, отключить анонимных пользователей и убрать тестовую базу данных — тем самым повысив безопасность.
Чтобы попасть в консоль MYSQL под пользователем root и без использования пароля выполним:
waky@ubuntu:~$ sudo mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 8.0.44-0ubuntu0.24.04.1 (Ubuntu)
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Давайте проверим, что СУБД работает, выведем список баз данных и выйдем из консоли следующими командами:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye
waky@ubuntu:~$
Шаг 4. Устанавливаем PHP и PHP-FPM
PHP — язык программирования для динамических страниц. PHP-FPM (FastCGI Process Manager) — это современный и эффективный способ обработки PHP-скриптов, который повышает производительность вашего сайта.
Для установки соответствующих пакетов выполним следующую команду:
waky@ubuntu:~$ sudo apt install php-fpm php libapache2-mod-php php-mysql -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libapache2-mod-php8.3 php-common php8.3 php8.3-cli php8.3-common php8.3-fpm php8.3-mysql php8.3-opcache php8.3-readline
Suggested packages:
php-pear
The following NEW packages will be installed:
libapache2-mod-php libapache2-mod-php8.3 php php-common php-fpm php-mysql php8.3 php8.3-cli php8.3-common php8.3-fpm php8.3-mysql php8.3-opcache php8.3-readline
0 upgraded, 13 newly installed, 0 to remove and 137 not upgraded.
...
NOTICE: Not enabling PHP 8.3 FPM by default.
NOTICE: To enable PHP 8.3 FPM in Apache2 do:
NOTICE: a2enmod proxy_fcgi setenvif
NOTICE: a2enconf php8.3-fpm
NOTICE: You are seeing this message because you have apache2 package installed.
waky@ubuntu:~$
Эта команда сделает следующее:
- Установит PHP и необходимые модули.
- Установит PHP-FPM, чтобы он обрабатывал PHP-скрипты.
- Установит модуль libapache2-mod-php, чтобы Apache мог работать с PHP напрямую.
Шаг 5. Настраиваем Apache для работы с PHP-FPM
По умолчанию, Apache использует встроенный модуль PHP. Чтобы использовать PHP-FPM, нужно отключить его и настроить сервер на работу с этим менеджером.
Отключите встроенный модуль PHP:
waky@ubuntu:~$ sudo a2dismod php*
Module php8.3 disabled.
To activate the new configuration, you need to run:
systemctl restart apache2
waky@ubuntu:~$
Включите модули proxy_fcgi и setenvif:
waky@ubuntu:~$ sudo a2enmod proxy_fcgi setenvif
Considering dependency proxy for proxy_fcgi:
Enabling module proxy.
Enabling module proxy_fcgi.
Module setenvif already enabled
To activate the new configuration, you need to run:
systemctl restart apache2
waky@ubuntu:~$
Включите конфигурацию PHP-FPM для вашей версии PHP
Проверьте, какая версия PHP у вас установлена:
waky@ubuntu:~$ php -v
PHP 8.3.6 (cli) (built: Jul 14 2025 18:30:55) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
waky@ubuntu:~$
В нашем случае это PHP 8.3. Тогда соответственно указываем php8.3-fpm:
waky@ubuntu:~$ sudo a2enconf php8.3-fpm
Enabling conf php8.3-fpm.
To activate the new configuration, you need to run:
systemctl reload apache2
waky@ubuntu:~$
Перезапустите Apache
waky@ubuntu:~$ sudo systemctl restart apache2
waky@ubuntu:~$
Чтобы проверить, что PHP-FPM работает, проверим его статус:
waky@ubuntu:~$ systemctl status php8.3-fpm
● php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php8.3-fpm.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-11-23 03:19:12 UTC; 30min ago
Docs: man:php-fpm8.3(8)
Process: 12277 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.3/fpm/pool.d/www.conf 83 (code=exited, status=0/SUCCESS)
Main PID: 12274 (php-fpm8.3)
Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 3 (limit: 2268)
Memory: 7.7M (peak: 9.2M)
CPU: 341ms
CGroup: /system.slice/php8.3-fpm.service
├─12274 "php-fpm: master process (/etc/php/8.3/fpm/php-fpm.conf)"
├─12275 "php-fpm: pool www"
└─12276 "php-fpm: pool www"
Nov 23 03:19:12 localubuntu systemd[1]: Starting php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager...
Nov 23 03:19:12 localubuntu systemd[1]: Started php8.3-fpm.service - The PHP 8.3 FastCGI Process Manager.
waky@ubuntu:~$
Если статус показывает «active (running)», значит всё настроено правильно.
Финальная проверка
Чтобы проверить работу PHP создайте файл info.php в директории /var/www/html/. По умолчанию Apache использует эту директорию как корень сайта.
Вставьте в файл info.php следующий код:
<?php
phpinfo();
?>
Сохраните и откройте в браузере: http://ip_сервера/info.php. Если вы видите страницу с информацией о PHP, установка прошла успешно.

Заключение
Теперь у вас есть полноценный сервер с LAMP: Linux, Apache, MySQL и PHP с PHP-FPM. Использованные компоненты имеют широкое применение и огромную базу знаний.
Такой сервер подходит для размещения сайтов, веб-приложений и тестовых сред.