Введение
Программный стек 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. Выглядит она примерно так:
Если Вы видите данную страницу, значит веб-сервер установлен и настроен правильно.
После этого необходимо добавить 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
В случае, если всё в порядке, Вы должны увидеть следующую страницу:
Эта страница отображает информацию о вашем сервере с точки зрения PHP. Это полезно для отладки, а также для того, чтобы убедиться, что настройки применяются правильно.
Если Вы увидели данную страницу, это указывает на то, что сервер настроен правильно, и PHP-FPM работает корректно.
После тестирования Вы можете удалить данный файл, поскольку в дальнейшем этот файл может представить информацию о Вашем сервере неавторизованным пользователям. Удаление можно сделать командой:
rm /usr/share/nginx/html/info.php
Вы всегда сможете создать данный файл заново, если информация из него потребуется Вам снова.
Вывод
Установка LEMP завершена и его настройка, у вас есть много вариантов, как его использовать в дальнейшем. Эта платформа позволит Вам установить большинство видов веб-сайтов и веб-приложений на сервере.