Установка Nginx, MySQL, PHP (LEMP) на CentOS 7

Введение

LEMP программное обеспечение — это группа программ с открытым исходным кодом, которые обычно устанавливаются одновременно для обеспечения работы динамических веб-сайтов и веб-приложений на хост-сервере. Этот термин на самом деле является аббревиатурой, которая представляет собой Lоперационная система inux, с ENginx веб-сервер. Данные сайта хранятся в MySQL (или MariaDB), а динамический контент обрабатывается программой PHP.

В этом руководстве по LEMP мы будем работать с PHP 7.4, установленным на сервере CentOS 7, используя MySQL в качестве системы управления базами данных.

Требование

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

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

Мы будем использовать Nginx, высокопроизводительный веб-сервер, для обслуживания веб-страниц посетителями сайта. Чтобы получить самую последнюю версию Nginx, мы сначала установим репозиторий EPEL, который предлагает дополнительное программное обеспечение для операционной системы CentOS 7.

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

$ sudo yum install epel-release

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

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

$ sudo yum install nginx

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

$ sudo systemctl start nginx

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

Navigate in a web browser to this URL :
http://server_public_IP/

Для демонстрации и тестирования будет показана стандартная веб-страница CentOS 7 Nginx.

Страница похожа на эту :

Nginx Default html на centos - Webhi

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

Выполните следующую команду, чтобы включить запуск Nginx при загрузке:

$ sudo systemctl enable nginx

Шаг 2 — Установка MySQL

Чтобы получить полное руководство, следуйте шагам из этого руководства: Установка MySQL на CentOS/Redhat 7/6 & Fedora 31/30.

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

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

Поскольку версия PHP, поставляемая по умолчанию на серверах CentOS 7, является устаревшей, нам потребуется установить сторонний репозиторий пакетов, чтобы загрузить и установить PHP 7+ на ваш сервер CentOS 7. Реми это известный репозиторий пакетов, который предлагает самые последние версии PHP для машин CentOS.

Выполните следующую команду, чтобы установить репозиторий Remi для CentOS 7:

$ sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

После завершения установки необходимо выполнить команду для включения репозитория, содержащего предпочтительную версию PHP. Чтобы убедиться, что релизы PHP 7+ доступны в репозитории Remi, выполните команду:

$ yum --disablerepo="*" --enablerepo="remi-safe" list php[7-9][0-9].x86_64

Вы увидите следующий результат:

Выходные данные :
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * remi-safe: mirrors.ukfast.co.uk
Available Packages
php70.x86_64            2.0-1.el7.remi                    remi-safe
php71.x86_64            2.0-1.el7.remi                    remi-safe
php72.x86_64            2.0-1.el7.remi                    remi-safe
php73.x86_64            2.0-1.el7.remi                    remi-safe
php74.x86_64            1.0-3.el7.remi                    remi-safe
php80.x86_64            1.0-3.el7.remi                    remi-safe

В этом уроке мы установим PHP 7.4. Чтобы получить PHP 7.4, используйте следующую команду для активации соответствующего пакета Remi:

$ sudo yum-config-manager --enable remi-php74

Теперь мы можем использовать yum для установки PHP, как обычно. Следующая команда установит все пакеты, необходимые для работы PHP 7.4 в Nginx и подключения к базам данных на основе MySQL:

$ sudo yum install php php-mysqlnd php-fpm

Чтобы убедиться, что PHP установлен в предпочтительной для вас версии, выполните следующие действия:

$ php --version
Выход :
PHP 7.4.8 (cli) (built: Jul 9 2020 16:09:41) (NTS)
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
  with Zend OPcache v7.4.21, Copyright (c), by Zend Technologies

Теперь PHP успешно установлен на вашей машине. После этого мы должны внести несколько изменений в стандартную установку. Чтобы облегчить редактирование файлов на CentOS, мы сначала установим nano, более удобный текстовый редактор, чем vi:

$ sudo yum install nano

Отредактируйте файл /etc/php-fpm.d/www.conf файл конфигурации в nano или в удобном для вас текстовом редакторе:

$ sudo nano /etc/php-fpm.d/www.conf

Теперь изучите директивы user и group. Если вы используете nano, вы можете искать эти фразы в текущем файле, используя CTRL + W.

Выходные данные :
…
user = apache
group = apache

Нам нужно изменить их на nginx:

Выходные данные :
…
user = nginx
group = nginx

Найдите listen следующую директиву. php-fpm будет прослушивать заданный хост и порт через TCP по умолчанию. Мы хотим обновить эту опцию, чтобы она прослушивала локальный файл сокета, так как это увеличит общую скорость работы сервера.

Найдите директивы listen.owner, listen.group, и listen.mode. По умолчанию эти строки закомментированы. Удалите предшествующую ; символ в начале строки, чтобы снять комментарий. После этого установите владельца и группу в nginx.

Измените строку, содержащую директиву listen, на:

listen = /var/run/php-fpm/php-fpm.sock;
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

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

Выполните следующую команду, чтобы включить и запустить php-fpm службу:

$ sudo systemctl start php-fpm
$ sudo systemctl enable php-fpm

Шаг 4 — Настройка Nginx для обслуживания PHP-страниц

На данный момент у нас есть все необходимые компоненты. Осталось только указать Nginx использовать наш PHP-процессор для динамического контента.

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

Чтобы продолжить, создайте новый файл в каталоге /etc/nginx/conf.d каталоге:

$ sudo nano /etc/nginx/conf.d/default.conf

Скопируйте приведенный ниже блок определения сервера PHP в ваш конфигурационный файл и не забудьте изменить директиву server_name на доменное имя или IP-адрес вашего сервера:

server {
    listen       80;
    server_name  server_public_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, чтобы применить изменения:

$ sudo systemctl restart nginx

Шаг 5 — Запустите PHP на Nginx.

Теперь мы создадим тестовую PHP-страницу, чтобы убедиться, что веб-сервер работает правильно.
В /usr/share/nginx/html создайте новый PHP-файл с именем info.php:

$ nano /usr/share/nginx/html/info.php
<?php
phpinfo();

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

Теперь давайте обратимся к файлу info в папке :

http://server_public_IP/info.php

Php информационный файл Nginx

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

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