One place for hosting & domains

      стека

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


      Введение

      Программный стек LEMP — это комплекс программного обеспечения, используемый для обслуживания динамических веб-страниц и веб-приложений, написанных на PHP. Название LEMP — это акроним, включающий операционную систему Linux с веб-сервером Nginx (произносится “Engine-X”). Данные серверной части хранятся в базе данных MySQL, а динамическая обработка выполняется PHP.

      За слой базы данных в стеке LEMP обычно отвечает сервер базы данных MySQL, но до выхода CentOS 8 сервер MySQL не был доступен в репозиториях CentOS по умолчанию. В результате MariaDB, разработанное сообществом энтузиастов ответвление MySQL, получило широкое распространение в качестве альтернативы MySQL и используемой по умолчанию системы управления базами данных при использовании стека LEMP на серверах CentOS. MariaDB представляет собой упрощенную замену оригинального сервера MySQL, что на практике означает, что вы можете переключаться на MariaDB без необходимости внесения каких-либо изменений в конфигурацию или код вашего приложения.

      В этом руководстве вы установите стек LEMP на сервер с CentOS 8. Хотя MySQL доступен в используемых по умолчанию репозиториях в CentOS 8, в этом руководстве мы рассмотрим процесс настройки стека LEMP с MariaDB в качестве системы управления базами данных.

      Предварительные требования

      Для выполнения этого обучающего руководства вам потребуется доступ к серверу CentOS 8, пользователь без прав root с привилегиями sudo и и активный брандмауэр, установленный на сервере. Чтобы выполнить настройку, воспользуйтесь руководством по начальной настройке сервера CentOS 8.

      Шаг 1 — Установка веб-сервера Nginx

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

      Установите пакет nginx с помощью следующей команды:

      При получении запроса введите y для подтверждения того, что вы хотите установить nginx.

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

      • sudo systemctl start nginx

      Если вы активировали брандмауэр firewalld в соответствии с руководством по начальной настройке сервера, вам нужно будет разрешить подключение к Nginx. Следующая команда будет постоянно активировать подключения по HTTP, запущенные на порту 80 по умолчанию:

      • sudo firewall-cmd --permanent --add-service=http

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

      • sudo firewall-cmd --permanent --list-all

      Вывод будет выглядеть следующим образом:

      Output

      public target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client http ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

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

      • sudo firewall-cmd --reload

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

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

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

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

      Команда выведет несколько IP-адресов. Вы можете попробовать каждый из них в своем браузере.

      Также вы можете проверить доступность IP-адреса из других мест в интернете:

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

      Страница Nginx по умолчанию в CentOS 8

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

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

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

      Для установки данного ПО запустите следующую команду:

      • sudo dnf install mariadb-server

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

      • sudo systemctl start mariadb

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

      • sudo mysql_secure_installation

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

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

      Далее вы можете использовать клавиши Y и ENTER, чтобы принять ответы по умолчанию для всех последующих вопросов. В результате вы удалите ряд анонимных пользователей и тестовую базу данных, отключите возможность удаленного входа пользователя root и загрузите новые правила, чтобы внесенные изменения немедленно активировались на сервере.

      После выполнения указанных выше действий выполните вход в консоль MariaDB с помощью следующей команды:

      В результате будет установлено подключение к серверу MariaDB с помощью пользователя root базы данных с правами администратора, который логически выводится в результате использования sudo при запуске данной команды. Результат должен выглядеть следующим образом:

      Output

      Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 9 Server version: 10.3.17-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. MariaDB [(none)]>

      Обратите внимание, что вам не потребуется предоставлять пароль для подключения в качестве пользователя root. Это работает, поскольку используемый по умолчанию метод аутентификации для пользователя MariaDB с правами администратора — unix_socket, а не пароль. Хотя это может выглядеть как возможный источник проблем с безопасностью, на самом деле эти действия делают сервер базы данных более защищенным, поскольку единственные пользователи, которые могут выполнять вход в систему с правами доступа root для MariaDB, — это пользователи системы с привилегиями sudo, подключенные с использованием консоли или через приложение, использующее аналогичные привилегии. На практике это означает, что вы не сможете использовать root пользователя базы данных с правами администратора для подключения из вашего приложения PHP.

      Для дополнительной безопасности рекомендуется иметь специальные аккаунты пользователей с менее обширными привилегиями, особенно если вы планируете использовать несколько баз данных на сервере. Чтобы продемонстрировать такую настройку, мы создадим базу данных с именем example_database и пользователя с именем example_user, но вы можете использовать собственные имена.

      Чтобы создать новую базу данных, запустите следующую команду в консоли MariaDB:

      • CREATE DATABASE example_database;

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

      • GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

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

      Очистите привилегии, чтобы они были сохранены и доступны в текущем сеансе:

      После этого закройте оболочку MariaDB:

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

      Обратите внимание на флаг -p в этой команде, который будет запрашивать пароль, который вы задаете при создании пользователя example_user. После входа в консоль MariaDB убедитесь, что у вас есть доступ к базе данных example_database:

      Результат будет выглядеть следующим образом:

      Output

      +--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)

      Чтобы закрыть оболочку MariaDB, введите следующую команду:

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

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

      Вы установили Nginx для обслуживания вашего контента и MariaDB для хранения и управления данными. Теперь вы можете установить PHP для обработки кода и генерации динамического контента для веб-сервера.

      Хотя Apache встраивает интерпретатор PHP в каждый запрос, Nginx требуется внешняя программа для обработки PHP и организации моста между самим интерпретатором PHP и веб-сервером. Это позволяет обеспечить более высокую производительность на большинстве веб-сайтов на базе PHP, но для этого необходимо выполнить дополнительную настройку. Вы должны установить php-fpm, т.е. “менеджер процессов PHP fastCGI”, и указать Nginx на необходимость передачи запросов PHP данному программному обеспечению. Также вам потребуется php-mysqlnd, модуль PHP, который позволяет PHP взаимодействовать с базами данных MySQL. Ключевые PHP пакеты автоматически будут установлены в качестве зависимостей.

      Для установки пакетов php-fpm и php-mysql воспользуйтесь следующей командой:

      • sudo dnf install php-fpm php-mysqlnd

      После завершения установки вам потребуется изменить файл /etc/php-fpm.d/www.conf, чтобы задать несколько параметров.

      Предоставляемый с CentOS 8 по умолчанию текстовый редактор — vi. vi очень мощный текстовый редактор, но освоить работу с ним неопытным пользователям достаточно сложно. Вы можете установить более удобный для пользователя редактор, например, nano, для облегчения редактирования файлов конфигурации на сервере CentOS 8:

      Теперь откройте файл конфигурации /etc/php-fpm.d/www.conf с помощью nano или другого выбранного вами редактора:

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

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

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

      …
      ; Unix user/group of processes
      ; Note: The user is mandatory. If the group is not set, the default user's group
      ;       will be used.
      ; RPM: apache user chosen to provide access to the same directories as httpd
      user = apache
      ; RPM: Keep a group allowed to write in log dir.
      group = apache

      Вы можете заметить, что для переменных user и group задано значение apache. Нам нужно изменить значения на nginx:

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

      …
      ; RPM: apache user chosen to provide access to the same directories as httpd
      user = nginx
      ; RPM: Keep a group allowed to write in log dir.
      group = nginx

      Сохраните и закройте файл после завершения редактирования. Если вы используете nano, нажмите CTRL + X, а затем нажмите Y и ENTER.

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

      • sudo systemctl start php-fpm

      Перезапустите веб-сервер Nginx, чтобы он смог использовать файлы конфигурации, созданные при установке php-fpm:

      • sudo systemctl restart nginx

      Теперь ваш веб-сервер полностью настроен. На следующем шаге мы создадим PHP скрипт для тестирования, чтобы убедиться, что все работает ожидаемым образом.

      Шаг 4 — Тестирование PHP с помощью Nginx

      В CentOS 8 при установке php-fpm по умолчанию автоматически создаются файлы конфигурации, которые позволят вашему веб-серверу Nginx обрабатывать файлы .php в корневой директории документов по умолчанию, расположенной в /usr/share/nginx/html. Вам не потребуется вносить какие-либо изменения в конфигурацию Nginx для обеспечения корректной работы PHP на вашем веб-сервере.

      Единственное изменение, которое мы будем вносить, — это изменение параметров разрешений по умолчанию в корневой папке документов Nginx. Так вы сможете создавать и изменять файлы в данной папке, используя обычного системного пользователя без необходимости добавлять к каждой команде sudo.

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

      • sudo chown -R sammy.sammy /usr/share/nginx/html/

      Теперь мы создадим тестовую страницу PHP, чтобы убедиться, что веб-сервер работает ожидаемым образом.

      Создайте новый файл PHP с именем info.php в директории /usr/share/nginx/html:

      • nano /usr/share/nginx/html/info.php

      Следующий код PHP будет отображать информацию о текущей среде PHP, которая запущена на сервере:

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

      <?php
      
      phpinfo();
      

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

      Теперь мы можем проверить, может ли наш веб-сервер корректно отображать содержимое, созданное скриптом PHP. Перейдите в браузер и вставьте в адресную строку имя хоста вашего сервера или его IP-адрес, добавив /info.php:

      http://server_host_or_IP/info.php
      

      Вы увидите приблизительно следующую страницу:

      Отображаемая по умолчанию страница с данными PHP в CentOS 8

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

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

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

      Шаг 5 — Тестирование подключения к базе данных для PHP (необязательно)

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

      Во-первых, подключитесь к консоли MariaDB с пользователем базы данных, созданным на шаге 2 настоящего руководства:

      Создайте таблицу с именем todo_list. Из консоли MariaDB запустите следующее выражение:

      CREATE TABLE example_database.todo_list (
          item_id INT AUTO_INCREMENT,
          content VARCHAR(255),
          PRIMARY KEY(item_id)
      );
      

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

      • INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

      Чтобы подтвердить, что данные были успешно сохранены в таблицу, запустите следующую команду:

      • SELECT * FROM example_database.todo_list;

      Результат будет выглядеть следующим образом:

      Output

      +---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)

      Убедившись в том, что у вас есть надлежащие данные в тестовой таблице, вы можете закрыть консоль MariaDB:

      Теперь вы можете создать скрипт PHP, который будет подключаться к MariaDB и запрашивать ваше содержимое. Создайте новый файл PHP в пользовательском корневом веб-каталоге в предпочитаемом вами редакторе. Мы будем использовать nano:

      • nano /usr/share/nginx/html/todo_list.php

      Добавьте в скрипт PHP следующие строки:

      /usr/share/nginx/html/todo_list.php

      <?php
      $user = "example_user";
      $password = "password";
      $database = "example_database";
      $table = "todo_list";
      
      try {
        $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
        echo "<h2>TODO</h2><ol>";
        foreach($db->query("SELECT content FROM $table") as $row) {
          echo "<li>" . $row['content'] . "</li>";
        }
        echo "</ol>";
      } catch (PDOException $e) {
          print "Error!: " . $e->getMessage() . "<br/>";
          die();
      }
      

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

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

      http://server_host_or_IP/todo_list.php
      

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

      Пример списка дел PHP

      Это означает, что ваша среда PHP готова к подключению и взаимодействию с вашим сервером MariaDB.

      Заключение

      В этом руководстве вы создали гибкую основу для отображения веб-сайтов и приложений, написанных на PHP, для ваших посетителей, используя Nginx в качестве веб-сервера. Вы настроили Nginx для обработки запросов PHP с помощью php-fpm, а также выполнили настройку базы данных MariaDB для хранения данных вашего сайта.



      Source link

      Установка и настройка стека LEMP с помощью Software Collections в CentOS 7


      Автор выбрал Apache Software Foundation для получения пожертвования в размере $100 в рамках программы Write for DOnations.

      Введение

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

      Компоненты стека LEMP иногда устанавливаются с помощью репозитория EPEL CentOS 7. Однако этот репозиторий содержит устаревшие пакеты. Например, вы не можете установить версию PHP старше 5.4.16 из EPEL, хотя этот релиз не поддерживается уже длительное время. Для получения новых версий программного обеспечения рекомендуется использовать набор Software Collections, также известный как SCL. SCL — это коллекции ресурсов для разработчиков, предоставленные RedHat, которые позволяют использовать различные версии программного обеспечения в одной и той же системе без какого-либо влияния на ранее установленные пакеты.

      В этом руководстве вы установите стек LEMP на сервер с CentOS 7. Операционная система CentOS отвечает за работу компонентов Linux. Вы установите остальные компоненты с помощью репозитория Software Collections, а затем настроите их для обслуживания простой веб-страницы.

      Предварительные требования

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

      Шаг 1 — Активация репозитория Software Collections

      Для получения доступа к SCL для CentOS установите release-файл для Software Collections в CentOS:

      • sudo yum install centos-release-scl

      Просмотрите список доступных пакетов SCL с помощью следующей команды:

      • yum --disablerepo='*' --enablerepo='centos-sclo-rh' --enablerepo='centos-sclo-sclo' list available

      Для предотвращения конфликтов в рамках всей системы пакеты SCL устанавливаются в директорию /opt/rh. Это позволяет установить, например, Python 3.5 на компьютере с CentOS 7 без удаления или вмешательства в работу Python 2.7.

      Все файлы конфигурации для пакетов SCL хранятся в соответствующей директории внутри директории /etc/opt/rh/. Пакеты SCL содержат скрипты, которые определяют переменные среды, необходимые для использования приложений внутри пакета, например, PATH, LD_LIBRARY_PATH и MANPATH. Эти скрипты хранятся в файловой системе в каталоге /opt/rh/package-name/enable.

      Теперь вы можете начать установку пакетов, описанных в этом руководстве.

      Шаг 2 — Установка сервера Web Nginx

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

      Установите Nginx с помощью следующей команды yum. Обязательно замените выделенное значение версией Nginx, которую вы хотите установить; самая последняя версия будет иметь самый большой номер в имени пакета (112 на момент написания статьи):

      • sudo yum install rh-nginx112

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

      • sudo systemctl start rh-nginx112-nginx

      Проверьте, что Nginx запущен с помощью команды systemctl status​​​:

      • sudo systemctl status rh-nginx112-nginx

      Output

      ● rh-nginx112-nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/rh-nginx112-nginx.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2018-03-19 15:15:43 UTC; 1min 17s ago Main PID: 10556 (nginx) CGroup: /system.slice/rh-nginx112-nginx.service ├─10556 nginx: master process /opt/rh/rh-nginx112/root/usr/sbin/nginx ├─10557 nginx: worker process └─10558 nginx: worker process Mar 19 15:15:43 lemp-centos-222 systemd[1]: Starting The nginx HTTP and reverse proxy server... Mar 19 15:15:43 lemp-centos-222 nginx-scl-helper[10541]: nginx: the configuration file /etc/opt/rh/rh-nginx... ok Mar 19 15:15:43 lemp-centos-222 nginx-scl-helper[10541]: nginx: configuration file /etc/opt/rh/rh-nginx112/...ful Mar 19 15:15:43 lemp-centos-222 systemd[1]: Started The nginx HTTP and reverse proxy server. Hint: Some lines were ellipsized, use -l to show in full.

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

      • sudo yum install firewalld

      После этого вы сможете запустить службу firewalld:

      • sudo systemctl start firewalld

      Затем добавьте ряд правил брандмауэра, чтобы разрешить доступ SSH-доступ к вашему серверу и подключение через HTTP и HTTPS к Nginx:

      • sudo firewall-cmd --permanent --add-service=ssh
      • sudo firewall-cmd --zone=public --permanent --add-service=http
      • sudo firewall-cmd --zone=public --permanent --add-service=https

      Перезапустите firewalld для вступления в силу новых правил брандмауэра:

      • sudo firewall-cmd --reload

      Подробнее о firewalld см. в статье Настройка брандмауэра с помощью FirewallD в CentOS 7.

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

      Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете открытый IP-адрес вашего сервера, вы можете найти его, введя в терминал следующую команду:

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

      http://server_domain_or_IP
      

      Страница Nginx по умолчанию

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

      • sudo systemctl enable rh-nginx112-nginx

      Сервер Nginx установлен, и теперь вы можете перейти к установке программного обеспечения для работы с базами данных MariaDB.

      Шаг 3 — Установка MariaDB для управления данными сайта

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

      Установите MariaDB с помощью следующей команды. Снова замените выделенное значение номером версии, которую вы хотите установить, самый большой номер является номером самой последней версии (102 на момент написания):

      • sudo yum install rh-mariadb102

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

      • sudo systemctl start rh-mariadb102-mariadb

      После этого службу MariaDB можно считать установленной и запущенной. Однако ее настройка еще не завершена.

      Для обеспечения безопасности MariaDB устанавливается вместе с скриптом безопасности, который напоминает вам о необходимости изменения небезопасных настроек по умолчанию. Запустите скрипт, введя следующую команду:

      • source /opt/rh/rh-mariadb102/enable
      • 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 authorization.
      
      Set root password? [Y/n] Y
      New password: password
      Re-enter new password: password
      Password updated successfully!
      Reloading privilege tables..
       ... Success!
      . . .
      

      Для остальных вопросов нажмите клавишу ENTER для использования значения по умолчанию. В результате вы должны удалить ряд анонимных пользователей и тестовую базу данных, отключить возможность удаленного входя для root и загрузить эти новые правила, чтобы MariaDB немедленно использовала внесенные нами изменения.

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

      • sudo systemctl enable rh-mariadb102-mariadb

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

      Шаг 4 — Установка и настройка PHP

      Теперь у вас есть Nginx для обслуживания ваших страниц и MariaDB для хранения и управления данными, однако у вас до сих пор не установлено ПО, которое может генерировать динамическое содержание. Именно для этого и нужен PHP.

      Поскольку Nginx не поддерживает нативную обработку PHP, как некоторые другие веб-серверы, вам потребуется установить php-fpm, т.е. «менеджер процессов fastCGI». Затем вы должны будете настроить Nginx, чтобы передавать PHP-запросы этому программному продукту.

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

      • sudo yum install rh-php71-php-fpm rh-php71-php-mysqlnd

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

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

      • sudo vi /etc/opt/rh/rh-php71/php.ini

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

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

      Измените оба эти условия, разкомментировав строку и установив значение «0»:

      71/php.ini’>/etc/opt/rh/rh-php71/php.ini

      cgi.fix_pathinfo=0
      

      Сохраните и закройте файл после завершения редактирования (нажмите ESC, введите :wq, а затем нажмите ENTER).“”

      Теперь откройте файл конфигурации php-fpm по адресу www.conf​​​​:

      • sudo vi /etc/opt/rh/rh-php71/php-fpm.d/www.conf

      По умолчанию этот файл настроен для работы с сервером Apache. Поскольку на вашем сервере установлен Nginx, найдите строки, которые устанавливают user и group и измените их значения с «apache» на «nginx»:

      71/php-fpm.d/www.conf’>/etc/opt/rh/rh-php71/php-fpm.d/www.conf

      user = nginx
      group = nginx
      

      Затем сохраните и закройте файл.

      Теперь запустите процессор PHP с помощью следующей команды:

      • sudo systemctl start rh-php71-php-fpm

      Активируйте запуск php-fpm при загрузке:

      • sudo systemctl enable rh-php71-php-fpm

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

      Шаг 5 — Настройка Nginx для использования процессора PHP

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

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

      • sudo vi /etc/opt/rh/rh-nginx112/nginx/nginx.conf

      Раскомментируйте блок location ~ .php$ (сегмент файла, обрабатывающий запросы PHP и находящийся внутри блока server) и его содержимое, удалив символ решетки (#) в начале строки. Также вам нужно обновить параметр fastcgi_param и указать значение SCRIPT FILENAME $document_root$fastcgi_script_name. Это позволит PHP узнать местоположение документа root, где он сможет найти файлы для обработки.

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

      /etc/nginx/sites-available/default

      ...
      server {
          listen       80 default_server;
          listen       [::]:80 default_server;
          server_name  _;
          root         /opt/rh/rh-nginx112/root/usr/share/nginx/html;
      
          # Load configuration files for the default server block.
          include      /etc/opt/rh/rh-nginx112/nginx/default.d/*.conf;
      
          location / {
          }
      
          error_page 404 /404.html;
          location = /40x.html {
          }
      
          error_page 500 502 503 504  /50x.html;
          location = /50x.html {
          }
      
          # proxy the PHP scripts to Apache listening on 127.0.0.1:80
          #
          #location ~ .php$ {
          #    proxy_pass   http://127.0.0.1;
          #}
      
          # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
          #
          location ~ .php$ {
              root           html;
              fastcgi_pass   127.0.0.1:9000;
              fastcgi_index  index.php;
              fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include        fastcgi_params;
          }
      
          # deny access to .htaccess files, if Apache's document root
          # concurs with nginx's one
          #
          #location ~ /.ht {
          #    deny  all;
          #}
      }
      ...
      

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

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

      • source /opt/rh/rh-nginx112/enable
      • sudo nginx -t

      При появлении сообщений о каких-либо ошибках, вернитесь и повторно проверьте ваш файл, прежде чем продолжать.

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

      • sudo systemctl reload rh-nginx112-nginx

      Теперь, когда Nginx, PHP и MariaDB были установлены и настроены, осталось только подтвердить, что настройка стека LEMP способна корректно предоставлять содержание для посетителей вашего сайта.

      Шаг 6 — Создание файла PHP для тестовой конфигурации

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

      Откройте новый файл с названием info.php внутри корневой директории документа:

      • sudo vi /opt/rh/rh-nginx112/root/usr/share/nginx/html/info.php

      Добавьте в новый файл следующую строку. Это корректный код PHP, который будет возвращать информацию о вашем сервере:

      112/root/usr/share/nginx/html/info.php’>/opt/rh/rh-nginx112/root/usr/share/nginx/html/info.php

      <?php phpinfo(); ?>
      

      После завершения редактирования сохраните и закройте файл. Затем откройте эту страницу в браузере, указав в адресной строке доменное имя вашего сервера или открытый IP-адрес и добавив /info.php:

      http://server_domain_or_IP/info.php
      

      Вы увидите веб-страницу, сгенерированную PHP, с информацией о вашем сервере:

      Страница PHP с информацией

      Если ваша страница выглядит таким образом, вам удалось успешно реализовать обработку PHP с помощью Nginx.

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

      Удалите файл, введя следующую команду:

      • sudo rm /opt/rh/rh-nginx112/root/usr/share/nginx/html/info.php

      Вы успешно подтвердили, что все компоненты стека LEMP установлены и настроены корректно на вашем сервере.

      Заключение

      Теперь у вас в распоряжении есть полностью настроенный стек LEMP на вашем сервере с CentOS 7. Он будет служить гибкой основой для предоставления веб-контента вашим посетителям.

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

      Дополнительную информацию о Software Collections вы можете найти на официальном сайте.



      Source link