Как установить LEMP стек (linux, nginx, mysql, php) на Ubuntu 16.04

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

Перед тем как продолжить работу, у нас должен быть сервер, виртуальный сервер или VPS с установленным дистрибутивом Ubuntu 16.04 Server,  а также возможность подключения к серверу по SSH для пользователя с административными (sudo) привилегиями. Собственно сам пользователь с правами sudo. Для тестового сервера подойдет и пользователь root.

Инструкция по настройке LEMP стек (linux, nginx, mysql, php) на Ubuntu 16.04 server

 

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

Что бы пользователи увидели ваш сайт необходимо установить веб-сервер nginx.
Все программное обеспечение включено в репозиторий Ubuntu и будет установлено из него.
Начиная с Ubuntu 16 команда можно использовать не полную команду apt-get, а просто apt

Перед первым использованием apt нужно обновить все индексы в системе выполнив команду:

Если система только установлена, можно обновить все ее компоненты и пакеты безопасности до последних версий, командой ( будет запрошен пароль пользователя для выполнения команды sudo):

Устанавливаем веб сервер Nginx:

В Ubuntu 16.04 после установки веб сервера nginx он будет сразу работать с базовыми настройками.

Если у вас нету домена привязанного к этому серверу или вы не знаете публичный ip адрес сервера, его можно узнать выполнив следующую команду

Вам нужна строка вида inet addr. Например для тестового сервера она может быть вида inet addr:192.168.1.101 если вы экспериментируете в своей локальной сети.

В браузере вводим этот ip адрес и если все сделано правильно видим стандартную страницу приветствия nginx

nginx lemp

 

Шаг № 2 Устанавливаем MySQL (базы данных)

У нас уже есть веб сервер, теперь нужно установить MySQL, систему управления базами данных, для сохранения и управления данными веб сайта.

Выполняем следующую команду в консоле (терминале) сервера:

В процессе установки нужно будет создать пароль для пользователя root (администратора) для управления всей системой MySQL. Забегая на перед, для каждого веб сайта нужно будет создавать отдельного пользователя с паролем отличающимся от администратора в целях безопасности.

После установки MySQL выполним настройки безопасности следующей командой:

Система запросит пароль root (администратора) MySQL. И предложит включит модуль валидации

Нажимаем No и пропускаем этот шаг.

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

Следующим шагом удаляем возможность создания баз данных анонимным пользователем (используется в тестовых средах для продакшин не подходит)

Нажимаем Yes

Отключаем возможность подключатся к MySQL пользователем root удаленно.

Нажимаем Yes

Удаляем тестовые базы

Нажимаем Yes

MySQL установлен и выполнены общие настройки безопасности.

Шаг № 3 Установка PHP

PHP в LEMP стеке отвечает за генерацию динамического контента, выполнение скриптов и обработку бизнес-логики веб-приложения.

В упрощенном виде, внешние запросы от посетителей веб-сайта «приходят» на веб-сервер (Nginx), который затем передаёт их в PHP-скрипты. PHP-скрипты выполняют обработку запроса, соединяются с MySQL сервером для записи или получения необходимой информации, а затем передают результат своей работы назад к веб-серверу.

Для установки PHP (вместе с необходимым для работы с MySQL компонентом) воспользуемся следующей командой:

Настройка PHP

PHP компоненты установлены, теперь произведем настройки для большей безопасности

Открываем конфигурацию php-fpm с правами root:

в открывшемся окне ищем параметр cgi.fix_pathinfo. Он закоментирован символом (;) и у него установлен параметр «1» по умолчанию.

Это очень не безопасная настройка PHP, поэтому находим этот параметр и делаем два изменения убираем символ коментирования (;) и меняем значение параметра на «0». Как показано ниже:

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

После этого нам нужно перезапустить php выполнив следующую команду:

Изменения будут применены.

Шаг № 4 Настраиваем Nginx на использование PHP

Все нужные компоненты установлены. Настраиваем Nginx на использование динамического контента PHP

Вносим изменения в группу по умолчанию сервер блока(директива server) Nginx:

По умолчанию server блок Nginx выглядит следующим образом:

Вносим некоторые изменения в этот файл.

  • Добавляем index.php после первого значения.
  • Изменяем значение server_name на домен сервера или публичный IP address.
  • Для PHP, раскоментируем сегмент для PHP запросов. Это будут location ~\.php$ location block, the included fastcgi-php.conf snippet, и сокеты связаные с php-fpm.
  • Также нужно раскомментировать блок location для файлов .htaccess. Сервер Nginx не обрабатывает эти файлы; если один из этих файлов попадёт в document root, его нельзя отображать пользователям.

Внесенные изменения выделены красным цветом:

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;
}

}

После внесения всех изменений сохраняем и закрываем файл.

Проверяем настройки nginx на синтаксические ошибки командой:

Если ошибок нету, то увидим результат:

Перезапускаем Nginx:

Шаг № 5 Создание PHP файла для проверки конфигурации

LEMP стек настрое ни готов к работе. Проверим Nginx на корректную работу с PHP.

Для этого создадим файл test.php в корневом каталоге веб сервера:

Добавим в файл следующий php код:

Сохраняем и закрываем файл.

В браузере вводим:

Если все сделано правильно, мы увидим страницу созданную php с информацией о сервер:

php lemp

 

Если вы увидели страницу похожую на эту, значит ваш LEMP стек готов и PHP c Nginx работают нормально. Удалите файл с сервера командой:

В итоге мы получили настроенный  LEMP стек на Ubuntu 16.04 server. Это дает огромные возможности для размещения своих веб ресурсов в интернете и предоставления информации пользователям.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *