Установка LAMP в Ubuntu Server 20.04

Доброго времени суток, уважаемые читатели. Сегодня статья на тему: "Установка LAMP в Ubuntu Server 20.04". Рассмотрим процесс установки и настройки веб-окружения LAMP, в операционной системе Ubuntu Server 20.04.
LAMP – это комплект серверного ПО (Linux, Apache, MySQL, PHP), для работы сайтов, cms, веб-приложений.
Я буду использовать доменное имя test.ru, которое предварительно прописал в файле hosts, за ip-адресом сервера.
Создание директорий для работы сайта
- Сначала создадим инфраструктуру для работы сайта.
- Создаем директорию с именем сайта, а в ней - директорию для файлов, и директорию для логов.
# mkdir -p /var/www/test.ru/{site,log}
Установка веб-сервера Apache в Ubuntu Server 20.04
- Установку веб-сервера, можно произвести либо из архива пакетов подключенного при установке ОС, либо подключив сторонний архив приватных пакетов (PPA). Во втором случае, будет установлена более новая версия Apache.
- В первом случае, достаточно одной команды:
# apt install apache2 apache2-utils
- Во втором случае, понадобится произвести установку дополнительных пакетов:
# apt install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates
- Подключаем сторонний PPA, и производим установку Apache.
# add-apt-repository ppa:ondrej/apache2 # apt install apache2 apache2-utils
- В процессе установки, Apache будет запущен, и добавлен в автозагрузку.
- Для управления веб-сервером, можно использовать стандартный набор команд:
# systemctl stop apache2.service # systemctl start apache2.service # systemctl restart apache2.service
Создание конфигурационного файла в Apache
В мануалах по настройке Apache, предлагается создавать конфигурационный файл в одной директории, потом создавать ссылку на этот конфиг в другой директории, потом запускать команду на активацию этой ссылки… Я предлагаю не городить огороды, а делать всё намного проще.
- В директориях /etc/apache2/sites-available и /etc/apache2/sites-enabled, удаляем файл 000-default.conf, и ссылку на него.

