centos php fpm настройка

Установка Nginx в CentOS 7

Кроме функции веб-сервера, программа может работать в качестве обратного прокси, прокси для TCP/UDP или почты, а также в качестве балансировщика нагрузки. Nginx используется для обеспечения работы огромного количества сайтов в сети интернет, а также известна, как самый высокопроизводительный веб-сервер. В этой статье мы рассмотрим, как выполняется установка Nginx CentOS 7, а также как выполнить первоначальную настройку программы.

Установка Nginx в CentOS 7

Веб-сервер Nginx есть в официальных репозиториях дистрибутива, та версия уже устарела, и если вы хотите получить новую версию с современными возможностями, вам придётся использовать репозиторий EPEL. Для его добавления в систему выполните:

yum install epel-release

Затем можно установить Nginx:

Чтобы запустить сервис Nginx, выполните:

systemctl start nginx

Затем необходимо добавить программу в автозагрузку:

systemctl enable nginx

Далее надо разрешить трафик для веб-сервера в брандмауэре системы:

И перезагрузить брандмауэр:

Если все было сделано правильно, то, открыв адрес сервера, на который вы устанавливали Nginx, вы увидите страницу по умолчанию:

Настройка расположения файлов сайта

Установка Nginx CentOS 7 завершена, теперь будет рассмотрена настройка Nginx. Нам нужно сообщить Nginx, где будут находится файлы нашего сайта. В конфигурационном файле /etc/nginx.conf, уже настроен один виртуальный хост. Его мы и будем использовать. Здесь указана опция default_server, поэтому он будет открываться для всех запросов к Nginx:

Сначала нужно создать само расположение файлов. Создайте папку /var/www/html/default, в которой будут храниться наши файлы сайтов, и дайте на неё права пользователю nginx:

mkdir /var/www/html/default
chown nginx:nginx /var/www/html/default

Также можно создать файл index.html в этой папке для теста веб-сервера с таким текстом:

It words!

Этот файл тоже должен принадлежать пользователю Nginx. Далее в конфигурационном файле /etc/nginx/nginx.conf найдите секцию server и замените значение параметра root на /var/www/html/default:

Теперь Nginx будет брать файлы сайта из этого каталога при всех запросах. Перезапустите Nginx:

systemctl restart nginx

Затем откройте снова адрес сервера в браузере, чтобы посмотреть, работает ли наше расположение файлов. Если всё было сделано правильно, вы увидите сообщение it works:

Если возникает ошибка, убедитесь, что у Nginx есть права для доступа к этому файлу, а также, что SELinux отключён или правильно настроен.

Настройка PHP-FPM Nginx CentOS

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

yum install php-fpm

Затем запустите службу php-fpm командой:

systemctl start php-fpm

Откройте конфигурационный файл php-fpm, который находится по адресу /etc/php-fpm.d/www.conf и посмотрите, на каком порту ожидает соединений запущенная служба. По умолчанию это 9000:

Далее нам осталось только связать Nginx с новой службой. Для этого в секцию server добавьте такой код:

Здесь очень важно значение этого параметра:

Оно должно соответствовать тому, которое мы видели в файле /etc/php-fpm.d/www.conf. Это адрес и порт на котором ожидает подключения служба php-fpm. Всё остальное можно оставить как есть и модифицировать при необходимости. Затем перезагрузите Nginx:

sudo systemctl reload nginx

Опция reload позволяет перечитать конфигурацию без перезагрузки веб-сервера. Осталось создать тестовый файл с таким содержимым:

Затем откройте адрес сервера на который был установлен Nginx плюс phpinfo.php в браузере:

Теперь вы увидите, что php-fpm nginx настроен полностью и корректно работает.

Выводы

В этой статье мы разобрали, как установить Nginx CentOS 7, а также как настроить первый веб-сайт и подключить обработку скриптов с помощью интерпретатора php-fpm. В следующих статьях разберёмся с настройкой виртуальных хостов для Nginx и SSL-сертификатов.

Оцените статью:

Об авторе

Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.

5 комментариев

