Передовые виртуальные и выделенные серверы для проектов любой сложности и структуры.
 Подписывайтесь на Telegram канал!

Версии PHP от Remi являются самыми популярными и стабильными при использовании на Web серверах. Расскажу основные моменты работы с репозиторием. Рассмотрим как сменить версию PHP. Один из самых популярных репозиториев для CentOS.

Введение

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

В статье будет рассказано про использование репозитория на системах CentOS 7 и 8.

Les RPM de Remi repository поддерживает последние версии MySQL и PHP (бэкпорты федоровских rpm). Пакеты этого репозитория необходимо использовать с осторожностью, так как они заменяют базовые пакеты.

В другой статье вы можете узнать как использовать репозиторий WebtaticEL для CentOS 7. В нем так же используются последние версии PHP, но к сожалению там нет многих удобств которые есть у Remi. Например, используя репозиторий Remi можно всегда иметь последнюю версию phpMyAdmin.

Предварительная подготовка

Перед началом использования репозитория Remi необходимо подключить репозиторий Epel созданный группой специалистов операционной системы Fedora. Пакеты из Epel репозитория никогда не конфликтуют и не переустанавливают базовые пакеты RHEL.

Установка Epel в CetnOS 7 производится командой:

yum install epel-release

Установка Epel в CetnOS 8 производится командой:

dnf install epel-release

Подключение репозитория от Remi

для CentOS 7

Для установки репозитория Remi в CentOS 7 достаточно выполнить команду:

# rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

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

yum repolist
= вывод части команды =
Загружены модули: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.corbina.net
 * epel: mirror.logol.ru
 * extras: mirror.reconn.ru
 * remi-safe: mirror.reconn.ru
 * updates: mirror.corbina.net   
remi-safe    Safe Remi's RPM repository for Enterprise Linux 7 - x86_64     3 144

По умолчанию установлен репозиторий remi-safe который имеет только дополнительные пакеты для базового хранилища и коллекций программного обеспечения. Например, при попытке установить phpMyAdmin будет установлена старая версии. Для установки последних версий надо активировать репозиторий remi.

Посмотрим репозитории что у нас есть в системе выполнив команду:

ls /etc/yum.repos.d/ -l
итого 92
-rw-r--r-- 1 root root 1664 ноя 23 16:16 CentOS-Base.repo
-rw-r--r-- 1 root root 1309 ноя 23 16:16 CentOS-CR.repo
-rw-r--r-- 1 root root 649 ноя 23 16:16 CentOS-Debuginfo.repo
-rw-r--r-- 1 root root 314 ноя 23 16:16 CentOS-fasttrack.repo
-rw-r--r-- 1 root root 630 ноя 23 16:16 CentOS-Media.repo
-rw-r--r-- 1 root root 1331 ноя 23 16:16 CentOS-Sources.repo
-rw-r--r-- 1 root root 5701 ноя 23 16:16 CentOS-Vault.repo
-rw-r--r-- 1 root root 951 окт 2 2017 epel.repo
-rw-r--r-- 1 root root 1050 окт 2 2017 epel-testing.repo
-rw-r--r-- 1 root root 261 фев 8 15:23 mariadb.repo
-rw-r--r-- 1 root root 113 июл 15 2014 nginx.repo
-rw-r--r-- 1 root root 446 дек 21 20:50 remi-glpi91.repo
-rw-r--r-- 1 root root 446 дек 21 20:50 remi-glpi92.repo
-rw-r--r-- 1 root root 446 дек 21 20:50 remi-glpi93.repo
-rw-r--r-- 1 root root 446 дек 21 20:50 remi-glpi94.repo
-rw-r--r-- 1 root root 456 дек 21 20:50 remi-php54.repo
-rw-r--r-- 1 root root 1314 дек 21 20:50 remi-php70.repo
-rw-r--r-- 1 root root 1314 дек 21 20:50 remi-php71.repo
-rw-r--r-- 1 root root 1314 дек 21 20:50 remi-php72.repo
-rw-r--r-- 1 root root 1314 дек 21 20:50 remi-php73.repo
-rw-r--r-- 1 root root 2605 дек 21 20:50 remi.repo
-rw-r--r-- 1 root root 750 дек 21 20:50 remi-safe.repo

Надеюсь, вы заметили что есть репозитории glpi.

