Manager, Developer Education
Комплект LAMP — это набор программного обеспечения с открытым исходным кодом, которое обычно устанавливается в комплексе для размещения на сервере динамических сайтов и веб-приложений. Этот термин представляет собой аббревиатуру. Операционная система Linux используется с веб-сервером Apache. Данные сайта хранятся в базе данных MariaDB, а за обработку динамического контента отвечает PHP.
В этом обучающем модуле мы установим комплект LAMP на сервер Debian 9.
Для данного обучающего модуля вам потребуется сервер Debian 9 с учетной записью пользователя без привилегий root и с привилегиями sudo
, а также базовым брандмауэром. При настройке следует использовать указания руководства по начальной настройке сервера Debian 9.
Веб-сервер 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, предназначенную для информационных целей и целей тестирования. Она должна выглядеть следующим образом:
Если вы видите эту страницу, ваш веб-сервер правильно установлен и доступен через ваш брандмауэр.
Если вы не знаете внешний 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 по умолчанию.
Вы установили и запустили веб-сервер, а теперь можете устанавливать 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.
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
Он будет выглядеть примерно так:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Переместите файл индекса PHP (выделен выше) на первую позицию после спецификации DirectoryIndex
, примерно так:
<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 на наличие возможных проблем.
Чтобы проверить правильность настройки системы для кода PHP, создайте простой скрипт PHP под названием info.php
. Чтобы Apache мог найти этот файл и правильно его обслуживать, его нужно сохранить в специальной директории web root.
В Debian 9 эта директория находится по адресу /var/www/html/
. Для создания файла в этой директории запустите следующую команду:
- sudo nano /var/www/html/info.php
В результате откроется пустой файл. Вставьте в файл следующий код PHP:
<?php
phpinfo();
?>
После завершения редактирования сохраните и закройте файл.
Теперь вы можете проверить способность вашего веб-сервера правильно отображать контент, генерируемый этим скриптом PHP. Для этого откройте страницу в своем браузере. Вам снова потребуется внешний IP-адрес вашего сервера.
Вам нужен следующий адрес:
http://your_server_ip/info.php
Отображаемая страница должна выглядеть примерно так:
На этой странице содержится базовая информация о вашем сервере с точки зрения PHP. Эта информация полезна для отладки и обеспечения правильного применения настроек.
Если вы видите эту страницу в своем браузере, PHP работает надлежащим образом.
После тестирования этот файл лучше удалить, поскольку он может предоставить неуполномоченным пользователям информацию о вашем сервере. Для этого запустите следующую команду:
- sudo rm /var/www/html/info.php
Если впоследствии вам снова потребуется эта информация, вы всегда можете воссоздать эту страницу.
Вы установили комплект LAMP, и теперь у вас имеется множество вариантов дальнейших действий. Вы установили платформу, которая позволит вам устанавливать на ваш сервер разнообразные сайты и веб-приложения.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.