В этом занятии вы узнаете, как настроить LAMP-стек на Ubuntu 22.04 LTS. Программный стек представляет собой коллекцию программных инструментов, объединённых для выполнения определённых задач. LAMP означает Linux, Apache, MariaDB/MySQL и PHP — все эти компоненты являются бесплатными и имеют открытый исходный код.
Это наиболее популярный набор технологий, который обеспечивает функционирование динамических веб-сайтов и приложений.
- Linux представляет собой операционную систему.
- Apache является сервером для работы с веб-контентом.
- MariaDB/MySQL представляет собой систему управления базами данных.
- PHP — это язык сценариев для серверной стороны, который используется для разработки динамических веб-страниц.
Содержание статьи
Требования
Для того чтобы пройти этот урок, вам необходимо иметь установленную операционную систему Ubuntu 22.04 на вашем локальном компьютере или удаленном сервере.
Если вы находитесь в поиске виртуального частного сервера (VPS), обратите внимание на Kamatera VPS, который предоставляет:
- Бесплатный доступ на 30 дней.
- Цена начинается от 4 долларов в месяц за 1 ГБ оперативной памяти.
- VPS с высокой производительностью на платформе KVM.
- Девять дата-центров расположены по всему миру, включая такие страны, как США, Канада, Великобритания, Германия, Нидерланды, Гонконг и Израиль.
Следуйте инструкциям, представленным ниже, чтобы настроить VPS сервер на Linux с помощью Kamatera.
- Как установить VPS-сервер на Linux с помощью Kamatera
После старта VPS на базе Ubuntu 22.04 выполните следующие шаги.
Если вы планируете установить LAMP-стек и зарегистрировать доменное имя, советую рассмотреть покупку доменов у NameCheap. Они предлагают конкурентоспособные цены и бесплатную защиту конфиденциальности WHOIS на весь срок регистрации домена.
Обновление программных пакетов.
Перед тем как установить LAMP-стек, полезно обновить репозитории и программные пакеты. Для этого выполните следующие команды в вашей операционной системе Ubuntu 22.04.
sudo apt update sudo apt upgrade
Инсталляция веб-сервера Apache
Для установки веб-сервера Apache выполните следующую команду. Пакет apache2-utils добавит несколько полезных инструментов, включая утилиту для тестирования производительности сервера Apache (ab).
sudo apt install - y apache2 apache2-utils
После установки Apache должен автоматически стартовать. Для проверки его состояния воспользуйтесь командой systemctl.
systemctl status apache2
●apache2.service - Веб-сервер Apache HTTP Загружен: (/lib/systemd/system/apache2.service; активирован; настройка по умолчанию: активирована) Статус: активен:деятельный (функционирует) с субботы, 11 апреля 2022 года, 11:31:31 CST; 2 сек назад Документация: https://httpd. apache. org/docs/2.4/ Процесс: 53003 ExecStart=/usr/sbin/apachectl start (код=вышел, статус=0/УСПЕХ) Главный PID: 53011 (apache2) Задачи: 55 (лимит: 19072) Память: 6.4M CGroup: /system. slice/apache2.service ├─53011 /usr/sbin/apache2 - k start ├─53012 /usr/sbin/apache2 - k start └─53013 /usr/sbin/apache2 - k start
Совет: Если указанная команда не завершается мгновенно, нажмите клавишу Q, чтобы вернуть управление терминалом.
Если Apache не функционирует, запустите его с помощью команды systemctl.
sudo systemctl start apache2
Рекомендуется настроить автоматический старт Apache при загрузке операционной системы.
sudo systemctl enable apache2
Убедитесь, какая версия Apache у вас установлена:
apache2 - v
Версия сервера: Apache/2.4.52 (Ubuntu) Сборка сервера: 25 марта 2022 года, 00:35:40
Введите публичный IP-адрес вашего сервера на Ubuntu 22.04 в строку браузера. Если всё настроено верно, вы увидите страницу «It works!», что свидетельствует о корректной работе веб-сервера Apache. При установке LAMP на локальный компьютер с Ubuntu 22.04 используйте 127.0.0.1 или localhost в адресной строке.

Если соединение не удалось установить или было отклонено, это может быть связано с тем, что брандмауэр препятствует входящим запросам на TCP порт 80. Если у вас настроен брандмауэр iptables, выполните следующую команду для открытия TCP порта 80.
sudo iptables - I INPUT - p tcp --dport 80 - j ACCEPT
Если вы применяете брандмауэр UFW, введите эту команду для разблокировки TCP порта 80.
sudo ufw allow http
Теперь необходимо установить www-data (пользователь Apache) в качестве владельца корневого каталога документов, который также называется веб-корнем. По умолчанию этот каталог принадлежит пользователю root.
sudo chown www-data:www-data /var/www/html/ - R
По умолчанию Apache устанавливает глобальное имя ServerName, основываясь на системном имени хоста. Если это имя не удаётся разрешить через DNS, вы, скорее всего, столкнётесь с ошибкой при выполнении команды sudo apache2ctl — t.
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Для решения данной проблемы можно задать глобальный ServerName в Apache. Для этого откройте текстовый редактор Nano и создайте новый файл конфигурации.
sudo nano /etc/apache2/conf-available/servername.conf
Включите следующую строку в данный файл.
ServerName localhost
Сохраните изменения и закройте документ. В текстовом редакторе Nano для сохранения нажмите Ctrl+O, затем подтвердите нажатием Enter. Чтобы выйти, используйте комбинацию Ctrl+X. После этого активируйте файл конфигурации.
sudo a2enconf servername.conf
Перезапустите Apache, чтобы новые настройки начали действовать.
sudo systemctl reload apache2
Теперь, если вы повторно введете команду sudo apache2ctl — t, это сообщение об ошибке больше не появится.
Настройка сервера базы данных MariaDB
MariaDB является альтернативой MySQL и может быть использована без каких-либо изменений. Она была создана бывшими разработчиками MySQL, которые выражали опасения по поводу того, что Oracle может сделать MySQL закрытым программным обеспечением. Для установки MariaDB на Ubuntu 22.04 выполните следующую команду.
sudo apt install mariadb-server mariadb-client
После установки сервер MariaDB должен стартовать автоматически. Для проверки его состояния используйте команду systemctl.
systemctl status mariadb
● mariadb.service - MariaDB 10.6.7 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled ; vendor preset: enabled) Active: active (running) since Fri 2022-04-10 14:19:16 UTC; 18s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 9161 (mysqld) Status: "Taking your SQL requests now. " Tasks: 31 (limit: 9451) Memory: 64.7M CGroup: /system. slice/mariadb.service └─9161 /usr/sbin/mysqld
Если команда, указанная выше, не завершится автоматически, нажмите «q», чтобы выйти.
Если сервер не активен, активируйте его, выполнив следующую команду:
sudo systemctl start mariadb
Для того чтобы активировать автоматический запуск MariaDB при старте системы, выполните следующую команду.
sudo systemctl enable mariadb
После завершения установки запустите скрипт безопасности.
sudo mysql_secure_installation
- Когда система запросит ввод пароля root для MariaDB, просто нажмите клавишу Enter, так как пароль для root пока не задан.
- Не переходите на аутентификацию через unix_socket, поскольку MariaDB уже применяет эту форму аутентификации.
- Не изменяйте пароль для root, так как при использовании аутентификации unix_socket установка пароля для root не требуется.

Теперь вы можете нажать Enter, чтобы ответить на все оставшиеся вопросы. Это приведет к удалению анонимного пользователя, отключению удаленного доступа для root и удалению тестовой базы данных. Этот шаг является основным требованием для обеспечения безопасности базы данных MariaDB. (Учтите, что Y написана заглавными буквами, что указывает на то, что это стандартный ответ.)

