Установка стека LAMP в Ubuntu 18.04

Стек LAMP – это группа открытых программ, которая необходима серверу для поддержки динамических сайтов и веб-приложений. Акроним LAMP расшифровывается как Linux (операционная система), Apache (веб-сервер), MySQL (система управления базами данных) и PHP (серверный язык сценариев для обработки динамического контента).

На сервере уже установлен первый компонент – операционная система  Ubuntu, которая является дистрибутивом Linux. Этот мануал поможет установить остальные компоненты стека.

Требования

  • Сервер Ubuntu 18.04.
  • Пользователь с доступом к команде sudo (все инструкции по созданию такого пользователя можно найти здесь).

1: Установка Apache и настройка брандмауэра

Apache является одним из самых популярных веб-серверов в мире. Он хорошо документирован и широко используется в Интернете почти с самого начала его существования.

Установить Apache очень просто, пакеты этого веб-сервера доступны в стандартном репозитории Ubuntu. Для установки используйте пакетный менеджер apt:

sudo apt update
sudo apt install apache2

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

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

Теперь нужно убедиться, что брандмауэр UFW пропускает трафик HTTP и HTTPS. Просмотрите доступные профили Apache:

sudo ufw app list
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH

Профиль Apache Full разрешает трафик на порт 80 и 443.

sudo ufw app info "Apache Full"
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp

Разрешите входящий трафик:

sudo ufw allow in "Apache Full"

Чтобы убедиться, что теперь брандмауэр поддерживает входящий трафик на порт 80 или 443, посетите внешний IP своего сервера в браузере.

http://your_server_IP_address

На экране должна появиться стандартная страница Apache для Ubuntu:

It works!
This is the default welcome page used to test the correct operation of the Apache2 server after installation on Ubuntu systems. …

Как узнать свой внешний IP-адрес

Существует несколько способов определить внешний IP-адрес сервера при помощи командной строки.

Во-первых, можно использовать инструменты iproute2:

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

Команда вернёт несколько адресов, однако сервер может использовать не все эти адреса, а только один из них; проверьте каждый полученный адрес.

Также можно запросить свой адрес у третьей стороны при помощи утилиты curl.

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

2: Установка MySQL

MySQL – это реляционная система управления базами данных (СУБД), которая систематизирует и хранит данные сайта.

Эту систему также можно установить с помощью менеджера apt:

sudo apt install mysql-server

Примечание: В данном случае обновлять индекс пакетов не нужно, потому что он был обновлён перед установкой Apache.

Менеджер сообщит список пакетов, которые будут установлены, и необходимое для этого дисковое пространство.

После завершения установки нужно запустить сценарий безопасности, который удалит ненадёжные параметры  и защитит БД от несанкционированного доступа.

sudo mysql_secure_installation

Сценарий предложит указать root-пароль MySQL, а затем задаст ряд вопросов.

Примечание: Сценарий предложит включить параметр VALIDATE PASSWORD PLUGIN. Если этот параметр включен, пароли, которые не соответствуют указанным критериям, будет отклонены системой MySQL как ошибка. Это вызовет проблемы, если вы используете слабый пароль в программах, которые автоматически настраивают учетные данные пользователя MySQL (например PhpMyAdmin). Безопаснее отключить этот параметр и использовать надёжные, уникальные пароли.

Чтобы принять настройки по умолчанию, нажмите y на остальные вопросы сценария.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:

Если вы включили валидацию паролей, программа предложит выбрать уровень. Уровень 2 – наивысший; при этом валидацию пройдут только пароли, содержащие цифры, буквы верхнего и нижнего регистра и специальные символы. Пароли, состоящие из обычных слов, будут отклонены.

There are three levels of password validation policy:
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Во время установки программа предложит выбрать и подтвердить пароль root пользователя MySQL. Это пароль администратора MySQL, у этого пользователя наивысшие права. Обязательно выберите надёжный пароль и установите его.

Если валидация паролей включена, программа покажет надёжность текущего root пароля и предложит изменить его. Если вас устраивает ваш пароль, введите n.

Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

На остальные вопросы можно нажать Y и Enter. Это удалит анонимных пользователей и тестовые базы данных, отключит удалённый root логин и обновит текущие настройки MySQL.

3: Установка PHP

PHP – э о серверный язык сценариев для создания динамических страниц. Он позволяет запускать сценарии, подключаться к БД MySQL и передавать обработанный контент в браузер для отображения.

PHP также можно установить с помощью менеджера apt. Чтобы установить PHP и несколько вспомогательных пакетов (для настройки взаимодействия с Apache и MySQL), введите команду:

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

В большинстве случаев рекомендуется настроить обработку файлов веб-сервером Apache при запросе каталога. На данный момент Apache сначала обслуживает index.html. Чтобы веб-сервер обслуживал PHP-файлы первыми, нужно отредактировать файл dir.conf:

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>

Как видите, файлы index.php находятся в конце строки, а значит, веб-сервер будет обслуживать их в последнюю очередь. Переместите index.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
apache2.service - LSB: Apache2 web server
Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Tue 2018-04-23 14:28:43 EDT; 45s ago
Docs: man:systemd-sysv-generator(8)
Process: 13581 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
Process: 13605 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
Tasks: 6 (limit: 512)
CGroup: /system.slice/apache2.service
├─13623 /usr/sbin/apache2 -k start
├─13626 /usr/sbin/apache2 -k start
├─13627 /usr/sbin/apache2 -k start
├─13628 /usr/sbin/apache2 -k start
├─13629 /usr/sbin/apache2 -k start
└─13630 /usr/sbin/apache2 -k start

Функционал PHP можно расширить при помощи модулей. Чтобы просмотреть список доступных модулей и библиотек PHP, используйте следующую команду:

apt search php- | less

Для навигации используйте кнопки со стрелками; чтобы закрыть список, нажмите q.

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

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
Tracks usage of TCP/IP and builds html files with graphs
bluefish/bionic 2.2.10-1 amd64
advanced Gtk+ text editor for web and software development
cacti/bionic 1.1.38+ds1-1 all
web interface for graphing of monitoring systems
ganglia-webfrontend/bionic 3.6.1-3 all
cluster monitoring toolkit - web front-end
golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
PHP-like Compression and Archive Extensions in Go
haserl/bionic 0.9.35-2 amd64
CGI scripting program for embedded environments
kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php
kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
transitional package for kdevelop-php-l10n

:

Чтобы получить подробную информацию о модуле, используйте:

apt show package_name

Данная команда вернёт объёмный вывод, включая поле Description, в котором содержится подробное объяснение работы запрашиваемого модуля.

К примеру, можно узнать больше о модуле php-cli:

apt show php-cli
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 Ubuntu's default
PHP version (currently 7.2).

Чтобы установить выбранный модуль, используйте команду apt install, указав имя модуля. Например, чтобы установить php-cli, нужно ввести:

sudo apt install php-cli

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

sudo apt install package1 package2 ...

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

4: Тестирование стека

Сейчас нужно убедиться в том, что веб-сервер взаимодействует с PHP. Для этого нужно создать простой сценарий PHP, info.php. Чтобы веб-сервер Apache мог найти этот файл, его нужно поместить в root-каталог веб-сервера (в Ubuntu это /var/www/html/).

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

На экране появится пустой файл. Поместите в него такой код:

<?php
phpinfo();
?>

Сохраните и закройте файл.

Теперь попробуйте открыть его в браузере:

http://server_domain_or_IP/info.php

На экране появится веб-страница, содержащая информацию о сервере. Если такая страница появилась, веб-сервер обслуживает файлы PHP.

Важно! После проверки обязательно удалите этот файл, иначе любой пользователь сможет получить доступ к конфиденциальным данным о сервере.

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

Заключение

Теперь на сервере Ubuntu 18.04 установлен программный стек LAMP – надёжная и гибкая платформа для развёртывания сайта или приложения.

После этого вам обязательно нужно защитить соединения с вашим веб-сервером по HTTPS. Проще всего это сделать с помощью бесплатного сертификата Let’s Encrypt.

Также вам могут пригодиться следующие статьи:

Tags: , , , , , ,