А зачем php в статье про nginx? мб стоит как то более подробно расписать возможности nginx, например stream проксирование, либо возможность разным сайтам работать под разными пользователями. Подобных этой статей слишком много уже.

Я полчаса потратил на ковыряние конфигов, только после твоего коммента дошло! Сайт нормальный вроде, но авторы косячат иногда!

Подскажите, пожалуйста, какие права должны быть на директорию /home/test, если нужно настроить http сервер так, чтобы он отображал содержимое домашнего каталога пользователя test командой curl localhost или по IP сервера.

Источник

Nginx + php-fpm на CentOS 7

Установка nginx на CentOS 7

Ставим непосредственно web сервер:

Добавляем в автозагрузку:

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

Теперь можно зайти на тестовую страничку, чтобы убедиться, что nginx работает:

Не забудьте открыть 80-й порт на фаерволе.

Установка mysql на CentOS 7

Практически ни один web сервер сейчас не обходится без mysql. В centos 7 вместо mysql устанавливается mariadb, которая имеет полную совместимость с mysql, в том числе понимает все ее команды. Так что ставим на сервер:

Читайте также:  Что указывается в пересылочной ведомости по каждой колесной паре сдо

Добавляем в автозапуск:

Проверяем, запустилась ли mysql:

Теперь воспользуемся скриптом безопасности, который позволит задать пароль root и произвести некоторые настройки:

Установка php-fpm на CentOS 7

Устанавливаем php-fpm и некоторые модули, которые скорее всего пригодятся в дальнейшей работе:

На все вопросы просто жмем enter, выбирая параметры по-умолчанию.

Теперь отредактируем /etc/php.ini как нам рекомендует инсталлятор:

Задаем параметр cgi.fix_pathinfo=0 и добавляем в конце строку extension=apc.so
Заодно установим сразу же часовой пояс: date.timezone = «Europe/Moscow»

Создадим файл настроек APC:

Добавляем php-fpm в автозагрузку:

Настройка nginx и php-fpm на CentOS 7

Теперь отредактируем конфиги для совместной работы. Приводим конфиг nginx к следующему виду:

Более подробно о том, как выполнить базовую настройку nginx читайте в отдельной обширной статье.

Теперь правим конфиг php-fpm, приводим его к следующему виду:

Создаем необходимые каталоги:

Теперь все готово, можно проверять. Создаем в папке /web/sites/site1.ru/www тестовый файл:

Заходим по адресу: http://site1.ru/ и если наблюдаем информацию о php, то все сделано правильно.

Если нет, то идем в логи и смотрим, в чем ошибка.

Установка phpmyadmin на CentOS 7

Для удобства управления базами веб сайтов я всегда использую phpmyadmin. Установим ее:

Копируем файлы панели в наш виртуальный домен, созданный ранее:

Заходим по адресу http://pma.site1.ru/ и проверяем, все ли в порядке.

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

*43 FastCGI sent in stderr: «PHP message: PHP Fatal error: Call to undefined function __() in /web/sites/pma.site1.ru/www/libraries/core.lib.php on line 245» while reading response header from upstream, client: 77.47.234.119, server: pma.site1.ru, request: «GET /index.php HTTP/1.1», upstream: «fastcgi://unix:/var/run/php-fpm/php5-fpm.sock:», host: «pma.site1.ru»

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

После этого загрузилась панель phpmyadmin:

Более подробную информацию об установке и настройке phpmyadmin смотрите в отдельной статье.

На этом все, настройка nginx + php-fpm на CentOS7 закончена.

Онлайн курс Внедрение и работа в DevSecOps

Помогла статья? Подписывайся на telegram канал автора

Автор Zerox

27 комментариев

Добрый день!
Вы тут в пункте «Настройка nginx и php-fpm на CentOS 7» связали nginx и php-fpm но php 5.4
где можно найти связку nginx и php-fpm 7.1?

нашёл ссылку Вашу https://serveradmin.ru/ustanovka-i-nastroyka-nginx-php-fpm-php7-1-na-centos-7/
там установка nginx и php-fpm 7.1 есть но связки не нашёл(а может только их установка хватит)

Zerox, огромное спасибо за статью!
Сможете подсказать, возможно ли настроить и если возможно, то как это сделать)
Есть сервер mysql на Windows 2012 R2, к нему привязано несколько других сервесов. Необходимо использовать его для работы с Сайтом.
Как это настроить?
Если делать по инструкции, то будет использоваться mariadb, что распологается локально.
Буду признателен, если сможете подсказать и/или направить в нужное русло.

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

Источник

Установка и настройка nginx + PHP7 FPM + Mysql на CentOS 7

В погоне за скоростью и с целью экономии ресурсов настроем веб-сервер в конфигурации Linux + NGINX + PHP7 (PHP-FPM + MYSQL (MariaDB) или просто LEMP.

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

И так для начала устанавливаем CetnOS 7 в конфигурации Minimal и после можно приступить к установке и настройке нашего набора ПО для бeдующего веб-сервера

Отключаем SELinux:
первая команда редактирует конфигурационный файл, чтобы SELinux не запускался автоматически, вторая — отключает его разово.

Установка NGINX

Установка NGINX очень проста достаточно выполнить команду yum install nginx, только предварительно надо добавить официальный репозитарий выполнив две команды:

Или добавить репозитарий ручками, создав файл /etc/yum.repos.d/nginx.repo с содержанием:

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

Установка PHP-FPM

Поскольку на момент написания в официальном репозитарии CentOS 7 отсутсвует пакеты PHP 7 то подключим неофициальный репозитарий IUS.

Выполните скрипт командой:

Далее устанавливаем PHP 7 и модули php-fpm, php-mysqlnd:

Добавим PHP-FPM в автозагрузку

Настройка PHP 7 для работы с Nginx

И так для начала откроем файл в редакторе и внесем изменения:

Затем найдите блок listen.acl_users и раскомментируйте в нем строку listen.acl_users = nginx.

Далее необходимо изменить конфигурацию NGINX, что бы веб-сервер использовал сокет для взаимодействия с PHP-FRM:

Переключаем способ взаимодействия с TCP-порта 9000 на использование сокета, как показано ниже:

Настроем хост по умолчанию что бы в последствии убедится что у нас все работает:

Читайте также:  Union что это такое

Вариант конфигурации для проверки:

Что бы все наши изменения вступили в силу перезапускаем PHP-FPM и Nginx:

Проверка работы PHP 7

Поскольку все установили и вроде как настроили то неплохо и убедится что все работает.

Для начала выполним команду:

Ответ которого мы ждем :

Теперь можно создать в корневом каталоге веб-сервера файл info.php для проверки работы самого серврера:

И теперь если все правильно установили и настроили то открыв в браузере http://ip-адрес-вашего-сервера/info.php мы должны увидеть информацию о конфигурации php.

Далее можно спокойно продолжить настройку веб-сервера под конкретные нужды.

Установка MariaDB (mysql)

В общем установка MariaDB тоже сводится к выполнению нескольких команд:

Добавляем mariadb в автозагрузку:

В случае если пакет не нашелся добавим репозитарий MariaDB создав файл /etc/yum.repos.d/MariaDB.repo с содержанием:

Открываем необходимые порты в брандмауэре:
80, 443 порты для работы веб-сервера.

Источник

🐹 CentOS 7: Установка PHP 7.4 и настройка php-fpm.sock — Fastcgi Process Manager для Nginx.

Опубликовано 2020-09-24 · Обновлено 2021-05-10

Содержание:

1. Введение.

Существует php 5.6, 7.4 или 8. Для каждой версии php существует режим работы, который гораздо важнее для производительности, чем просто версия php.

В apache существует режимы работы php-cgi — это в принципе то же самое что и php-fpm, но есть существенная разница. CGI — тоже оно, но не совсем.

Что такое CGI и чем он отличается от обычного apache по умолчанию?

Apache с mod_php исполняет php-код сам, используя при этом кучу ресурсов сервера и делая это внутри своих процессов.

Когда используется режим CGI — это значит apache не обрабатывает php сам, а запускает php-cgi для каждого php-скрипта и забирает у него результат обработки. То есть это даже несколько усложняет схему: пользователь шлёт запрос к nginx > тот обращается к apache > apache запускает скрипты через CGI и получает результат их выполнения > собирает из них html и отдаёт его nginx > тот собирает статические страницы, нужную для этой html страницы в кучу > отдает пользователю.

Еще существует режим fastcgi — это тот же CGI, но отличается от него тем, что оно позволяет apache не запускать для каждого скрипта отдельный процесс, а запустить один или несколько процессов и отдавать скрипты ему, получать от него ответ. Это немного производительнее, чем CGI, за счёт того, что операции создания процессов для операционной системы считаются довольно ресурсоемкими. в работе этой схемы задействован всё тот же apache. Fastcgi без apache в данном случае работать не может, это все равно модуль mod_fastcgi.

php-fpm — это Fastcgi Process Manager. Он представляет из себя отдельную службу, которая работает независимо от какого-либо web-сервера. Он может сам принимать запросы от web-сервера через unix-сокет или через сетевое соединение. Другими словами, вы можете держать сайты на одном сервере, а php-скрипты исполнять на другом.

Получается, что для nginx помощь apache становится уже не нужна, потому как nginx может работать с php-fpm сам, напрямую. Apache тоже может работать в таком же режиме с php-fpm, но это не имеет смысла. Php-fpm не может отдавать статические файлы или html, он может только исполнять php.

Получается такая схема: запрос пользователя > nginx > php-fpm > nginx, он собирает из ответа php и статики страницу > отдаёт пользователю. FPM в разы производительнее apache, в каком бы режиме тот ни был запущен.

2. Настройка репозиториев.

Установим YUM утилиты:

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

Нет смысла держать репозитории, которые устарели.

В базовой установке CentOS 7 установлен remi-safe репозиторий. Там содержатся копии только старых-добрых программ, которые не обновляются очень долго в угоду стабильности работы некоторых систем. Так как мы будем ставить новую версию репозитория REMI, то старую версию REMI-SAFE можно смело деактивировать.

Для активации remi надо вначале отключить remi-safe и ius репозиторий (если он у вас включен), а потом активировать remi выполнив команды:

Возможны конфликты с репозиторием IUS! Отключим IUS, если он активирован ранее:

Активируем remi:

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

Посмотрим доступные репозитории remi:

Получится вот так, если активировать вручную:

Или вот так, если активируем репозиторий remi-php74 автоматизированно, для этого выполняем команду:

3. Установка php 7.4 и php-fpm.sock.

Теперь устанавливаем php версии 7.4.

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

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

# systemctl start php-fpm
# systemctl enable php-fpm

Проверим активность службы:

# systemctl status php-fpm

Ответ:

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

Перед этим установим сетевые утилиты для CentOS 7:

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

Все в порядке, повис на порту 9000.

4. Настройка php-fpm.sock.

Теперь переделаем всё под наши нужды. Запустим его через unix сокет.

Создадим резервную копию конфигурационного файла:

# cp /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.original

Читайте также:  Какого года песня максим сон

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

Ищем и комментируем строку:

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

Заодно измените пользователя, от которого будет работать php-fpm.

Вместо apache укажите nginx.

Перезапускаем php-fpm, чтобы применить настройки.

# systemctl restart php-fpm

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

Создаем папку session :

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

Источник

CentOS → Настраиваем web-сервер на CentOS ( Nginx + php-fpm + MySQL )

В этой статье я расскажу как настроить Web сервер на CentOS, эта ОС является одной из самых популярных и только недавно она уступила лидерство Debian, что как-бы намекает. Она имеет довольно большое сообщество и информация о ее настройке будет весьма полезна людям, да и не понятно как это я ее обошел своим вниманием, в общем, этот досадный недостаток нужно исправить, чем я сейчас и займусь.

Предполагается что система установлена и настроена как вам нужно.
Устанавливаем Nginx
Первым делом нам необходимо добавить родной репозиторий Nginx, сделать это можно двумя путями:
1) Скачать пакет который добавит настройки репозитория в конфигурационные файлы
2) Руками поправить файлы конфигурации