GLPI — это программный инструмент ITSM, который помогает вам легко планировать и управлять изменениями в ИТ структуре предприятия, эффективно решать возникающие проблемы используя систему заявок, так же позволяет вам получить контроль над ИТ-бюджетом и расходами вашей компании. В будущем я расскажу как работать с этим замечательным проектом. Кроме того, то что Remi Collet поддерживает репозиторий меня очень радует.

Перед работой с репозиториями Remi необходимо установите пакет yum-utils, что бы не получать ошибку «bash: yum-config-manager: command not found».  Установим yum-utils выполнив необходимую команду:

yum install yum-utils

Сейчас у нас активирован remi-safe. Для активации remi надо вначале отключить remi-safe а потом активировать remi выполнив команды:

yum-config-manager --disable remi-safe
yum-config-manager --enable remi

Перед тем как определится какую версию PHP использовать я всегда смотрю на сайте Supported Versions PHP.

Support PHP

В списке имеющихся репозиториев нет версии php5.6, так как он входит в состав remi.repo. Для установки достаточно в команде указать remi-php56.

для CentOS 8

В 8 версии CentOS используется версия php 7.2 которая уже может удовлетворять требования множества новых сайтов, но если вам нужны версии новее подключайте Remi.

Подключаем репозиторий Remi, выполнив следующую команду:

dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Посмотрим список всех доступных вариантов установки php:

dnf module list php
= вывод команды =
Последняя проверка окончания срока действия метаданных: 1:41:10 назад, Пн 28 окт 2019 08:05:09.
CentOS-8 - AppStream
Name Stream Profiles Summary 
php 7.2 [d] common [d], devel, minimal PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary 
php remi-7.2 common [d], devel, minimal PHP scripting language 
php remi-7.3 common [d], devel, minimal PHP scripting language 
php remi-7.4 common [d], devel, minimal PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Из вывода выше видно что по умолчанию стоит базовая версия CentOS 7.2 и имена она будет установлена.

Установка версии PHP от Remi

для CentOS 7

Активируем репу remi-php72, для этого выполняем команду:

# yum-config-manager --enable remi-php72

Устанавливаем php7.2 выполнив команду:

yum install php72

Лучше указывать php72 и тогда пакеты будут установлены только из репозитория remi. Например, я всегда внимательно смотрю какая версия php будет установлена в списке устанавливаемых пакетов.

Установим php-fpm и наиболее популярные модули, которые могут пригодится в процессе эксплуатации веб сервера.

yum install php-fpm php-cli php-mysqlnd php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip php-opcache php-imap

Проверим установленную версию выполнив команду в консоли сервера:

php -v
= вывод команды =
PHP 7.2.16 (cli) (built: Mar 5 2019 14:45:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.16, Copyright (c) 1999-2018, by Zend Technologies

для CentOS 8

Активируем репу php remi-7.2, для этого выполняем команды:

dnf module reset php
dnf module enable php:remi-7.2
= вывод команды =
Последняя проверка окончания срока действия метаданных: 1:53:36 назад, Пн 28 окт 2019 08:05:09.
Зависимости разрешены.
====================================================================================================
 Пакет                  Архитектура           Версия                   Репозиторий            Размер
====================================================================================================
Enabling module streams:
 httpd                                        2.4                                                  
 php                                          remi-7.2                                             

Результат транзакции
====================================================================================================

Продолжить? [д/Н]: д
Выполнено!

Switching module streams does not alter installed packages (see 'module enable' in dnf(8) for details)

Убедимся что версия выбрана правильно:

dnf module list php
= вывод команды =
Последняя проверка окончания срока действия метаданных: 1:55:03 назад, Пн 28 окт 2019 08:05:09.
CentOS-8 - AppStream
Name Stream Profiles Summary 
php 7.2 [d] common [d], devel, minimal PHP scripting language

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary 
php remi-7.2 [e] common [d], devel, minimal PHP scripting language 
php remi-7.3 common [d], devel, minimal PHP scripting language 
php remi-7.4 common [d], devel, minimal PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Всё правильно.

Установим php remi-7.2 и все популярные модули следующей командой:

dnf install php php-fpm php-cli php-mysqlnd php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-zip php-opcache php-imap

Файл конфигурации php.ini

Внесем необходимые изменения в файл настроек php.ini:

vim /etc/php.ini
= необходимые изменения = 
# Запрет на исполнение произвольного кода на сервере с правами php процесса при загрузке файла.
cgi.fix_pathinfo=0
# Необходимая временная зона
date.timezone = "Europe/Moscow"

Настройка Php-fpm для Nginx

Для того чтобы связать nginx и php будем использовать мост php-fpm. Основной файл настройки находится по пути /etc/php-fpm.conf и там должен быть параметр include=/etc/php-fpm.d/*.conf говорящий о том где лежат настройки пулов.

Запускаем php-fpm и добавляем в автозагрузку:

systemctl start php-fpm
systemctl enable php-fpm

=== Для CentOS 8 можно выполнить одну команду ===
systemctl enable --now php-fpm

Проверяем, запустился ли он.

systemctl status php-fpm
= вывод команды =
 php-fpm.service - The PHP FastCGI Process Manager
   Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-28 10:09:25 MSK; 1min 1s ago
 Main PID: 463 (php-fpm)
   Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
    Tasks: 6 (limit: 11524)
   Memory: 25.7M
   CGroup: /system.slice/php-fpm.service
           ├─463 php-fpm: master process (/etc/php-fpm.conf)
           ├─464 php-fpm: pool www
           ├─465 php-fpm: pool www
           ├─466 php-fpm: pool www
           ├─467 php-fpm: pool www
           └─468 php-fpm: pool www

окт 28 10:09:24 wp-lxc_pro-php7_sevo44_loc systemd[1]: Starting The PHP FastCGI Process Manager...
окт 28 10:09:25 wp-lxc_pro-php7_sevo44_loc systemd[1]: Started The PHP FastCGI Process Manager.

Все в порядке, сервис работает и находится в автозагрузке.

Использовать порт или сокет решать вам, но говорят что сокет использовать лучше. Запустим php-fpm через unix сокет. Для этого переименуем конфиг /etc/php-fpm.d/www.conf, создадим новый и приводим к следующему виду:

mv /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf_orig
vim /etc/php-fpm.d/www.conf
= необходимый код =
[www]
user = nginx
group = nginx
;listen = 127.0.0.1:9000
listen = /run/php-fpm/www.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
;pm.process_idle_timeout = 10s;
;pm.max_requests = 500

slowlog = /var/log/php-fpm/www-slow.log

;php_flag[display_errors] = off
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 128M
php_value[session.save_handler] = files
;php_value[session.save_path]    = /var/lib/php/session
;php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
;php_value[opcache.file_cache]  = /var/lib/php/opcache

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

Более подробно прочтите в статье SFTP настройка для веб хостинга.

Назначим каталогу /var/lib/php правильное владение:

=== было ===
ls -l /var/lib/php
= вывод команды =
итого 0
drwxrwx--- 2 root apache  6 окт 22 12:08 opcache
drwxr-xr-x 2 root root   59 окт 28 10:05 peclxml
drwxrwx--- 2 root apache  6 окт 22 12:08 session
drwxrwx--- 2 root apache  6 окт 22 12:08 wsdlcache

=== Назначаем правильные права ===
chown -R root:nginx /var/lib/php

Перезапускаем php-fpm командой:

systemctl restart php-fpm

Проверяем, стартовал ли указанный сокет.

ll /run/php-fpm/www.sock 
srw-rw---- 1 nginx nginx 0 фев 13 10:35 /run/php-fpm/www.sock

Всё успешно настроено.

В настройках nginx для сайта необходимо указать требуемый пул. Например, прописать код fastcgi_pass unix:/run/php-fpm/www.sock; в секции location ~ \.php$

Обновление версий PHP от Remi

Схема обновления универсальна и подойдет как для всех версий CentOS. В примере ниже расмотрен вариант обновления для версии 7.

Обновление состоит из нескольких действий:

  • Остановка php-fpm,
  • Вывод и удаление всех имеющихся пакетов php,
  • Удаление старого и активирование нового репозитория требуемой версии php,
  • Установка новой версии,
  • Проверка настрое из старой версии,
  • Запуск php-fpm и проверка сервиса.

Выполним обновление PHP до версии 7.3 в системе CentOS 7.

Останавливаем php-fpm командой:

systemctl stop php-fpm

Выводим список всех установленных пакетов php:

rpm -qa | grep php
= вывод команды =
php-json-7.2.16-1.el7.remi.x86_64
php-process-7.2.16-1.el7.remi.x86_64
php-odbc-7.2.16-1.el7.remi.x86_64
php-soap-7.2.16-1.el7.remi.x86_64
php-fpm-7.2.16-1.el7.remi.x86_64
php-xml-7.2.16-1.el7.remi.x86_64
php-xmlrpc-7.2.16-1.el7.remi.x86_64
php-pecl-memcache-3.0.9-0.9.20170802.e702b5f.el7.remi.7.2.x86_64
php-gd-7.2.16-1.el7.remi.x86_64
php-mbstring-7.2.16-1.el7.remi.x86_64
php-pdo-7.2.16-1.el7.remi.x86_64
php-pear-1.10.8-1.el7.remi.noarch
php-snmp-7.2.16-1.el7.remi.x86_64
php-opcache-7.2.16-1.el7.remi.x86_64
php-ldap-7.2.16-1.el7.remi.x86_64
php-common-7.2.16-1.el7.remi.x86_64
php-cli-7.2.16-1.el7.remi.x86_64
php-7.2.16-1.el7.remi.x86_64
php-fedora-autoloader-1.0.0-1.el7.remi.noarch
php-mysqlnd-7.2.16-1.el7.remi.x86_64
php-pecl-zip-1.15.4-1.el7.remi.7.2.x86_64
php-imap-7.2.16-1.el7.remi.x86_6

Произведём удаление всех выведенных пакетов необходимой командой:

yum remove php-json php-process php-odbc php-soap php-fpm php-xml php-xmlrpc php-pecl-memcache php-gd php-mbstring php-pdo php-pear php-snmp php-opcache php-ldap php-common php-cli php php-fedora-autoloader php-mysqlnd php-pecl-zip php-imap

Внимательно смотрим вывод команды при удалении! В выводе вы должны увидеть примерно такие строки:

предупреждение: /etc/php-fpm.d/www.conf сохранен как /etc/php-fpm.d/www.conf.rpmsave

предупреждение: /etc/php.ini сохранен как /etc/php.ini.rpmsave

Удалим старый репозиторий php7.2 и установим новый php7.3 выполнив команды:

yum-config-manager --disable remi-php72
yum-config-manager --enable remi-php73

Проверяем правильность установки нужного репозитория выполнив команду:

yum repolist
= вывод части команды =
Загружены модули: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.sale-dedic.com
* epel: mirrors.colocall.net
* extras: mirror.sale-dedic.com
* remi: mirror.23media.de
* remi-php73: mirror.23media.de
* updates: centos-mirror.rbc.ru
remi-php73 Remi's PHP 7.2 RPM repository for Enterprise Linux 7 - x86_64   362

Устанавливаем пакеты аналогичные удаленным:

yum install php-json php-process php-odbc php-soap php-fpm php-xml php-xmlrpc php-pecl-memcache php-gd php-mbstring php-pdo php-pear php-snmp php-opcache php-ldap php-common php-cli php php-fedora-autoloader php-mysqlnd php-pecl-zip php-imap

Обязательно смотрим версию и репозиторий откуда будут ставится пакеты.

Осталось проверить файлы что выдала команда при удалении старой версии php:

предупреждение: /etc/php-fpm.d/www.conf сохранен как /etc/php-fpm.d/www.conf.rpmsave
предупреждение: /etc/php.ini сохранен как /etc/php.ini.rpmsave

В заключение, запустим сервис php-fpm и проверим статус:

systemctl start php-fpm
systemctl status php-fpm
 php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; disabled; vendor preset: disabled)
Active: active (running) since Ср 2019-03-13 21:16:12 MSK; 7s ago
Main PID: 1392 (php-fpm)
Status: "Ready to handle connections"
CGroup: /lxc/php7-lxc/system.slice/php-fpm.service
├─1392 php-fpm: master process (/etc/php-fpm.conf)
├─1393 php-fpm: pool www
├─1394 php-fpm: pool www
├─1395 php-fpm: pool www
├─1396 php-fpm: pool www
└─1397 php-fpm: pool www

мар 13 21:16:11 php7-lxc-lemp.sevo44.loc systemd[1]: Starting The PHP FastCGI Process Manager...
мар 13 21:16:12 php7-lxc-lemp.sevo44.loc systemd[1]: Started The PHP FastCGI Process Manager.

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

systemctl enable php-fpm

Вывод

В статье рассказано про основные моменты работы с репозиторием Remi Collet. Репозиторий активно обновляется и мой выбор остановился на использовании именно его при работе с PHP.

Понравилась статья? Поделитесь ей с друзьями!
Пожалуйста, оставляйте свои комментарии

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

24 комментариев для статьи “PHP от Remi для CentOS

    1. Опишу когда буду переходить на 8 версию. Мне кажется обновление будет аналогичным что с 7.3 до 7.4.

  1. Добрый день! Иду по Вашей инструкции, вроде всё верно, а потом выдаётся вот такая ошибка:
    Job for php-fpm.service failed because the control process exited with error code. See «systemctl status php-fpm.service» and «journalctl -xe» for details.
    Выдается на этапе пробы перезапуска: systemctl restart php-fpm
    Можете подсказать как поправить? Где я ошибаюсь, как думаете?

    1. Верните родной файл /etc/php-fpm.d/www.conf и перезапустите.

      Обычно ошибки в не правельности названий или знаках.

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

  2. Спасибо за подробный и изрядно дополненный мануал по обновлению 7-ой версий php из репозитория remi.

  3. Раньше стояли старенькие версии Nginx и PHP-FPM из репозитория Epel-Release. Обновился и вот проблема — на сайте в кодировке windows-1251 перестали корректно отображаться все буквы. В конфигурационном файле для данного сайта в директиве Server прописал «charset windows-1251;» как было и раньше — не помогло. Что делать?

    1. Может проще будет сделать перекодировку базе данных? Все что неправильно отображается берется из базы данных?

      1. Базы данных вообще нет) Просто создаю страничку index.html в кодировке windows-1251, прописываю в ней тег и текст на русском. Вешаю ее на домен, в файле этотдомен.conf в директиве Server прописываю charset windows-1251, перезапускаю Nginx и вижу кракозябы. Меняю все на UTF-8 — отображается правильно. А вот на прошлых версиях Nginx 1.12 и PHP-FPM 5.4 работало прекрасно. Может еще где что-то нужно прописать?

        И еще попутный вопросик, раз уж я здесь. У меня на сервере несколько сайтов. Файл default.conf я не редактировал — в нем прописано просто «listen 80». В остальных же *.conf файлах я прописал «listen IP:80» (то есть IP своего сервера). Все работает, все открывается как положено, но — когда в строке браузера указываю просто свой IP, то открывается первый по алфавиту один из моих сайтов.
        Мне это не нравится — я хочу, чтобы при обращении к серверу просто по IP открывалась стандартная заглушка Nginx из файла defaul.conf. Если в файле defaul.conf я прописываю как и везде «listen IP:80» — не помогает. Если во всех других *.conf файлах убираю IP и оставляю просто «listen 80» — сайты вообще не открываются. Подскажите, пожалуйста, как сделать, что по обращению к серверу просто по IP срабатывал default.conf?

        1. «Меняю все на UTF-8 – отображается правильно» вот так и делайте. В кодировке windows-1251 практически никто не делает уже. Думаю можно настроить и с этой кодировкой, но тут я Вам не подскажу.

          По поводу обращения по IP к серверу что бы открывалась нужная Вам страница.
          В файле defaul.conf.
          listen 80; — мне нравится указывать без ip
          server_name localhost; — это говарит о том что когда будет запрос по ip откроется файл что указан в пути

          location / {
          root /usr/share/nginx/html;
          — вот этот путь.
          index index.html index.htm;
          }

          Для всех других ресурсов создаются свои конфигурации по типу

          listen 80;
          server_name forum.mageia.org.ru http://www.forum.mageia.org.ru;

          location / {
          root /var/www/sites/forum.mageia.org.ru/www;
          — это путь до нужного сайта
          index index.html index.htm;
          }

          Грубо говоря идентификация ресурса идет по строчке server_name.

          1. Строка «server_name localhost» в файле default.conf присутствовала по-умолчанию, я попробовал оставить везде только listen 80 — то есть без указания IP и все равно не помогло, при переходе из браузера по IP открывался один из сайтов.

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

          2. Надо смотреть что прописано в конфигурации того файла что открывается по ip. То что сделали работать будет, но это кривой вариант работы. Можете дать конфигурацию того сайта что открывается по ip?

          3. Да, пожалуйста — вот мой шедевральный конфиг (полный минимализм, сайт статический с небольшими php-скриптами кое-где, SSL нет и в помине, логи отключены, все несуществующие ссылки ведут на главную с ответом 200):

            server {
            listen 80;
            server_name mysite.ru www.mysite.ru;
            root /path/to/mysite/;
            index index.php;
            charset utf-8;

            location / {
            try_files $uri $uri/ /index.php;
            }

            location ~* \.php$ {
            try_files $uri /index.php;
            fastcgi_param SCRIPT_FILENAME /path/to/mysite$fastcgi_script_name;
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index index.php;
            include /etc/nginx/fastcgi_params;
            }

            location ~* \.(jpeg|jpg|gif|png|ico)$ {
            try_files $uri /index.php;
            expires max;
            }

            }

          4. http:// там нет — это ваша форма ответа подставляет перед www. А вот мой default.conf, каким я его сделал сейчас — если убрать IP адрес из server_name, то все возвращается на круги своя и я вновь вижу открытие сайта по введению IP в адресную строку браузера:

            server {
            listen 80;
            server_name 111.222.333.444 localhost;

            location / {
            return 403;
            }

            }

          5. Хм… Оказывается надо оборачивать код в code и тогда все правильно получается. Решу со временем эту проблему.

            Попробуйте такой код:
            server {
            listen 80;
            server_name localhost;

            location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
            }
            }

          6. Сева, я наконец-то решил проблему! Ответ вот здесь: https://nginx.org/ru/docs/http/request_processing.html

            Теперь мой default.conf выглядит вот так:

            server {
            	listen		80 default_server;
            	server_name	"" localhost;
            
            	location / {
            		return 444;
            	}
            
            }

            При такой конфигурации ничего не отдается ни по IP адресу, ни даже по обратной PTR-записи для данного IP адреса (домен, который хостер присваивает IP по-умолчанию). На сайт теперь можно попасть только прямо указав название домена.

          7. Привет! Такой был по дефолту — не работает. В общем, пока я не добавил IP в строку server_name, продолжал открываться один из сайтов.

            Сева, еще попутный вопросик появился, в access log своего сайта заметил вот такое:

            223.166.75.101 - - [19/Jul/2019:19:41:37 +0300] "GET http://www.123cha.com/ HTTP/1.1" 200 1826 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"

            У меня домен вовсе не http://www.123cha.com и никакого отношения к нему не имеет — откуда появляются такие записи в логах? Ответ моего сервера то 200, то 499 в этих случаях.

          8. Странно как то это что по дефолту не работает. Система CentOS7 и Nginx ставили с их репозитория?

            По логу не отвечу. Запись действительно странная.

          9. CentOS ставил из образа, который сам провайдер VPS предлагает (в VMmanager просто выбрал операционку из списка и она установилась без всяких вопросов). Nginx 1.16.0 и PHP-FPM 7.3.7 по вашей инструкции — первый из официального, второй из Remi. Другого софта не ставил.

            Думаете лучше было CentOS из собственного iso файла устанавливать и настраивать сеть в ручную?

          10. Что это за шаблон установки от хостера и какого он качества для меня всегда загадка. На практике знаю что там очень часто любят вырезать некоторые вещи и добавлять какие то свои скрипты. Когда хостер позволяет устанавливать систему из своего ISO образа я всегда этим пользуюсь. Большинство статей пишут основываясь на настройках с учетом использования родного iso образа разработчика. Если хотите меньше сюрпризов работайте с образами разработчиков.

  4. Здравствуйте! Спасибо за пошаговый мануал.

    В качестве пожелания хотелось бы видеть у Вас на сайте статьи по настройке веб-сервера с применением связки apache+nginx на centOS7, где первый за бекенд отвечает, второй — за фронт.
    И статью бы по настройке подобного на FreeBSD.
    Подобного при беглом поиске не нашёл. В лучшем случае инфа есть но уже устарела. В современном окружении и с различием версий разных служб и приложений могут быть проблемы, где без опыта уже не обойтись 🙂

    1. Спасибо за комментарий. Статья про настройку связки apache+nginx на centOS7 уже есть в черновиках, но когда опубликую сказать не могу. Выпускать урезанную статью нет желания а ответов на все нюансы я пока не нашел. Про FreeBSD можно посмотреть тут https://serveradmin.ru/freebsd-nastroyka-php-fpm-i-nginx/

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

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