Приветствую Вас, уважаемые читатели. Сегодня тема статьи: "Установка LAMP в Debian 10". Будем устанавливать, и настраивать веб-окружение LAMP, в операционной системе Debian 10.

LAMP – это комплект программного обеспечения (Linux, Apache, MySQL, PHP), для работы сайтов, cms, веб-приложений.

Я буду использовать доменное имя test.ru, предварительно прописанное в файле hosts, за ip-адресом сервера.

Создание директорий для работы сайта

  • Прежде всего, нужно создать инфраструктуру для работы сайта.
  • Создаём общую директорию для сайта, а в ней директории для файлов и логов.
# mkdir -p /var/www/test.ru/{site,log}

Установка веб-сервера Apache в Debian 10

  • Для установки Apache, нужно выполнить соответствующую команду:
# apt install apache2 apache2-utils
  • В процессе установки, веб-сервер будет запущен, и добавлен в автозагрузку.

Создание конфигурационного файла в Apache

  • Прежде чем создавать конфигурационный файл нашего сайта, нужно удалить дефолтную конфигурацию Apache.
  • Заходим в директории /etc/apache2/sites-available и /etc/apache2/sites-enabled, удаляем файл 000-default.conf, и ссылку на него.
конфигурационный файл по умолчанию в apache 000-default.conf
  • Теперь можно создать конфигурационный файл будущего сайта. Для удобства, создадим файл с именем нашего домена. В моём случае, это будет /etc/apache2/sites-enabled/test.ru.conf.

<VirtualHost 0.0.0.0:80>
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
<Directory /var/www/test.ru/site>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
php_admin_value date.timezone 'Europe/Moscow'
php_admin_value max_execution_time 60
php_admin_value upload_max_filesize 30M
</VirtualHost>

  • На этом, с Apache пока закончим.

Настройка Firewall для работы Apache в Debian 10

  • Чтобы сайт был доступен пользователям, нужно открыть требуемые порты в системном брандмауэре. Для работы сайта по протоколу HTTP, достаточно открыть 80 порт. Если сайт будет работать по HTTPS, то требуется открыть так же 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

Установка и настройка сервера баз данных в Debian 10

  • Установку MariaDB, можно произвести двумя способами. Либо из внутреннего архива пакетов, либо из официального архива MariaDB.
  • Для установки из внутреннего архива, достаточно запустить команду:
# apt install mariadb-server mariadb-client
  • Если Вы хотите произвести установку из официального архива 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/debian buster main'


С помощью добавления в файл /etc/apt/sources.list:

# deb [arch=amd64,arm64,ppc64el] https://mirror.docker.ru/mariadb/repo/10.6/debian buster main
# deb-src https://mirror.docker.ru/mariadb/repo/10.6/debian buster main


После подключения архива, запускаем установку:

# apt install mariadb-server mariadb-client
  • В процессе установки, сервер будет запущен, и добавлен в автозагрузку.
  • Теперь можно произвести первоначальную настройку сервера баз данных. Запускаем скрипт настройки.
# mysql_secure_installation
  • На первом вопросе жмём «Enter», дальше создаём пароль пользователя root, и соглашаемся со всеми следующими вопросами.
  • Пришло время создать базу данных для нашего сайта. Я создам базу данных test, и пользователя admin с паролем 123.

# 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;

Установка PHP в Debian 10

  • Выполняем установку 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, и конфигурации нашего сайта.
  • Перезагружаем веб-сервер.
# systemctl restart apache2.service
  • Создаем файл /var/www/test.ru/site/index.php, такого содержания:
<?php
 phpinfo();
  • Открываем наш сайт с помощью браузера. Если всё было сделано правильно, то откроется страница с информацией об установленном PHP.
информация о php
  • Результат проверки положительный, значит теперь можно загружать файлы сайта в корневую директорию /var/www/test.ru/site.
  • После загрузки файлов, добавляем нужные права на директорию сайта.
# chown www-data:www-data -R /var/www/test.ru/site
# chmod -R 0775 /var/www/test.ru/site

Сертификат Let’s Encrypt для Apache в Debian 10

  • Для возможности получения сертификата 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 в Debian 10

  • Чтобы Apache работал по протоколу HTTPS, нужно произвести некоторые настройки. Прежде всего, нужно активировать два дополнительных модуля.
# a2enmod ssl
# a2enmod rewrite
  • Кроме того, нужно изменить конфигурационный файл сайта. Вносим в файл /etc/apache2/sites-enabled/test.conf, базовую конфигурацию для работы по протоколу HTTPS.

<VirtualHost _default_:80>
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]
</VirtualHost>


<VirtualHost _default_:443>
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
<Directory /var/www/test.ru/site>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
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/letsencrypt/live/test.ru/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/test.ru/chain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test.ru/privkey.pem
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
</VirtualHost>

  • Проверяем конфигурацию, и перезапускаем веб-сервер.
# apache2ctl configtest
# systemctl restart apache2.service
  • После внесённых изменений, сайт будет доступен по протоколу HTTPS.

Установка phpMyAdmin для Apache в Debian 10

  • Пакет phpMyAdmin отсутствует в официальном архиве Debian 10. Чтобы произвести установку phpMyAdmin в Debian 10, нужно скачивать архив веб-приложения, и вручную производить кучу донастроек в файлах.
  • Я предлагаю облегчить процесс путём установки phpMyAdmin из официального архива предыдущей версии Debian 9. При таком подходе версия будет старее, но всё-таки поддерживаемая, и установка будет произведена в пару кликов.
  • Для подключения официального архива Debian 9, добавляем в файле /etc/apt/sources.list две строчки:
deb http://deb.debian.org/debian/ stretch main contrib non-free
deb-src http://deb.debian.org/debian/ stretch main contrib non-free
  • Запускаем команду обновления apt.
# apt update
  • После произведённых действий, phpMyAdmin будет установлен одной командой:
# apt install phpmyadmin php-curl
  • В процессе установки, будет задано два вопроса.
  • Первым делом, нужно выбрать веб-сервер для автоматической перенастройки.
  • Выбираем «Apache», и жмём на «ОК».
выбор веб-сервера для конфигурации phpMyAdmin
  • Во втором вопросе, предлагается автоматическая установка и настройка базы данных для phpMyAdmin.
  • Соглашаемся, и жмём на «ДА».
выбор создания и настройки бызы данных для phpMyAdmin
  • По завершении установки, принудительно активируем модуль mbstring.
# phpenmod mbstring
  • РhpMyAdmin установлен, но чтобы иметь к нему доступ, нужно произвести некоторые донастройки.
  • В первую очередь, нужно задействовать конфигурацию phpMyAdmin, которая находится по адресу /etc/phpmyadmin/apache.conf.
  • Добавляем одну строчку, в блок 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-адрес, с которого Вы планируете подключаться. При такой настройке, никто кроме Вас не сможет получить доступ к phpmyadmin.

  • Чтобы изменения вступили в силу, нужно перезапустить веб-сервер.
# systemctl restart apache2.service
  • РhpMyAdmin доступен по адресу:
https://test.ru/phpmyadmin

Настройка ротации логов Apache в Debian 10

  • В данной инструкции я использую нестандартные пути для хранения логов. Поэтому в процессе системной ротации логов, директории используемые в данной инструкции не будут затронуты.
  • Чтобы настроить ротацию в наших директориях, достаточно добавить одну строчку в файл /etc/logrotate.d/apache2.

/var/www/*/log/*log

настройка ротации логов в apache
  • После внесения изменений, ротация наших логов будет производится как положено.

Сегодня мы рассмотрели тему: "Установка LAMP в Debian 10". Произвели установку и настройку веб-окружения LAMP, и сопутствующих компонентов, в операционной системе Debian 10. Смотрите так же, видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "Установка LAMP в Debian 10":