мы буем использовать стабильный релиз для CentOS 6.0
Любое из решений имеет право на жизнь, как это сделать можно прочитать на сайте Nginx nginx.org/en/linux_packages.html#stable
Мы сделаем более просто, качнем пакет он сам все добавит в конфиги.

Качнем файл с настройками репозитория Nginx и сразу установим его:

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

Добавим Nginx в автозагрузку при старте системы и запустим его:

Если мы попытаемся подключиться к Nginx, то у нас ничего не получится т.к. правила фаерволла блокируют доступ к 80му порту.
Добавим правила для Nginx:

Содержимое файла примерно следующее:

Тут видно что разрешен доступ к порту 22, остальные порты заблокированы, возьмем за основу данное правило и немного переделаем его, чтобы оно открывало доступ к порту 80

И добавим его под разрешающее правило для SSH
Тогда содержимое примет вид:

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

Проверяем, зайдя по адресу httр://IP_вашего_серрвера
Видим приветственную страницу Nginx, значит web-сервер доступен для внешних подключений:

Немножко «допилим» Nginx, чтобы он не выдавал информацию о себе.
Для примера, попробуем перейти по адресу httр://ip_адрес_сервера/test
Сервер выдаст страницу с ошибкой, в низу которой будет видна версия nginx, что не очень хорошо.
нам нужно ее скрыть, а для этого мы идем в:

и в секции http мы добавим директиву server_tokens off;

Сразу под записью #tcp_nopush on; заодно сняв с нее комментарий, чтобы директивы имели вид:

Сохраним изменения и перезапустим Nginx

Обновляем страницу с ошибкой и видим что версия Nginx больше не отображается.

Создадим пользователя для работы с виртуальным хостом
Назовем его example:
При создании пользователя, отключим ему доступ к шеллу, так безопаснее.

также, при создании пользователя, мы завели одноименную группу example, она нам также пригодится.

Придумаем для пользователя example пароль:

Создадим необходимые, для работы WEB сайта, директории:

Предоставляем пользователю example права на них:

Предоставим Nginx доступ в домашнюю директорию пользователя example, добавив пользователя nginx в группу example

А также предоставим группе example, в которую входит пользователь nginx, права на чтение и выполнение внутри домашней директории пользователя example:

Создадим виртуальный хост Nginx

Настаиваем первый виртуальный хост Nginx, назовем его example.org

С содержимым:
(Здесь я привожу только базовые настройки, чтобы работало, если нужно добавить что-то дополнительно, то вы сделаете это сами, исходя из ваших задач )

Сохраняем изменения и выходим

Переходим к установке php-fpm

Переходим к конфигурационном файлу:

находим строку ;cgi.fix_pathinfo=1 и снимаем с нее комментарий, это закрывает уязвимость с произвольным выполнением кода, чтобы выглядело:

Нам также требуется перенастроить php-fpm на работу по пользователя Nginx т.к. у пользователя nginx, который входит в в группу example, есть права на выполнение скриптов, но для этого нам требуется изменить пользователя и группу под которой работает php-fpm, по умолчанию, это группа и пользователь apache нам это надо изменить, переходим к файлу:

Меняем apache на nginx чтобы выглядело

Сохраняем изменения и выходим

Добавим php-fpm в автозагрузку и запустим:

Создадим тестовый файл, чтобы проверить работоспособность PHP5:

Чтобы подключиться к нашему серверу по имени example.org требуется иметь настроенную DNS ону для данного домен, но можно просто добавить запись в файл hosts.

переходим по адресу httр://example.org/test.php
Получаем вот такую страницу, нас интересует строка Server API (на скриншоте подчеркнуто красным) там видно кто обработал данный файл.

Все отлично PHP обрабатывается, сайт открывается, переходим к установке MySQL

Устанавливаем Mysql сервер

На этом, с настройкой основного функционала web сервера на CentOS, можно и закончить, если есть вопросы прошу в комментарии, нашли ошибку, пишите в личку.

Источник

Образовательный портал