Как установить Linux, Apache, MySQL, PHP (LAMP) на Ubuntu 16.04
Введение
LAMP — это набор программного обеспечения с открытым исходным кодом, которое обычно устанавливается вместе, чтобы позволить серверу размещать динамические веб-сайты и веб-приложения. Термин расшифровывается как Lamp Operating System (операционная система Lamp). Линукс Работает на веб-сервере Apache. Данные сайта хранятся в базе данных MySQL, а динамический контент обрабатывается PHP.
В этом руководстве мы установим стек LAMP на сервер Ubuntu 16.04. Ubuntu удовлетворит нашему первому требованию: операционной системе Linux.
Предпосылки
Прежде чем приступить к работе с этим руководством, вам необходимо настроить на сервере отдельную учётную запись пользователя без прав root с правами sudo. Вы можете узнать, как это сделать, выполнив шаги с 1 по 4 в нашем руководстве по начальной настройке сервера в Ubuntu 16.04.
Шаг 1 — Установка Apache и настройка брандмауэра
Веб-сервер Apache — один из самых популярных веб-серверов в мире. Он хорошо документирован и широко использовался на протяжении большей части истории Интернета, что делает его отличным выбором по умолчанию для хостинга веб-сайтов.
Apache можно легко установить с помощью менеджера пакетов Ubuntu. Менеджер пакетов позволяет без проблем установить большую часть программного обеспечения из репозитория Ubuntu. Подробнее об использовании apt можно узнать здесь.
Для получения результата мы можем начать с ввода следующих команд:
sudo apt-get update $
sudo apt-get install apache2 $Поскольку мы используем команду sudo, эта операция будет выполнена с правами root. Для подтверждения ваших намерений вам будет предложено ввести пароль обычного пользователя.
После ввода пароля apt сообщит вам, какие пакеты планируется установить и сколько дополнительного места на диске они займут. Чтобы продолжить, введите y и нажмите ENTER, и установка продолжится.
Настройка Global ServerName для подавления предупреждений о синтаксисе
Далее мы добавим строку в файл /etc/apache2/apache2.conf, чтобы скрыть предупреждающее сообщение. Хотя это и безвредно, если вы не установите ServerName глобально, при проверке конфигурации Apache на наличие синтаксических ошибок вы получите следующее предупреждение:
sudo apache2ctl configtest $Output
AH00558: apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message
Syntax OKОткройте основной файл конфигурации с помощью текстового редактора:
sudo nano /etc/apache2/apache2.conf $Внутри, в конце файла, добавьте директиву ServerName, которая указывает на ваше основное доменное имя. Если у вашего сервера нет доменного имени, вы можете использовать его публичный IP-адрес:
Примечание: Если вы не знаете IP-адрес своего сервера, перейдите в раздел «Как узнать публичный IP-адрес своего сервера», чтобы узнать его.
По завершении сохраните и закройте файл.
Затем проверьте наличие синтаксических ошибок, введя:
sudo nano apache2ctl configtest $Поскольку мы добавили глобальную директиву ServerName, вы должны увидеть только это:
Output
Syntax OKПерезапустите Apache, чтобы изменения вступили в силу:
sudo nano systemctl restart apache2 $Теперь можно приступить к настройке брандмауэра.
Настройте брандмауэр для разрешения веб-трафика
Далее, если вы следовали инструкциям по первоначальной настройке сервера для включения брандмауэра UFW, убедитесь, что ваш брандмауэр разрешает HTTP- и HTTPS-трафик. Вы можете убедиться, что в UFW есть профиль приложения для Apache, как показано ниже:
sudo nano ufw app list $Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSHЕсли посмотреть на полный профиль Apache, то он должен показать, что он разрешает трафик по портам 80 и 443:
$ sudo ufw app info “Apache Full”
Output
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
۸۰,۴۴۳/tcpРазрешить входящий трафик для этого профиля:
$ sudo ufw allow in “Apache Full”Вы можете провести быструю проверку и убедиться, что все прошло по плану, посетив публичный IP-адрес вашего сервера в веб-браузере (если у вас нет этой информации, см. примечание под следующим заголовком, чтобы узнать, каким был ваш публичный IP-адрес раньше):
http://your_server_IP_addressВы увидите стандартную веб-страницу Apache для Ubuntu 16.04, предназначенную для информационных и тестовых целей. Она должна выглядеть примерно так:

Если вы видите эту страницу, ваш веб-сервер теперь правильно установлен и доступен через брандмауэр.
Поиск публичного IP-адреса вашего сервера
Если вы не знаете публичный IP-адрес вашего сервера, есть несколько способов узнать его. Обычно это адрес, который вы используете для подключения к серверу по SSH.
Из командной строки это можно узнать несколькими способами. Во-первых, можно воспользоваться утилитой iproute2, чтобы получить свой адрес, введя:
$ ip addr show eth0 | grep inet | awk ‘{ print $2; }’ | sed ‘s/\/.*$//’Это даст вам две или три строки. Все адреса допустимы, но ваш компьютер может использовать только один из них, поэтому попробуйте каждый.
Альтернативный метод — использовать инструмент curl, чтобы связаться с внешним лицом и сообщить ему, как он видит ваш сервер. Вы можете сделать это, запросив у конкретного сервера свой IP-адрес:
Независимо от того, какой метод вы используете для получения своего IP-адреса, вы можете ввести его в адресную строку веб-браузера, чтобы получить доступ к своему серверу.
Шаг 2 — Установка MySQL
Теперь, когда наш веб-сервер настроен, пора установить MySQL. MySQL — это система управления базами данных. По сути, она позволяет хранить, организовывать и получать доступ к информации в базах данных.
Мы снова можем использовать apt для загрузки и установки нашего программного обеспечения. На этот раз мы также установим несколько вспомогательных пакетов, которые помогут нам взаимодействовать между компонентами:
$ sudo apt-get install mysql-serverПримечание: В этом случае вам не нужно выполнять команду sudo apt-get update перед этой командой. Это связано с тем, что мы уже выполнили её в командах выше для установки Apache. Список пакетов на нашем компьютере должен быть актуален.
Вам снова будет показан список пакетов, которые будут установлены, а также объём места на диске, который они займут. Введите Y, чтобы продолжить.
Во время установки сервер попросит вас выбрать и подтвердить пароль для пользователя “root” MySQL. Это административная учётная запись MySQL с повышенными привилегиями. Её можно сравнить с учётной записью root на самом сервере (хотя настраиваемая учётная запись MySQL — это специальная учётная запись). Убедитесь, что это надёжный и уникальный пароль, и не оставляйте его пустым.
После завершения установки нам нужно запустить простой скрипт безопасности, который удалит некоторые опасные настройки по умолчанию и немного ограничит доступ к нашей системе базы данных. Запустите интерактивный скрипт, выполнив следующую команду:
$ mysql_secure_installationВам будет предложено ввести пароль, установленный для учётной записи root в MySQL. Затем вам будет предложено настроить плагин проверки пароля.
Предупреждение: Включение этой функции — своего рода суждение. При её включении пароли, не соответствующие заданным критериям, будут отклоняться MySQL с ошибкой. Это может вызвать проблемы, если вы используете слабый пароль вместе с программным обеспечением, которое автоматически настраивает учётные данные MySQL, например, пакетами Ubuntu для 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 (нет) в ответ на запрос:
Для остальных вопросов нажмите Y и Enter в каждом запросе. Это удалит часть анонимных пользователей и тестовую базу данных, отключит удалённый вход под учетной записью root и загрузит новые правила, чтобы MySQL немедленно принял внесённые нами изменения.
На этом этапе ваша система базы данных уже запущена и работает, и мы можем продолжить.
Шаг 3 — Установка PHP
PHP — это часть нашей системы, которая обрабатывает код для отображения динамического контента. Он может выполнять скрипты, подключаться к базам данных MySQL для извлечения информации и передавать обработанный контент на наш веб-сервер для отображения.
Мы снова можем использовать систему apt для установки наших компонентов. Также добавим несколько вспомогательных пакетов, чтобы PHP-код мог работать на сервере Apache и взаимодействовать с нашей базой данных MySQL:
$ sudo apt-get install php libapache2-mod-php php-mcrypt php-mysqlЭто должно установить PHP без проблем. Мы проверим это чуть позже.
В большинстве случаев нам нужно изменить способ, которым Apache обслуживает файлы при запросе каталога. В настоящее время, если пользователь запрашивает каталог с сервера, Apache сначала ищет файл index.html. Мы хотим указать нашему веб-серверу, что он должен отдавать предпочтение файлам PHP, поэтому сначала Apache ищет файл index.php.
Для этого введите следующую команду, чтобы открыть файл dir.conf в текстовом редакторе с правами root:
$ sudo nano /etc/apache2/mods-enabled/dir.confЭто будет выглядеть так:
Мы хотим переместить файл каталога PHP, выделенный выше, на первую позицию после спецификации DirectoryIndex, вот так:
Закончив, сохраните файл и закройте его, нажав Ctrl-X. Для сохранения нажмите Y, а затем Enter, чтобы подтвердить место сохранения файла.
После этого нам необходимо перезапустить веб-сервер Apache, чтобы наши изменения вступили в силу. Это можно сделать, введя следующую команду:
$ sudo systemctl restart apache2Мы также можем проверить состояние службы apache2 с помощью systemctl:
$ sudo systemctl status apache2Sample Output
● 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
├─۱۳۶۲۳ /usr/sbin/apache2 -k start
├─۱۳۶۲۶ /usr/sbin/apache2 -k start
├─۱۳۶۲۷ /usr/sbin/apache2 -k start
├─۱۳۶۲۸ /usr/sbin/apache2 -k start
├─۱۳۶۲۹ /usr/sbin/apache2 -k start
└─۱۳۶۳۰ /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 в less — постраничный просмотрщик, позволяющий прокручивать вывод других команд:
$ 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Наряду с массой другой информации вы найдете что-то вроде этого:
Output
…
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Если вы хотите установить более одного модуля, вы можете сделать это, перечислив каждый из них, разделив его пробелом, а затем выполнив команду apt-get install, например:
$ sudo apt-get install package1 package2 …На этом этапе ваш фреймворк LAMP установлен и настроен. Нам осталось протестировать PHP.
Шаг 4 — Тестирование обработки PHP на вашем веб-сервере
Чтобы проверить, что наша система правильно настроена для работы с PHP, мы можем создать очень простой PHP-скрипт.
Назовём этот скрипт info.php. Чтобы Apache мог найти файл и корректно его обработать, он должен храниться в определённой папке, которая называется корневой каталог веб-сайта.
В Ubuntu 16.04 этот каталог находится по адресу /var/www/html/. Создать файл в этом каталоге можно, выполнив команду:
$ sudo nano /var/www/html/info.phpОткроется пустой файл. Мы хотим поместить в него следующий текст, который является корректным PHP-кодом:
Когда закончите, сохраните и закройте файл.
Теперь мы можем проверить, корректно ли наш веб-сервер отображает контент, сгенерированный PHP-скриптом. Для этого достаточно открыть эту страницу в браузере. Вам снова понадобится публичный IP-адрес вашего сервера.
Адрес, по которому вы хотите зайти:
http://your_server_IP_address/info.phpСтраница, на которую вы попадете, должна выглядеть примерно так:

Страница, на которую вы попадете, должна выглядеть примерно так:
Эта страница, по сути, предоставляет информацию о вашем сервере с точки зрения PHP. Она полезна для отладки и проверки корректности применения настроек.
Если все прошло успешно, ваш PHP будет работать так, как и ожидалось.
После этого эксперимента вам, вероятно, захочется удалить этот файл, поскольку он может раскрыть информацию о вашем сервере неавторизованным пользователям. Для этого введите:
$ sudo rm /var/www/html/info.phpВы всегда можете заново создать эту страницу, если вам снова понадобится доступ к информации.










2 комментарии
Спасибо за очень хороший блог!
Если кому-то нужно экспертное мнение по поводу ведения блога, я посоветую ему/ей.
Загляните на эту страницу, продолжайте в том же духе!.