Как установить Linux, Apache, MySQL, PHP (LAMP) в Ubuntu 16.04

Вступление

Стек «LAMP» - это группа программного обеспечения с открытым исходным кодом, которое обычно устанавливается вместе, чтобы сервер мог размещать динамические веб-сайты и веб-приложения. Этот термин на самом деле является аббревиатурой, обозначающей операционную системуLinux с веб-сервером spacheA. Данные сайта хранятся в базе данныхMySQL, а динамический контент обрабатываетсяPHP.

В этом руководстве мы установим стек LAMP на Ubuntu 16.04 Droplet. Ubuntu выполнит наше первое требование: операционная система Linux.

Предпосылки

Прежде чем вы начнете читать это руководство, у вас должна быть отдельная учетная запись пользователя без полномочий root с привилегиямиsudo, настроенными на вашем сервере. Вы можете узнать, как это сделать, выполнив шаги 1–4 вinitial server setup for Ubuntu 16.04.

Шаг 1: Установите Apache и разрешите в брандмауэре

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

Мы можем легко установить Apache с помощью диспетчера пакетов Ubuntu,apt. Менеджер пакетов позволяет без проблем устанавливать большинство программ из хранилища, поддерживаемого Ubuntu. Вы можете узнать больше оhow to use 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
OutputAH00558: 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-адрес вашего сервера:

Note

[.note] # Если вы не знаете IP-адрес своего сервера, перейдите к разделуhow to find your server’s public IP address, чтобы найти его.
#

/etc/apache2/apache2.conf

. . .
ServerName server_domain_or_IP

Сохраните и закройте файл, когда вы закончите.

Затем проверьте синтаксические ошибки, набрав:

sudo apache2ctl configtest

Поскольку мы добавили глобальную директивуServerName, все, что вы должны увидеть, это:

OutputSyntax OK

Перезапустите Apache, чтобы внести изменения:

sudo systemctl restart apache2

Теперь вы можете начать настройку брандмауэра.

Настройте брандмауэр, чтобы разрешить веб-трафик

Далее, предположив, что вы выполнили начальные инструкции по настройке сервера, чтобы включить брандмауэр UFW, убедитесь, что ваш брандмауэр допускает трафик HTTP и HTTPS. Вы можете убедиться, что UFW имеет профиль приложения для Apache, например:

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

Если вы посмотрите на профильApache Full, он должен показать, что он разрешает трафик на порты 80 и 443:

sudo ufw app info "Apache Full"
OutputProfile: 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"

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

http://your_server_IP_address

Вы увидите веб-страницу Ubuntu 16.04 Apache по умолчанию, которая предназначена для ознакомления и тестирования. Это должно выглядеть примерно так:

Ubuntu 16.04 Apache default

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

Как найти публичный IP-адрес вашего сервера

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

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

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

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

Альтернативный метод - использовать утилитуcurl для связи с внешней стороной, чтобы сообщить вам, какit видит ваш сервер. Вы можете сделать это, задав конкретному серверу ваш IP-адрес:

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

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

Шаг 2: Установите MySQL

Теперь, когда наш веб-сервер запущен и работает, пришло время установить MySQL. MySQL - это система управления базами данных. По сути, он будет организовывать и предоставлять доступ к базам данных, где наш сайт может хранить информацию.

Опять же, мы можем использоватьapt для приобретения и установки нашего программного обеспечения. На этот раз мы также установим некоторые другие «вспомогательные» пакеты, которые помогут нам связать наши компоненты друг с другом:

sudo apt-get install mysql-server

[.note] #Note: В этом случае вам не нужно запускатьsudo apt-get update перед командой. Это потому, что мы недавно запустили его в приведенных выше командах для установки Apache. Индекс пакета на нашем компьютере уже должен быть актуальным.
#

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

Во время установки ваш сервер попросит вас выбрать и подтвердить пароль для «root» пользователя MySQL. Это административная учетная запись в MySQL, которая имеет повышенные привилегии. Представьте себе, что это похоже на корневую учетную запись для самого сервера (однако настраиваемая вами сейчас учетная запись для MySQL). Убедитесь, что это надежный уникальный пароль, и не оставляйте его пустым.

Когда установка будет завершена, мы хотим запустить простой скрипт безопасности, который удалит некоторые опасные значения по умолчанию и немного заблокирует доступ к нашей системе баз данных. Запустите интерактивный скрипт, запустив:

mysql_secure_installation

Вам будет предложено ввести пароль, установленный для учетной записи root MySQL. Затем вас спросят, хотите ли вы настроитьVALIDATE PASSWORD PLUGIN.

[.warning] #Warning: Включение этой функции - это своего рода вызов для суждения. Если этот параметр включен, пароли, не соответствующие указанным критериям, будут отклоняться 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

Если вы включили проверку пароля, вам покажут надежность пароля для существующего корневого пароля и спросят, хотите ли вы изменить этот пароль. Если вас устраивает текущий пароль, введите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 для получения информации и передавать обработанный контент на наш веб-сервер для отображения.

Мы снова можем использовать систему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

Это будет выглядеть так:

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


    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm

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

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


    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm

Когда вы закончите, сохраните и закройте файл, нажавCtrl-X. Вам нужно будет подтвердить сохранение, набравY, а затем нажавEnter, чтобы подтвердить место сохранения файла.

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

sudo systemctl restart apache2

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

sudo systemctl status apache2
Sample 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
           ├─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 в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:

info.php

Когда вы закончите, сохраните и закройте файл.

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

Адрес, который вы хотите посетить, будет:

http://your_server_IP_address/info.php

Страница, на которую вы заходите, должна выглядеть примерно так:

Ubuntu 16.04 default PHP info

Эта страница в основном дает вам информацию о вашем сервере с точки зрения PHP. Это полезно для отладки и проверки правильности применения ваших настроек.

Если это было успешно, то ваш PHP работает как положено.

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

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

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

Заключение

Теперь, когда у вас установлен стек LAMP, у вас есть много вариантов, что делать дальше. По сути, вы установили платформу, которая позволит вам устанавливать большинство типов веб-сайтов и веб-программного обеспечения на ваш сервер.

В качестве следующего следующего шага вы должны убедиться, что соединения с вашим веб-сервером защищены, обслуживая их через HTTPS. Самый простой вариант здесь -use Let’s Encrypt, чтобы защитить свой сайт с помощью бесплатного сертификата TLS / SSL.

Некоторые другие популярные варианты:

  • Install Wordpress самая популярная система управления контентом в Интернете.

  • Set Up PHPMyAdmin для управления базами данных MySQL из веб-браузера.

  • Learn more about MySQL для управления базами данных.

  • Learn how to use SFTP для передачи файлов на ваш сервер и с него.

Note: Мы будем обновлять приведенные выше ссылки на нашу документацию по 16.04 по мере ее написания.

Related