Установка комплекта Linux, Apache, MariaDB, PHP (LAMP) в Debian 9

Введение

Комплект LAMP — это набор программного обеспечения с открытым исходным кодом, которое обычно устанавливается в комплексе для размещения на сервере динамических сайтов и веб-приложений. Этот термин представляет собой аббревиатуру. Операционная система Linux используется с веб-сервером Apache. Данные сайта хранятся в базе данных MariaDB, а за обработку динамического контента отвечает PHP.

В этом обучающем модуле мы установим комплект LAMP на сервер Debian 9.

Предварительные требования

Для данного обучающего модуля вам потребуется сервер Debian 9 с учетной записью пользователя без привилегий root и с привилегиями sudo, а также базовым брандмауэром. При настройке следует использовать указания руководства по начальной настройке сервера Debian 9.

Шаг 1 — Установка Apache и обновление брандмауэра

Веб-сервер Apache — один из самых популярных веб-серверов в мире. По нему имеется очень много документации, и он широко использовался в течение почти всей истории Интернета, что делает его отличным выбором для хостинга сайта.

Установите Apache с помощью диспетчера пакетов apt в Debian:

  • sudo apt update
  • sudo apt install apache2

Поскольку это команда sudo, данные операции выполняются с привилегиями root. Для подтверждения система попросит ввести пароль обычного пользователя.

После ввода пароля apt покажет, какие пакеты планируются к установке, и сколько они займут дополнительного пространства на диске. Нажмите Y, а затем нажмите ENTER, чтобы продолжить установку.

Если вы выполнили указания по начальной настройке сервера и установили и включили брандмауэр UFW, убедитесь, что ваш брандмауэр разрешает трафик HTTP и HTTPS.

При установке в операционной системе Debian 9 в UFW имеются профили приложений, с помощью которых вы можете настраивать параметры брандмауэра. Для просмотра полного списка профилей приложений запустите следующую команду:

  • sudo ufw app list

Профили WWW используются для управления портами, которые используются веб-серверами:

OutputAvailable applications: . . .   WWW   WWW Cache   WWW Full   WWW Secure . . . 

Если вы просмотрите профиль WWW Full, вы увидите, что он активирует трафик на портах 80 и 443:

  • sudo ufw app info "WWW Full"
OutputProfile: WWW Full Title: Web Server (HTTP,HTTPS) Description: Web Server (HTTP,HTTPS)  Ports:   80,443/tcp 

Разрешите входящий трафик HTTP и HTTPS для этого профиля:

  • sudo ufw allow in "WWW Full"

Вы можете провести точечную проверку работы брандмауэра, открыв в браузере внешний IP-адрес сервера:

http://your_server_ip 

Вы увидите веб-страницу по умолчанию Debian 9 Apache, предназначенную для информационных целей и целей тестирования. Она должна выглядеть следующим образом:

Страница Debian 9 Apache по умолчанию

Если вы видите эту страницу, ваш веб-сервер правильно установлен и доступен через ваш брандмауэр.

Если вы не знаете внешний IP-адрес вашего сервера, вы можете определить его с помощью нескольких способов. Обычно это адрес, который вы используете для подключения к серверу через SSH.

Существует несколько способов сделать это через командную строку. Во-первых, вы можете использовать инструменты iproute2 для получения IP-адреса с помощью следующей команды:

  • ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's//.*$//'

В результате будут выведены две или три строки. Все указанные адреса верные, но ваш компьютер может использовать только один из них, так что вы можете попробовать каждый.

Также можно использовать утилиту curl для связи с внешним устройством. Вы увидите, как это устройство видит ваш сервер. Для этого нужно запросить ваш IP-адрес у конкретного сервера:

  • sudo apt install curl
  • curl http://icanhazip.com

Вне зависимости от метода получения IP-адреса введите его в адресную строку браузера для просмотра страницы Apache по умолчанию.

Шаг 2 — Установка MariaDB

Вы установили и запустили веб-сервер, а теперь можете устанавливать MariaDB. MariaDB — это система управления базами данных. Она организует и обеспечивает доступ к базам данных, где ваш сайт может хранить информацию.

MariaDB — это созданное сообществом разработчиков ответвление MySQL. В Debian 9 в качестве сервера MySQL по умолчанию используется MariaDB 10.1, а пакет mysql-server, который обычно используется для установки MySQL, представляет собой переходный пакет, который фактически устанавливает MariaDB. Однако рекомендуется устанавливать MariaDB с помощью пакета mariadb-server.

Используйте apt для получения и установки этого программного обеспечения:

  • sudo apt install mariadb-server

Примечание. В этом случае вам не нужно предварительно запускать команду sudo apt update до выполнения команды. Это связано с тем, что вы недавно запускали ее для установки Apache, и индекс пакетов на вашем компьютере уже должен быть обновлен.

Эта команда также выводит список устанавливаемых пакетов и показывает, сколько они займут места на диске. Введите Y, чтобы продолжить.

После завершения установки запустите простой скрипт безопасности, устанавливаемый вместе с MariaDB. Этот скрипт удаляет некоторые небезопасные параметры по умолчанию и блокирует доступ к системе баз данных. Для запуска интерактивного скрипта введите следующую команду:

  • sudo mysql_secure_installation

При этом откроется серия диалогов, где вы можете внести некоторые изменения в параметры безопасности установки MariaDB. В первом диалоге вам нужно будет ввести пароль пользователя root для текущей базы данных. Это административная учетная запись MariaDB, имеющая повышенный уровень привилегий. Она напоминает учетную запись root на сервере (хотя эта учетная запись относится только к MariaDB). Поскольку вы только что установили MariaDB и еще не меняли параметры конфигурации, пароль будет пустым, так что вам достаточно нажать ENTER в этом диалоге.

В следующем диалоге вам будет предложено задать пароль для пользователя root базы данных. Введите N и нажмите ENTER. В Debian учетная запись пользователя root для MariaDB тесно связана с автоматизированным обслуживанием системы, так что мы не должны изменять настроенные методы аутентификации для этой учетной записи. Это позволит нам обновить пакет для уничтожения системы базы данных посредством удаления доступа к административной учетной записи. Позднее мы расскажем о том, как настроить дополнительную административную учетную запись для доступа через пароль, если аутентификация через сокет не подходит для вашего случая.

Далее вы можете использовать клавиши Y и ENTER, чтобы принять ответы по умолчанию для всех последующих вопросов. Выбрав эти ответы, вы удалите ряд анонимных пользователей и тестовую базу данных, отключите возможность удаленного входа пользователя root и загрузите новые правила, чтобы внесенные изменения немедленно активировались в MariaDB.

При установке на системы Debian пользователь root MariaDB настроен для аутентификации с помощью плагина unix_socket, а не с помощью пароля. Во многих случаях это обеспечивает более высокую безопасность и удобство, однако это также может осложнить ситуацию, если вам нужно предоставить права администратора внешней программе (например, phpMyAdmin).

Поскольку для ротации журналов, запуска и остановки сервера используется учетная запись root, лучше всего не менять учетные данные пользователя root. Изменение учетных данных в файле конфигурации /etc/mysql/debian.cnf может сработать на начальном этапе, но при обновлении пакета изменения могут быть перезаписаны. Если вам требуется настроить доступ с паролем, команда поддержки рекомендует создать отдельную учетную запись администратора вместо изменения учетной записи root.

Для этого мы создадим новую учетную запись admin с теми же привилегиями, что и у учетной записи root, но настроенную для аутентификации с использованием пароля. Для этого откройте командную строку MariaDB через терминал:

  • sudo mariadb

Теперь мы можем создать нового пользователя с привилегиями root и доступом с использованием пароля. Измените имя пользователя и пароль на желаемые:

  • GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Очистите привилегии, чтобы они были сохранены и доступны в текущем сеансе:

  • FLUSH PRIVILEGES;

После этого закройте оболочку MariaDB:

  • exit

Теперь для получения доступа к базе данных с правами администратора вам потребуется пройти аутентификацию учетной записи этого пользователя с указанием заданного пароля. Для этого необходимо использовать следующую команду:

  • mariadb -u admin -p

Вы настроили систему базы данных и теперь можете перейти к установке PHP, заключительного компонента комплекта LAMP.

Шаг 3 — Установка PHP

PHP — это компонент системы, обрабатывающий код для отображения динамического контента. Он может запускать скрипты, подключаться к базам данных MariaDB для получения информации и передавать обработанный контент на веб-сервер для отображения.

Используйте систему apt для установки PHP. Кроме того, установите вспомогательные пакеты, чтобы код PHP можно было запускать на сервере Apache, и чтобы он мог взаимодействовать с базой данных MariaDB:

  • sudo apt install php libapache2-mod-php php-mysql

Эта команда должна установить PHP без каких-либо проблем. Сейчас мы это протестируем.

В большинстве случаев необходимо изменить способ обслуживания файлов Apache при запросе директории. Обычно, если пользователь запрашивает директорию на сервере, Apache в первую очередь ищет файл index.html. Нам нужно, чтобы веб-сервер предпочитал файлы PHP, и чтобы Apache в первую очередь искал файл index.php.

Для этого введите следующую команду, чтобы открыть файл dir.conf в текстовом редакторе с привилегиями root:

  • sudo nano /etc/apache2/mods-enabled/dir.conf

Он будет выглядеть примерно так:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>     DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule> 

Переместите файл индекса PHP (выделен выше) на первую позицию после спецификации DirectoryIndex, примерно так:

/etc/apache2/mods-enabled/dir.conf

<IfModule mod_dir.c>     DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule> 

После завершения сохраните и закройте файл, нажав CTRL+X. Для подтверждения сохранения нажмите Y, а затем нажмите ENTER для подтверждения расположения сохраняемого файла.

После этого перезапустите веб-сервер Apache, чтобы ваши изменения были готовы к распознанию. Для этого введите следующую команду:

  • sudo systemctl restart apache2

Также вы можете проверить статус службы apache2 с помощью команды systemctl:

  • sudo systemctl status apache2
Sample Output● apache2.service - The Apache HTTP Server    Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)    Active: active (running) since Tue 2018-09-04 18:23:03 UTC; 9s ago   Process: 22209 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)   Process: 22216 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)  Main PID: 22221 (apache2)     Tasks: 6 (limit: 4915)    CGroup: /system.slice/apache2.service            ├─22221 /usr/sbin/apache2 -k start            ├─22222 /usr/sbin/apache2 -k start            ├─22223 /usr/sbin/apache2 -k start            ├─22224 /usr/sbin/apache2 -k start            ├─22225 /usr/sbin/apache2 -k start            └─22226 /usr/sbin/apache2 -k start 

Вы можете установить дополнительные модули, чтобы расширить функционал PHP. Чтобы посмотреть доступные варианты модулей и библиотек PHP, отправьте результаты поиска apt search на пейджер less, позволяющий просматривать результаты выполнения других команд:

  • apt search php- | less

Используйте стрелки для прокрутки экрана и клавишу Q для выхода.

На экране результатов будут показаны все доступные для установки опциональные компоненты. Также будет выведено краткое описание каждого из них:

OutputSorting... Full Text Search... bandwidthd-pgsql/stable 2.0.1+cvs20090917-10 amd64   Tracks usage of TCP/IP and builds html files with graphs  bluefish/stable 2.2.9-1+b1 amd64   advanced Gtk+ text editor for web and software development  cacti/stable 0.8.8h+ds1-10 all   web interface for graphing of monitoring systems  cakephp-scripts/stable 2.8.5-1 all   rapid application development framework for PHP (scripts)  ganglia-webfrontend/stable 3.6.1-3 all   cluster monitoring toolkit - web front-end  haserl/stable 0.9.35-2+b1 amd64   CGI scripting program for embedded environments  kdevelop-php-docs/stable 5.0.3-1 all   transitional package for kdevelop-php  kdevelop-php-docs-l10n/stable 5.0.3-1 all   transitional package for kdevelop-php-l10n … : 

Дополнительную информацию о функциях каждого модуля можно найти в Интернете. Также вы можете посмотреть длинное описание пакета с помощью следующей команды:

  • apt show package_name

На экране результатов будет много текста, а в поле описания Description будет приведено развернутое описание функционала модуля.

Например, чтобы узнать функции модуля php-cli, нужно использовать следующую команду:

  • apt show php-cli

Помимо другой информации вы увидите следующий фрагмент:

Output… Description: command-line interpreter for the PHP scripting language (default)  This package provides the /usr/bin/php command interpreter, useful for  testing PHP scripts from a shell or performing general shell scripting tasks.  .  PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used  open source general-purpose scripting language that is especially suited  for web development and can be embedded into HTML.  .  This package is a dependency package, which depends on Debian's default  PHP version (currently 7.0). … 

Если после изучения информации вы решите установить пакет, вы можете использовать для этого команду apt install, как для любого другого программного обеспечения.

Если вы решили установить php-cli, введите следующую команду:

  • sudo apt install php-cli

Если вы хотите установить несколько модулей, вы можете перечислить их после команды apt install, разделяя пробелами:

  • sudo apt install package1 package2 ...

Ваш комплект LAMP установлен и настроен. Однако прежде чем вносить другие изменения или развертывать приложения, будет полезно протестировать конфигурацию PHP на наличие возможных проблем.

Шаг 4 — Тестирование обработки PHP на веб-сервере

Чтобы проверить правильность настройки системы для кода PHP, создайте простой скрипт PHP под названием info.php. Чтобы Apache мог найти этот файл и правильно его обслуживать, его нужно сохранить в специальной директории web root.

В Debian 9 эта директория находится по адресу /var/www/html/. Для создания файла в этой директории запустите следующую команду:

  • sudo nano /var/www/html/info.php

В результате откроется пустой файл. Вставьте в файл следующий код PHP:

/var/www/html/info.php

<?php phpinfo(); ?> 

После завершения редактирования сохраните и закройте файл.

Теперь вы можете проверить способность вашего веб-сервера правильно отображать контент, генерируемый этим скриптом PHP. Для этого откройте страницу в своем браузере. Вам снова потребуется внешний IP-адрес вашего сервера.

Вам нужен следующий адрес:

http://your_server_ip/info.php 

Отображаемая страница должна выглядеть примерно так:

Информация PHP по умолчанию в Debian 9

На этой странице содержится базовая информация о вашем сервере с точки зрения PHP. Эта информация полезна для отладки и обеспечения правильного применения настроек.

Если вы видите эту страницу в своем браузере, PHP работает надлежащим образом.

После тестирования этот файл лучше удалить, поскольку он может предоставить неуполномоченным пользователям информацию о вашем сервере. Для этого запустите следующую команду:

  • sudo rm /var/www/html/info.php

Если впоследствии вам снова потребуется эта информация, вы всегда можете воссоздать эту страницу.

Заключение

Вы установили комплект LAMP, и теперь у вас имеется множество вариантов дальнейших действий. Вы установили платформу, которая позволит вам устанавливать на ваш сервер разнообразные сайты и веб-приложения.