Установка стека LEMP в Debian 8

Published by Leave your thoughts

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

Данное руководство научит устанавливать все компоненты стека LEMP на сервер Debian 8. Поскольку сервер использует операционную систему Debian, один из дистрибутивов Linux, первый компонент уже установлен. Руководство поможет установить остальное.

Требования

  • Предварительно настроенный сервер Debian 8.
  • Пользователь с поддержкой sudo (инструкции по созданию такого пользователя – здесь).

 1: Установка Nginx

Для отображения веб-страниц используется производительный веб-сервер Nginx.

Все программное обеспечение, необходимое для установки веб-сервера, находится в стандартных репозиториях системы.

Поскольку это первое взаимодействие с системой пакетирования apt в текущей сессии, нужно обновить индекс пакетов. После этого можно установить Nginx.

sudo apt-get update
sudo apt-get install nginx

В Debian 8 Nginx автоматически запускается сразу после установки.

Если на сервере включен брандмауэр, нужно разрешить соединения сервиса Nginx. Во время установки Nginx регистрируется как сервис в ufw, потому разрешить трафик веб-сервера очень просто. Рекомендуется выбрать наиболее строгий профиль веб-сервера. Однако, поскольку на сервере ещё не настроен SSL, мы можем настроить только порт 80.

Чтобы включить этот профиль, введите:

sudo ufw allow 'Nginx HTTP'

Запросите состояние брандмауэра:

sudo ufw status

Команда должна вернуть такой результат:

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-адрес другие точки в сети.

curl -4 icanhazip.com

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

http://server_domain_or_IP

На экране должна появиться стандартная посадочная страница Nginx:

Welcome to nginx on Debian!
If you see this page, the nginx web server is successfully installed and working on Debian. Further configuration is required. […]

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

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

Чтобы установить MySQL, введите:

sudo apt-get install mysql-server

Система запросит пароль root MySQL.

После установки MySQL нуждается в настройке.

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

sudo mysql_secure_installation

Система предложит ввести root пароль MySQL, а затем изменить его. Если вас устраивает ваш пароль root, введите N.

Using existing password for root.
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.
You already have a root password set, so you can safely answer 'n'.
Change the root password? [Y/n] n
... skipping.

На остальные вопросы можно нажать Y и Enter. Это удалит анонимных пользователей и тестовые базы данных, отключит удалённый root логин и обновит текущие настройки MySQL.

3: Установка PHP

PHP – это серверный язык сценариев для создания динамических страниц.

Nginx не поставляется с поддержкой PHP, в отличие от других веб-серверов. Потому нужно установить php-fpm (fastCGI process manager). Так Nginx сможет передавать PHP-запросы на обработку. Также нужно установить вспомогательный пакет, необходимый для взаимодействия PHP с БД MySQL.

К сожалению, необходимые пакеты нельзя найти в стандартном репозитории системы (из-за проблем с лицензированием), поэтому нужно изменить список источников, чтобы загрузить их.

Откройте файл /etc/apt/sources.list.

sudo nano /etc/apt/sources.list

Добавьте в каждую строку после источника репозитории contrib и non-free.

Сохраните и закройте файл. Обновите список:

sudo apt-get update

Теперь можно установить php5-fpm и php5-mysql:

sudo apt-get install php5-fpm php5-mysql

Откройте главный конфигурационный файл php-fpm с привилегиями root.

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

Найдите в файле параметр cgi.fix_pathinfo; по умолчанию он закомментирован при помощи точки с запятой и имеет значение 1.

Это значение крайне опасно, поскольку в случае если запрашиваемый файл не найден, PHP будет пытаться выполнить ближайший к нему файл. Таким образом, злоумышленник может создать вредоносный запрос, который выполнит запрещённый сценарий.

Раскомментируйте параметр и измените его значение на 0.

cgi.fix_pathinfo=0

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

Перезапустите PHP:

sudo systemctl restart php5-fpm

4: Настройка Nginx для поддержки PHP

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

Для этого нужно отредактировать блок server (виртуальный хост).

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

Стандартный блок Nginx выглядит так:

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, чтобы файлы index.php обслуживались первыми.

Затем отредактируйте значение директивы server_name. Укажите здесь доменное имя или IP.

Чтобы настроить обработку PHP, нужно просто раскомментировать сегмент файла, отвечающий за обслуживание запросов PHP. Это блок location ~\.php$, фрагмент fastcgi-php.conf и сокет для 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 your_server_ip;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}

Сохраните и закройте файл. Проверьте конфигурационный файл на наличие ошибок.

sudo nginx -t

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

sudo systemctl reload nginx

5: Тестирование установки

Теперь установка стека LEMP полностью завершена. Убедитесь, что веб-сервер успешно обслуживает файлы PHP.

Для этого нужно создать тестовый файл info.php в каталоге document root.

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

Вставьте в него следующий код:

<?php
phpinfo();
?>

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

Теперь попробуйте открыть его в браузере:

http://server_domain_or_IP/info.php

На экране появится веб-страница, на которой вы найдёте подробную информацию о сервере. Если такая страница появилась, Nginx обслуживает файлы PHP.

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

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

Заключение

Теперь на сервере Debian 8 установлен программный стек LEMP – надёжная и гибкая платформа для развёртывания сайта или приложения.

Tags: , , , , ,

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

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


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>