Как установить Linux, Nginx, MySQL, PHP (LEMP) в ОС Centos 7 на VPS хостинге — Хостинг в Казахстане. Регистрация доменов.
Звоните +7 747 388-38-62   Войти

Как установить Linux, Nginx, MySQL, PHP (LEMP) в ОС Centos 7 на VPS хостинге

Введение

Набор приложений LEMP представляет собой группу программного обеспечения с открытым исходным кодом, которая обычно устанавливается вместе, чтобы размещать на сервере VPS хостинга динамические веб сайты и веб приложения. Данный термин LEMP является акронимом, который представляет набор из операционной систему Linux, с установленным веб сервером ENginx (который является заменой веб сервера Apache в наборе LAMP). Данные сайта хранятся в базе данных MySQL (либо MariaDB), а динамический контент обрабатывается процессором PHP.

В данном руководстве мы установим набор LEMP в операционную систему CentOS 7, установленную на виртуальный сервер VPS. Операционная система CentOS удовлетворяет первому требованию: операционная система на основе Linux.

 

Перед тем как начать

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

Примечание касательно SELinux: Если у вас проблемы с запуском веб сервера Nginx, убедитесь в правильной настройке контекста SELinux для конфигурационных файлов Nginx либо измените режим работы SELinux в permissive либо disabled.

 

Шаг первый — установка Nginx

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

Для добавления репозитория CentOS 7 EPEL, откройте командную строку и наберите следующую команду:

sudo yum install epel-release

Так как мы используем команду sudo, эти операции выполняются с привилегиями супер администратора. При выполнении система запросит у вас пароль root для проверки что вы обладаете полномочиями супер администратора.

Теперь, после того как репозиторий Nginx установлен в вашу систему, можно установить веб сервер Nginx при помощи команды yum:

sudo yum install nginx

В результате выполнения ваш веб сервер будет установлен.

После установки можно запустить Nginx на вашем виртуальном сервере VPS:

sudo systemctl start nginx

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

Откройте в адресной строке браузера:
http://server_domain_name_or_IP/

Вы увидите начальную страницу веб сервера Nginx по умолчанию для ОС CentOS 7, которая предназначена для отображения информации и для тестовых целей. Она должна выглядеть приблизительно следующим образом:

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

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

sudo systemctl enable nginx

Как определить публичный IP адрес своего VPS сервера

Если Вы не знаете какой у вашего VPS сервера публичный IP адрес, есть множество способов его определения. Обычно, это адрес, который вы используете для соединения с сервером через SSH.

Из командной строки вы можете определить его несколькими способами. Для начала, мы можете воспользоваться пакетом iproute2 чтобы определить свой адрес, наберите команду:

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

В результате система выдаст одну или две строки. Обе содержать корректные адреса, но ваш сервер может использовать лишь один из них, так что попробуйте оба.

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

curl http://icanhazip.com

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

 

Шаг второй — установка базы данных MySQL (либо MariaDB)

После того как мы запустили наш веб сервер, самое время установить систему управления базами данных MariaDB, замену для СУБД MySQL. СУБД MariaDB является ответвлением от MySQL, разрабатываемым сообществом. В общем, эта СУБД организует и предоставляет доступ к базам данных, где может храниться информация с наших веб сайтов.

Опять, мы можем использовать команду yum для получения и установки необходимого программного обеспечения. В этот раз, мы также установим некоторые вспомогательные пакеты, с помощью которых настроим компоненты для связи друг с другом:

sudo yum install mariadb-server mariadb

После завершения установки, нам нужно запустить СУБД MariaDB при помощи следующей команды:

sudo systemctl start mariadb

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

sudo mysql_secure_installation

Скрипт запросит у вас текущий пароль root. Так как вы только что установили MySQL, скорее всего у вас его нет, так что оставьте его пустым, нажав на Enter. Затем скрипт запросит у вас хотите ли установить пароль для root. Нажмите Y, и следуйте дальнейшим инструкциям:

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!

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

Последним шагом будет загрузка сервера баз данных MariaDB при запуске системы. Для этого наберите в командной строке следующую команду:

sudo systemctl enable mariadb

На данном этапе ваша система управления базами данных установлена и можно приступить к следующим действиям.

 

Шаг третий — установка PHP

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

Для установки необходимых компонентов нам нужно еще раз воспользоваться командой yum. Заодно мы установим пакеты php-mysql и php-fpm:

sudo yum install php php-mysql php-fpm

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

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

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

sudo vi /etc/php.ini

В данном файле нам нужно найти параметр cgi.fix_pathinfo. Он будет закомментирован символом (;) и по умолчанию имеет значение «1».

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

Что бы изменить оба этих условия необходимо раскомментировать данный параметр и установить ему значение «0» следующим образом:

/etc/php.ini excerpt
cgi.fix_pathinfo=0

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

Затем откройте конфигурационный файл php-fpm, который называется www.conf:

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

Найдите параметр listen и измените его значение следующим образом:

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

Затем, найдите строки с параметрами listen.owner и listen.group, раскомментируйте их.Они должны выглядеть следующим образом:

listen.owner = nobody
listen.group = nobody

И наконец, найдите строки с параметрами user и group, измените их значение и «apache» на «nginx»:

user = nginx
group = nginx

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

Теперь осталось лишь запустить PHP, набрав следующую команду:

sudo systemctl start php-fpm

Тем самым мы активируем все изменения, произведенные выше.

Следующим шагом активируем автоматический запуск php-fpm при загрузке системы:

sudo systemctl enable php-fpm

Шаг четвертый — Настройка Nginx для обработки PHP страниц

На данном этапе у нас установлены все необходимые компоненты. Единственное изменение конфигурации, которое необходимо сделать, — это сказать Nginx, чтобы использовал PHP для динамического контента.
Чтобы это сделать, откроем конфигурационный файл серверного блока Nginx по умолчанию, набрав команду:

sudo 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 параметр index.php, это позволит первично обрабатывать индексные файлы PHP при запросе каталога
  • Также необходимо изменить директиву server_name, указав доменное имя или IP адрес нашего сервера
  • Изменяемый конфигурационный файл содержит некоторые закомментированные строки, которые определяют процедуры обработки ошибок. Необходимо раскомментировать их, что бы активировать их функциональность.
  • Для непосредственной обработки PHP необходимо так же раскомментировать часть другого раздела. Также необходимо добавить директиву try_files, чтобы веб-сервер Nginx не пропускает подозрительные запросы на PHP.

Все изменения, которые необходимо внести в конфигурационный файл default.conf, отмечены красным цветом. Для упрощения вы можете просто скопировать и вставить весь нижеописанный код, а после заменить в нем параметр server_name на соответствующее доменное имя или IP адрес.

server {
    listen       80;
    server_name  server_domain_name_or_IP;

    # note that these lines are originally from the "location /" block
    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 следующей командой, чтобы измененные параметры вступили в силу.

sudo systemctl restart nginx

Шаг пятый — проверка PHP на вашем веб-сервере

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

Для этого назовем скрипт info.php. Для того, чтобы Nginx смог найти данный файл и правильно его обработать, он должен быть сохранен в определенный каталог, который называется «web root».

В ОС Centos 7 данная директория расположена в /usr/share/nginx/html/. Создадим необходимый нам файл в указанной директории следующей командой:

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

В созданный пустой файл info.php поместим следующий PHP код:


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

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

http://IP_адрес_вашего_сервера/info.php

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

Данная страница в основном отображает информацию о вашем сервере с точки зрения PHP. Данная процедура полезна для отладки и проверки применения настроек.

Если ваша веб-страница отображает схожую информацию — ваш PHP работает должным образом.
После проверки PHP желательно удалить созданный файл, поскольку он отображает информацию о вашем сервере неавторизованным пользователям. Для этого вы можете воспользоваться следующей командой:

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

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