В стандартной установке MariaDB на Ubuntu для аутентификации пользователей применяется unix_socket. Это позволяет использовать учетные данные операционной системы (имя пользователя и пароль) для доступа к консоли MariaDB. Таким образом, вы можете воспользоваться следующей командой, чтобы войти без необходимости вводить пароль для пользователя root MariaDB.
sudo mariadb - u root
exit;
Проверьте данные о версии сервера MariaDB.
mariadb --version
Мы успешно установили MariaDB версии 10.6.7.
mariadb Ver 15.1 Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Инсталляция PHP8.1
На момент создания данной инструкции последней стабильной версией PHP является PHP8.1, которая демонстрирует небольшое повышение производительности по сравнению с PHP8.0. Для установки PHP8.1 и нескольких популярных модулей PHP выполните следующую команду.
sudo apt install php8.1 libapache2-mod-php8.1 php8.1-mysql php-common php8.1-cli php8.1-common php8.1-opcache php8.1-readline php8.1-mbstring php8.1-xml php8.1-gd php8.1-curl
Активируйте модуль Apache для версии php8.1, после чего перезапустите сервер Apache.
sudo a2enmod php8.1 sudo systemctl restart apache2
Убедитесь в актуальности версии PHP.
php --version
PHP 8.1.2 (cli) (built: Apr 7 2022 17:46:26) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.2, Copyright (c) Zend Technologies with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
Для тестирования PHP-скриптов на сервере Apache необходимо создать файл info.php в основном каталоге документов.
sudo nano /var/www/html/info.php
Поместите указанный PHP-код в файл.
Чтобы сохранить документ в текстовом редакторе Nano, нажмите комбинацию клавиш Ctrl+O, затем подтвердите действие, нажав Enter. Для выхода из редактора используйте Ctrl+X. После этого введите в адресной строке браузера server-ip-address/info.php, заменив server-ip-address на реальный IP-адрес вашего сервера. Если вы работаете на локальном компьютере, введите 127.0.0.1/info.php или localhost/info.php.
Необходимо просмотреть данные о PHP на вашем сервере. Это указывает на то, что PHP-скрипты могут быть успешно выполнены с помощью веб-сервера Apache.

Запуск PHP-FPM в связке с Apache.
Существует два главных метода выполнения PHP-кода с использованием веб-сервера Apache:
- Модуль PHP для Apache
- PHP-FPM.
В описанных выше этапах применяется модуль Apache PHP8.1 для обработки кода на PHP, что обычно является стандартной практикой. Однако в некоторых ситуациях может потребоваться выполнение PHP-кода через PHP-fpm.Ниже приведены инструкции по этому процессу.
Деактивируйте модуль Apache для PHP версии 8.1.
sudo a2dismod php8.1
sudo apt install php8.1-fpm
Активируйте модули proxy_fcgi и setenvif.
sudo a2enmod proxy_fcgi setenvif
Активируйте файл конфигурации /etc/apache2/conf-available/php8.1-fpm.conf.
sudo a2enconf php8.1-fpm
Перезагрузите Apache, чтобы обновления начали действовать.
sudo systemctl restart apache2
Теперь, при обновлении страницы info.php в вашем браузере, вы заметите, что Server API изменился с Apache 2.0 Handler на FPM/FastCGI. Это указывает на то, что веб-сервер Apache теперь передает запросы PHP на PHP-FPM.

Поздравляем! Вам удалось установить стек LAMP (Apache, MariaDB и PHP8.1) на Ubuntu 22.04. Чтобы обеспечить безопасность вашего сервера, рекомендуется удалить файл info.php, чтобы исключить возможность доступа к нему посторонних.
sudo rm /var/www/html/info.php
Дальнейшие действия.
Надеюсь, это руководство оказалось для вас полезным в установке LAMP-стека на Ubuntu 22.04 LTS. Если вам понравилась эта статья, не забудьте подписаться на нашу бесплатную рассылку, чтобы не пропустить новые советы и рекомендации.
Создание резервных копий имеет большое значение в ситуациях, таких как взлом или бедствия в дата-центрах и так далее. Необходимо разработать план резервного копирования для вашего сервера.
- Создание резервных копий и восстановление баз данных MariaDB через командную строку.
- Применение Duplicati для создания резервных копий файлов в системах Debian, Ubuntu и Linux Mint.
Улучшение и контроль эффективности работы сервера на базе Linux.
- Улучшение производительности сети в Ubuntu посредством активации TCP BBR.
- HTTP/2: что это такое и как активировать его на Nginx
- Наблюдение за эффективностью Linux-сервера с помощью Netdata (2022)

