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

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

В этом руководстве мы покажем, как установить стек LAMP на сервере Ubuntu 16.04. Операционная система Ubuntu позаботится о первом необходимом требовании, а как получить остальную часть мы объясним.

Требования

Самое главное – вы должны иметь регулярный доступ на сервер, но доступ должен осуществляться с помощью non-root учетной записи пользователя с привилегиями sudo. Вы можете узнать как настроить этот тип учетной записи прочитав вот это( первоначальная настройка сервера Ubuntu 16.04).

Если у вас уже все настроено – заходите на сервер. Вот теперь вы готовы к настройке LAMP)

Шаг 1: Установка веб-сервера Nginx

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

Поскольку в этой сессии мы используем apt впервые, то сначала нужно обновиться. Затем мы можем уже устанавливать сам сервер:

$ sudo apt-get update
$ sudo apt-get install nginx

В Ubuntu 16.04, Nginx после установки настроен на запуск.

Если у вас работает брандмауэр ufw, как указано в нашем первоначальном руководстве по установке, вам необходимо разрешить подключения к Nginx.

Рекомендуется настроить более ограничивающий профиль, который до сих пор пропускал много непонятного трафика. Так как мы не настроили SSL для нашего сервера, в данном руководстве все же  потребуется  разрешить проходить трафику через порт 80.

Вы можете это исправить, набрав в терминале:

$ sudo ufw allow ‘Nginx HTTP’

Проверьте изменения:

$ sudo ufw status

Вы должны увидеть HTTP трафик, который разрешили:

Output
Status: active
To Action From
— —— —-
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

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

В том случае, если  у вас нет доменного имени и  публичного IP-адреса вашего сервера, вы можете найти его, набрав   следующую команду в терминале:

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

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

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

$ http://server_domain_or_IP

nginx_default

Если вы видите похожую станицу у себя, то вы успешно установили Nginx!)

Шаг 2: Установка MySQL для управления данными сайта

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

Это достаточно легко сделать:

$ sudo apt-get install mysql-server

Вам попросят предоставить root(административный) пароль, чтобы впоследствии использовать его внутри системы MySQL.

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

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

$ sudo mysql_secure_installation

Вам будет предложено ввести административный пароль, который вы установили выше. Вас также спросят хотите ли вы настроить VALIDATE PASSWORD PLUGIN.

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

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

Шаг 3: Установка PHP для обработки данных

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

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

Поскольку Nginx не содержит встроенной обработки PHP как и некоторые другие веб-серверы, нам нужно установить php5-fpm (Менеджер процессов FastCGI). Помимо самого модуля, нам потребуется вспомогательный пакет, который позволит PHP общаться с нашей базы данных.

Давайте произведем установку, набрав в консоли:

$ http://sudo apt-get install php-fpm php-mysql

Настройка PHP Processor

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

Откройте главный конфигурационный файл php-fpm:

$ sudo nano /etc/php/7.0/fpm/php.ini

В этом файле мы ищем строчку, которая содержит "cgi.fix_pathinfo". Эта строчка будет закомментирована точкой с запятой (;) и равна 1, по умолчанию.

Раскомментируем ее и изменим значение, должно получиться так:

/etc/php/7.0/fpm/php.ini

cgi.fix_pathinfo=0

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

Теперь нам просто нужно перезапустить процессор PHP:

$ sudo systemctl restart php7.0-fpm

Шаг четвертый: настройка работы NGINX с PHP

Теперь у нас есть все составляющие сервера. Нам необходимо лишь связать NGINX и PHP для того чтоб он мог отрабатывать динамический контент. Мы можем сделать это на уровне блоков сервера (серверные блоки nginx похожи на виртуальные хосты Apache).

Откройте конфигурационный файл серверного блока nginx:

$ sudo nano /etc/nginx/sites-available/default

В настоящее время этот файл настройки выглядит следующим образом:

/etc/nginx/sites-available/default

server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}

В него нужно внести небольшие изменения.

Во-первых, нужно внести index.php как первое значение директивы index, чтобы индексные файлы PHP обслуживались при запросе каталога.

На месте директивы server_name, надо указать доменное имя или общедоступный IP сервера.

Для корректной  обработки PHP, нам нужно просто раскомментировать ту часть файла, которая обрабатывает запросы PHP. В нашем случае это блок location ~\.php$, который включает в себя фрагмент fastcgi-php.conf и сокет php-fpm.

Также необходимо раскомментировать блоки, которые имеют отношение к файлам .htaccess.

Изменения, которые нужно сделать в тексте  показаны ниже:

/etc/nginx/sites-available/default

server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name server_domain_or_IP;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}

Когда вы сделали вышеуказанные изменения, вы можете сохранить и закрыть файл.

Проверить  файл конфигурации на наличие  ошибок  можно набрав:

$ sudo nginx -t

Если появились какие-либо ошибки, то лучше вернитесь и проверьте файл, прежде чем продолжить.

Когда вы будете готовы,  перезагрузите Nginx, чтобы внести необходимые изменения:

$ sudo systemctl reload nginx

Шаг 5: Создание тестового PHP файла

Ваш  LAMP теперь должен быть полностью настроен. Мы должны протестировать его, чтобы проверить, что Nginx может корректно передавать .php файлы к нашему PHP процессору.

Мы можем сделать это путем создания тестового PHP файла в корневом  каталоге документов. Создайте новый файл info.php в корневом каталоге документов:

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

Введите или вставьте следующие строки в новый файл. Это и есть PHP код, который будет возвращать информацию о нашем сервере:

/var/www/html/info.php

<?php phpinfo();

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

Теперь вы можете посетить эту страницу в веб-браузере, набрав доменное имя вашего сервера или IP-адрес  с  /info.php в конце:

http://server_domain_or_IP/info.php

Вы должны увидеть веб-страницу, на которой увидите информацию о сервере:

 

php_info

Если вы видите нечто похожее у себя в браузере, то вы все настроили правильно.

После проверки лучше удалить файл, который вы создали, т.к он может содержать некоторые подсказки, которые могут помочь взломать вас. Чтобы удалить его, наберите:

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