- Создаем файл базовой конфигурации в директории /etc/apache2/sites-enabled. В моём случае, это будет /etc/apache2/sites-enabled/test.ru.conf.
ServerName test.ru ServerAlias www.test.ru DocumentRoot /var/www/test.ru/site ErrorLog /var/www/test.ru/log/error.log CustomLog /var/www/test.ru/log/access.log common Options FollowSymLinks AllowOverride All Require all granted php_admin_value date.timezone 'Europe/Moscow' php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M
- С веб-сервером пока закончим. Перезапускать его нет смысла, так как в конфиге мы указали настройки php, который у нас ещё не установлен.
Настройка Firewall для работы Apache в Ubuntu Server 20.04
- Чтобы к веб-серверу была возможность подключения из вне, нужно открыть порты в системном брандмауэре. Для доступа к веб-серверу по протоколу HTTP, достаточно открыть 80 порт. В случае же с HTTPS, нужно открыть два порта 80 и 443.
- Если Вы используете UFW, то команды будут такие:
# ufw allow 80/tcp # ufw allow 443/tcp
- Для iptables, нужно будет выполнить:
# iptables -A INPUT -p tcp --dport 80 -j ACCEPT # iptables -A INPUT -p tcp --dport 443 -j ACCEPT # iptables-save > /etc/iptables/rules.v4
Установка и настройка сервера баз данных в Ubuntu Server 20.04
- Переходим к установке MariaDB.
- Установку MariaDB, можно произвести из внутреннего архива пакетов, либо произведя подключение официального архива MariaDB.
- В случае с внутренним архивом, достаточно одной команды:
# apt install mariadb-server mariadb-client
- Если Вы решили произвести установку из официального архива MariaDB, то его сначала нужно подключить. Для этого нужно зайти на страницу с репозиториями на сайте MariaDB, выбрать свою ОС, нужный релиз, и ближайшее зеркало:
https://downloads.mariadb.org/mariadb/repositories
- В итоге, Вам будет предложено произвести подключение одним из доступных способов:
Спомощью команд: # apt install software-properties-common dirmngr apt-transport-https lsb-release ca-certificates # apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc' # add-apt-repository 'deb [arch=amd64,arm64,ppc64el] https://mirror.docker.ru/mariadb/repo/10.6/ubuntu focal main' С помощью добавления в файл /etc/apt/sources.list: deb [arch=amd64] https://mirror.docker.ru/mariadb/repo/10.6/ubuntu focal main deb-src https://mirror.docker.ru/mariadb/repo/10.6/ubuntu focal main После подключения архива, запускаем установку: # apt install mariadb-server mariadb-client
- В процессе установки, сервер баз данных будет запущен, и добавлен в автозагрузку.
- Запускаем скрипт первоначальной настройки MariaDB.
# mysql_secure_installation
- Первым вопросом, нам будет предложено ввести пароль root, но так мы его ещё не создавали, то просто жмём на «Enter». Далее создаём пароль для root, и соглашаемся со всеми вопросами.
- Сервер баз данных настроен, и мы можем создать базу данных для нашего сайта, и пользователя со всеми правами для неё.
# mysql -u root -p MariaDB [(none)]> CREATE DATABASE test; MariaDB [(none)]> GRANT ALL PRIVILEGES ON test.* TO 'admin'@'localhost' IDENTIFIED BY '123'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> quit;
- Я для примера создал базу данных test, и пользователя admin с паролем 123.
Установка PHP в Ubuntu Server 20.04
- Производим установку PHP, и наиболее используемых модулей. Если в команде присутствуют не нужные Вам модули, то можно их исключить. В случае же, если Вам нужен какой-нибудь дополнительный модуль, Вы можете добавить его к команде, через пробел.
# apt install php libapache2-mod-php php-cli php-mysqlnd php-json php-gd php-ldap php-odbc php-pdo php-opcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip
- После установки, можно проверить работу веб-сервера и PHP. Для этого перезагружаем веб-сервер, и создаём в корневой директории сайта /var/www/test.ru/site, файл index.php, такого содержания:
<?php phpinfo();
- После создания файла, заходим на наш сайт через браузер. Если всё сделано правильно, то откроется страница с информацией об установленном PHP и его модулях.

- Теперь можно загружать файлы сайта в коревую директорию, и после этого добавлять нужные права:
# chown www-data:www-data -R /var/www/test.ru/site # chmod -R 0775 /var/www/test.ru/site
Сертификат Let’s Encrypt для Apache в Ubuntu Server 20.04
- Пришло время получить бесплатный сертификат от Let’s Encrypt. Для этого нам нужно установить утилиту certbot.
# apt install certbot python3-certbot-apache
- В процессе установки, в системный cron будет добавлено задание на обновление сертификата. Проверка будет производится через каждые 12 часов.
- Проверить таймер автообновления, можно запустив команду:
# systemctl status certbot.timer
- Для запуска обновления сертификата вручную, можно использовать команду:
# certbot renew --dry-run
- Утилита установлена, и настроена для автообновления сертификата. Но сам сертификат мы ещё не получили.
- Для получения сертификата, нужно выполнить определённую команду. В моём случае, команда будет такой:
# certbot certonly --apache -d test.ru -d www.test.ru
- В результате выполнения данной команды, Вам будет задано несколько вопросов. Нужно указать свой email, согласиться с условиями использования, отказаться от рассылок, и отказаться от настройки редиректа. Редирект в конфигурационном файле, мы настроим сами вручную.
- По завершении, в консоли появляется поздравление, адреса директорий в которых находятся сертификат и ключи, и дата окончания сертификата.
Настройка Apache для работы по HTTPS в Ubuntu Server 20.04
- Сертификат у нас на руках, но чтобы Apache работал по протоколу HTTPS, нужно произвести некоторые действия.
- Сначала нужно активировать два модуля. Это mod ssl, и mod rewrite.
# a2enmod ssl # a2enmod rewrite
- После активации модулей, нужно отредактировать конфигурационный файл нашего сайта /etc/apache2/sites-enabled/test.conf:
ServerName test.ru ServerAlias www.test.ru DocumentRoot /var/www/test.ru/site ErrorLog /var/www/test.ru/log/error.log CustomLog /var/www/test.ru/log/access.log common RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] ServerName test.ru ServerAlias www.test.ru DocumentRoot /var/www/test.ru/site ErrorLog /var/www/test.ru/log/ssl.error.log CustomLog /var/www/test.ru/log/ssl.access.log common Options FollowSymLinks AllowOverride All Require all granted php_admin_value date.timezone 'Europe/Moscow' php_admin_value max_execution_time 60 php_admin_value upload_max_filesize 30M SSLEngine on SSLCertificateFile /etc/ssl/cert.pem SSLCertificateKeyFile /etc/ssl/cert.key SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS SSLHonorCipherOrder on
В конфигурационном файле представленном выше, не забудьте изменить доменное имя test.ru, на своё доменное имя.
- В конфиге представлена базовая конфигурация для работы по протоколу HTTPS.
- После внесённых изменений, перезапускаем веб-сервер:
# systemctl restart apache2.service
- Теперь если мы попытаемся попасть на наш сайт, то получим доступ по защищённому соединению.
Установка phpMyAdmin для Apache в Ubuntu Server 20.04
- Переходим к установке веб-приложения phpMyAdmin, для работы с сервером баз данных.
- Установка phpMyAdmin, производится одной командой:
# apt install phpmyadmin php-curl
- В процессе установки, появляется окно, в котором предлагается выбрать веб-сервер для автоматической конфигурации. Выбираем Apache, нажав на пробел, и жмём на «ОК».

- Во втором окне, предлагается автоматическая настройка базы данных для phpMyAdmin.
- Соглашаемся, и жмём на «Yes».

- После установки, рекомендуется принудительно активировать модуль mbstring.
# phpenmod mbstring
- Конфигурационный файл phpMyAdmin, находится по адресу /etc/phpmyadmin/apache.conf. Чтобы задействовать phpMyAdmin, нужно подключить его конфигурационный файл к конфигу сайта.
- Добавляем одну строчку, в конце блока 443 порта конфигурационного файла сайта /etc/apache2/sites-enabled/test.conf:
Include /etc/phpmyadmin/apache.conf
- Для настройки безопасности phpMyAdmin, предлагаю настроить доступ с одного ip-адреса. Для этого в файле /etc/phpmyadmin/apache.conf, внутри блока <Directory /usr/share/phpmyadmin>, нужно добавить три строчки:
Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 Allow from 192.168.1.200
- 192.168.1.200 – замените на Ваш ip-адрес.
- Чтобы нововведения вступили в силу, нужно перезапустить веб-сервер.
# systemctl restart apache2.service
- Теперь если ввести в браузере, в моём случае:
https://test.ru/phpmyadmin
- То откроется форма входа phpMyAdmin. Пройдя авторизацию, можно получить доступ к управлению сервером баз данных.

Настройка ротации логов Apache в Ubuntu Server 20.04
- Последнее что осталось сделать, это настроить ротацию логов. Так как мы использовали нестандартные директории, то нужно отредактировать файл /etc/logrotate.d/apache2.
- Добавляем одну строчку:
/var/www/*/log/*log

- Вот и всё, теперь с ротацией всё будет в порядке.
Сегодня мы рассмотрели тему: "Установка LAMP в Ubuntu Server 20.04". Рассмотрели установку LAMP, настройку работы веб-сервера по HTTPS, установку phpMyAdmin, и перенастройку ротации логов. Смотрите так же, видео по теме.
Надеюсь статья была вам полезна. До встречи в новых статьях.
✍
С уважением, Андрей Бондаренко.
Видео на тему "Установка LAMP в Ubuntu Server 20.04":

WMZ-кошелёк = Z667041230317
«Ubuntu»