Введение

Программный стек LEMP является группой открытого программного обеспечения, которое обычно используется для размещения динамических веб-сайтов и веб-приложений. LEMP — это аббревиатура от сокращения названий устанавливаемого программного обеспечения:

L - Linux, E - ENginx, M - MySQL(в нашем случае MariaDB), P - PHP.

Из данного руководства Вы узнаете, как проходит установка LEMP на VPS.

Для того, чтобы произвести описанные ниже действия, у Вас уже должна быть установлена ОС CentOS 7.

Шаг 1 — Установка Nginx.

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

Изначально необходимо добавить репозиторий:

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

После того как репозиторий будет добавлен, установить Nginx, используя команду yum:

yum install nginx

После этого на VPS будет установлен веб-сервер Nginx.

Когда установка будет завершена, произведите запуск командой:

systemctl start nginx.service

Для проверки работоспособности Вам необходимо открыть в веб-браузере IP адрес Вашего VPS.

http://server_domain_name_or_IP/

Вы должны увидеть стандартную страницу Nginx. Выглядит она примерно так:

Установка LEMP

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

После этого необходимо добавить Nginx в автозагрузку операционной системы. Для этого выполните команду:

systemctl enable nginx.service

 

Шаг 2 — Установка MySQL(MariaDB).

На данный момент на Вашем VPS установлен веб-сервер Nginx. Теперь необходимо установить MariaDB, как замена стандартному MySQL.

Информация из Wikipedia:

MariaDB — ответвление СУБД MySQL, разрабатываемое сообществом. Толчком к созданию стала необходимость обеспечения свободного статуса СУБД (под лицензией GPL), в противовес неопределенной политике лицензирования MySQL компанией Oracle.

Ведущий разработчик — Майкл Видениус, автор оригинальной версии MySQL и основатель компании Monty Program AB.

В MariaDB произошёл отказ от подсистемы хранения данных InnoDB и его замена на XtraDB. Также включены подсистемы Aria (en:Aria (storage engine)), PBXT и FederateX.

Так же, как и с Nginx, для установки MariaDB мы будем использовать yum. Вместе с основным пакетом MariaDB мы установим некоторые вспомогательные пакеты:

yum install mariadb-server mariadb

После того, как все пакеты будут установлены, производим запуск MariaDB:

systemctl start mariadb

Теперь MariaDB установлена и работает на VPS. Далее необходимо выполнить скрипт для изменения параметров. Этот скрипт изменит некоторые параметры безопасности и закроет возможность удалённого доступа к БД. Скрипт запускается следующей командой:

mysql_secure_installation

На данном этапе Вам потребуется ввести root пароль для MariaDB. Так как все сервисы были только что установлены, скорее всего у Вас нет этого пароля, и потому Вы можете оставить это поле пустым, просто нажав Enter.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
 ... Success!

Консоль в Linux устроена таким образом, что, когда Вы вводите пароль (при его запросе), Вы не видите, что символы вводятся. Это обычное явление и сделано в целях безопасности, для того чтобы злоумышленник не смог узнать какое количество символов используется в Вашем пароле.

Помимо ввода root пароля, Вам потребуется ответить еще на ряд вопросов, касающихся безопасности. Во всех случаях просто нажмите Enter и оставьте всё по умолчанию. Эти изменения позволят удалить некоторых пользователей и базы данные, создаваемые по умолчанию, а также отключат root доступ к БД.

Последнее, что необходимо сделать, — это добавить MariaDB в автозапуск. Это выполняется той же командой, как и Nginx, но с указанием сервиса mariadb.service:

systemctl enable mariadb.service

MariaDB установлена и настроена, можно двигаться дальше.

 

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

PHP необходим для обработки кода и генерации динамического контента.

Для установки PHP мы будем также использовать yum. Дополнительно произведём установку PHP-Mysql и PHP-FPM пакетов:

yum install php php-mysql php-fpm

Конфигурация PHP:

Сейчас мы имеем установленный PHP, но необходимо выполнить некоторую конфигурацию касающуюся безопасности.

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

vi /etc/php.ini

В данном файле необходимо найти и раскомментировать параметр: cgi.fix_pathinfo, и изменить его значение на 0. Для того, чтобы раскомментировать строку, Вам необходимо удалить символ: «;» перед строкой. Вам необходимо привести строку с данным параметром к виду:

cgi.fix_pathinfo=0

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

Далее необходимо отредактировать файл www.conf:

vi /etc/php-fpm.d/www.conf

Необходимой найти в файле строку listen и привести её к виду:

listen = /var/run/php-fpm/php-fpm.sock

Сохраняем и выходим.

Далее добавляем PHP-FPM в автозагрузку командой:

systemctl enable php-fpm.service

 

Шаг 4 — Настройка Nginx на работу с PHP.

Теперь у нас установлены все необходимые компоненты. Последнее, что необходимо выполнить, это указать Nginx, чтобы для обработки php он использовал PHP-FPM.

Это выполняется на уровне блоков в конфигурационном файле Nginx. Блоки имеют много общего с описанием виртуальных хостов в Apache.

Откройте дефолтный конфигурационный файл блоков, выполнив:

vi /etc/nginx/conf.d/default.conf

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

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Нам необходимо внести некоторые коррективы в данный код для нашего сайта.

  • Во-первых, мы должны добавить текст «index.php» в качестве первого значения для директивы «index». Данная директива указывает порядок индексных файлов. То есть при запросе вида «http://domain.com/» в первую очередь должен открываться файл index.php. Если файл index.php не будет найден, сервер попробует открыть следующий файл по списку и так далее.
  • Мы также должны изменить директиву «server_name», в которой необходимо указать имя домена нашего сайта или внешний IP VPS.
  • Сам файл конфигурации включает в себя несколько закомментированных строк, которые определяют процедуры обработки ошибок. Мы раскомментируем эти строки, чтобы включить этот функционал.
  • Для обработки PHP нам нужно будет раскомментировать либо добавить часть строк в другом разделе файла. Раздел «location». Также необходимо добавить директиву «try_files», чтобы убедиться, что Nginx не пропускает плохие запросы на наш обработчик PHP.

После изменений файл должен выглядеть следующим образом:

server {
    listen       80;
    server_name  server_domain_name_or_IP;

    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

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

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

systemctl restart nginx

Шаг 5 — Тест обработки PHP на веб-сервере.

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

Назовём его info.php. Для того, чтобы веб-сервер мог найти файл и правильно обработать его, он должен быть расположен в  определенном каталоге, который называется «корень».

В CentOS 7 эта папка находится в /usr/share/nginx/html. Мы можем создать файл в этом каталоге, выполнив:

vi /usr/share/nginx/html/info.php

Это откроет пустой файл. Далее необходимо в него поместить следующий текст, который является кодом PHP:

<?php phpinfo(); ?>

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

Теперь мы можем проверить, корректно ли веб-сервер отображает содержимое сгенерированное скриптом PHP. Для этого нам необходимо открыть файл, который мы ранее создали.

Адрес, который необходимо открыть в браузере, будет выглядеть так:

http://your_server_IP_address/info.php

В случае, если всё в порядке, Вы должны увидеть следующую страницу:

Установка LEMP

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

Если Вы увидели данную страницу, это указывает на то, что сервер настроен правильно, и PHP-FPM работает корректно.

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

rm /usr/share/nginx/html/info.php

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

Вывод

Установка LEMP завершена и его настройка, у вас есть много вариантов, как его использовать в дальнейшем. Эта платформа позволит Вам установить большинство видов веб-сайтов и веб-приложений на сервере.

Теги: