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

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

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

Требования

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

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

Apache является одним из самых популярных веб-серверов в мире.

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

Примечание: Подробнее о менеджере apt – в этой статье.

Обновите индекс пакетов и установите Apache:

sudo apt-get update
sudo apt-get 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-get install curl
curl http://icanhazip.com

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

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

Эту систему также можно установить с помощью менеджера apt. Чтобы установить MySQL и несколько вспомогательных программ, введите:

sudo apt-get install mysql-server

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

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

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

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

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 пароля и предложит изменить его. Если вас устраивает ваш пароль, введите 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-get install php libapache2-mod-php php-mcrypt 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 Wed 2016-04-13 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
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Stopped LSB: Apache2 web server.
Apr 13 14:28:42 ubuntu-16-lamp systemd[1]: Starting LSB: Apache2 web server...
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]:  * Starting Apache httpd web server apache2
Apr 13 14:28:42 ubuntu-16-lamp apache2[13605]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerNam
Apr 13 14:28:43 ubuntu-16-lamp apache2[13605]:  *
Apr 13 14:28:43 ubuntu-16-lamp systemd[1]: Started LSB: Apache2 web server.

Установка модулей PHP (опционально)

Функционал PHP можно расширить при помощи модулей.

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

apt-cache search php- | less

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

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

libnet-libidn-perl - Perl bindings for GNU Libidn
php-all-dev - package depending on all supported PHP development packages
php-cgi - server-side, HTML-embedded scripting language (CGI binary) (default)
php-cli - command-line interpreter for the PHP scripting language (default)
php-common - Common files for PHP packages
php-curl - CURL module for PHP [default] php-dev - Files for PHP module development (default)
php-gd - GD module for PHP [default] php-gmp - GMP module for PHP [default] …

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

apt-cache show package_name

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

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

apt-cache show php-cli

Description-en: 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-get install, указав имя модуля. Например, чтобы установить php-cli, нужно ввести:

sudo apt-get install php-cli

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

sudo apt-get install package1 package2 ...

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

Итак, стек LAMP полностью установлен и готов к работе. Теперь нужно убедиться в том, что веб-сервер взаимодействует с 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 16.04 установлен программный стек LAMP – надёжная и гибкая платформа для развёртывания сайта или приложения.

Чтобы защитить соединения веб-сервера с клиентами, получите TLS/SSL-сертификат.

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

Tags: , , , , ,

Добавить комментарий