Установка php 7 centos 7 nginx

Установка и настройка 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 на использование сокета, как показано ниже:

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

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

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

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

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

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

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

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

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

Установка php 7 centos 7 nginx

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

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

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

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

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

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

Источник

NGINX на CentOS 7 — установка и настройка

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

И приводим его к следующему виду:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Обновляем систему и список пакетов:

* если система запросит подтверждение, отвечаем Y.

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

По умолчанию, в CentOS работает брандмауэр, поэтому необходимо добавить рабочие порты 80 (http) и 443 (https) в правила на исключение:

* в данном примере добавлены порты 80 и 443. Первый используется в NGINX по умолчанию. Если планируется использовать другой, необходимо добавить его. Или наоборот — если не запланирована работа по безопасному протоколу https, можно его не включать.

Теперь добавляем NGINX в автозапуск при загрузке CentOS

systemctl enable nginx

И запускаем веб-сервер:

systemctl start nginx

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

Установка php 7 centos 7 nginx

NGINX + PHP + PHP-FPM

В чистом виде, веб-сервер NGINX используется редко. Настроим связку с PHP и его обработчиком — PHP-FPM.

Для начала, устанавливаеми тот и другой следующими командами:

yum install php-fpm

Разрешаем автозапуск php-fpm и запускаем его:

systemctl start php-fpm

systemctl enable php-fpm

Настройка NGINX для работы с PHP и PHP-FPM

Открываем настройки сайта по умолчанию:

Редактируем секцию location:

location / <
root /usr/share/nginx/html;
index index.php;
>

* здесь мы поменяли index.html на index.php. Эта настройка позволит автоматически искать и запускать файл index.php, если путь к скрипту не указан явно.

Приводим к следующему виду секцию server:

* где /usr/share/nginx/html — корневой путь по умолчанию для хранения сайта; 9000 — порт, на котором работает php-fpm.

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

mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.php

Отредактируем его (содержимое заменим на это):

Источник

🐹 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:

Установка php 7 centos 7 nginx

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

Установка php 7 centos 7 nginx

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

Установка php 7 centos 7 nginx

Или вот так, если активируем репозиторий 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

Ответ:

Установка php 7 centos 7 nginx

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

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

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

Установка php 7 centos 7 nginx

Все в порядке, повис на порту 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

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

Установка php 7 centos 7 nginx

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

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

Источник

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

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

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

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

yum install epel-release

Установка php 7 centos 7 nginx

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

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

systemctl start nginx

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

systemctl enable nginx

Установка php 7 centos 7 nginx

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

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

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

Установка php 7 centos 7 nginx

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

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

Установка php 7 centos 7 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:

Установка php 7 centos 7 nginx

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

systemctl restart nginx

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

Установка php 7 centos 7 nginx

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

Установка php 7 centos 7 nginx

Настройка 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:

Установка php 7 centos 7 nginx

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

Установка php 7 centos 7 nginx

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

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

sudo systemctl reload nginx

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

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

Установка php 7 centos 7 nginx

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

Выводы

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

Установка php 7 centos 7 nginx

Установка php 7 centos 7 nginx

Установка php 7 centos 7 nginx

Установка php 7 centos 7 nginx

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

Об авторе

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

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

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

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

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

Источник

Установка и оптимальная настройка Nginx + LAMP (CentOS 7)

Недавно приняли решение переехать с хостинга на VPS, будем использовать: CentOS 7, Nginx, Apache, PHP, MySQL. Несмотря на большое количество статей на эту тему, многие аспекты не упоминаются, поэтому выкладываем эту статью чтобы услышать мнение знающих и опытных людей. Настраивать сервер как Вы уже поняли будем первый раз, поэтому о актуальности статьи можно будет судить из комментариев. Nginx будет отдавать статику, а динамику Apache (скрипты PHP), чтобы снизить нагрузку на сервер.

Все настройки будем применять на рабочем сервере нашего проекта с конфигурацией сервера: CPU — 2 × 2000 МГц и RAM — 2048 МБ.

Для начала работы находим подходящий VPS с предустановленной CentOS 7, к серверу будем подключаться по SSH через PuTTY.

Вводим название хоста и порт, нажимаем Open:

Установка php 7 centos 7 nginx

Далее вводим логин [Enter], потом пароль (обратите внимание, ввод пароля не отображается) [Enter]:

Обновить систему, при этом сохранить устаревшие версии пакетов:

Создаём файловую структуру и пользователей под сайты.

Создаём каталог (папку) для файлов под все сайты:

Под каждый отдельный сайт выполните такие действия.

Содержимое каждого сайта будет находиться в собственном каталоге, поэтому создаём нового пользователя и отдельный каталог для разграничения прав доступа:
-b папка в которой будет создан каталог пользователя
-m создать каталог
-U создаём группу с таким же именем как у пользователя
-s /bin/false отключаем пользователю shell

]# chmod 755 /website/name.site

Инструкции по установке приведены на официальном сайте Nginx.

Для настройки репозитория yum в CentOS создаём файл /etc/yum.repos.d/nginx.repo:

]# cd /etc/yum.repos.d
[root@test

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1

]# systemctl start nginx.service

Установка php 7 centos 7 nginx

]# systemctl stop nginx.service

Устанавливаем Apache и PHP.

Устанавливаем Apache (в CentOS — httpd):

]# systemctl start httpd.service

]# systemctl stop httpd.service

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

]# systemctl enable nginx.service

user nginx;
worker_processes 2;
pid /var/run/nginx.pid;

events <
worker_connections 1024;
multi_accept on;
>

http <
error_log /var/log/nginx/error.log warn;
access_log off;

charset utf-8;
server_tokens off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

reset_timedout_connection on;
client_header_timeout 15;
client_body_timeout 30;
send_timeout 15;
keepalive_timeout 5;
keepalive_requests 30;
client_max_body_size 8m;

limit_rate_after 30M;
limit_rate 500K;

open_file_cache max=10000 inactive=3m;
open_file_cache_min_uses 2;
open_file_cache_valid 1m;

sendfile on;
tcp_nodelay on;
tcp_nopush on;

open_file_cache max=10000 inactive=3m;

Для каждого сайта создаём виртуальный хост Nginx.

Чтобы Nginx получил доступ к файлам сайта, добавим пользователя nginx в группу name.site:

server <
listen 80;
server_name name.site www.name.site;
#access_log /website/name.site/logs/nginx_access.log;
error_log /website/name.site/logs/nginx_error.log;

* \.(css|js|png|gif|jpg|jpeg|ico)$ <
root /website/name.site/www;
expires 1d;
>

error_page 500 502 503 504 /50x.html;
location = /50x.html <
root /usr/share/nginx/html;
>
>

* \.(css|js|png|gif|jpg|jpeg|ico)$ <
root /serves/name.site/www;
expires 1d;
>

Посмотрите какой именно модуль Apache у вас установлен. У меня — apache2-mpm-prefork (один процесс с одним потоком будет обрабатывать одно соединение, рекомендуется как безопасный совместно с PHP):

ServerRoot «/etc/httpd»
DocumentRoot «/website»
Include conf.modules.d/*.conf

User apache
Group apache

Listen 127.0.0.1:8080
ServerName 127.0.0.1:8080
ServerAdmin root@localhost

ServerSignature Off
ServerTokens Prod

RLimitMEM 786432000
TimeOut 250

AddDefaultCharset utf-8
DefaultLanguage ru

KeepAlive Off
ContentDigest Off
EnableSendfile off

ErrorLog «logs/error_log»
LogLevel error

DirectoryIndex index.php
AllowOverride none
Require all denied

StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 30
MaxRequestsPerChild 2500

Require all denied

Для каждого сайта создаём виртуальный хост Apache.

Добавляем пользователя apache в группу каждого сайта:

ServerName name.site
ServerAlias www.name.site

AllowOverride None
Require all granted

ErrorLog /website/name.site/logs/error.log
CustomLog /website/name.site/logs/requests.log combined

Блок VirtualHost, указывается какой порт слушать:

CustomLog /website/name.site/logs/requests.log combined

Проверка Nginx и Apache.

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

]# systemctl enable httpd.service

]# touch /website/name.site/www/index.php
[root@test

]# cp /etc/httpd/conf.d/php.conf /etc/httpd/sites-enabled/php.conf

]# systemctl start nginx.service
[root@test

]# systemctl start httpd.service

engine = On
expose_php = Off
short_open_tag = Off
zlib.output_compression = Off
disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, etc

display_startup_errors = Off
display_errors = Off
log_errors = On
error_log = «/usr/local/zend/var/log/php.log»
ignore_repeated_errors = Off
ignore_repeated_source = Off
html_errors = On

implicit_flush = Off
output_buffering = 4K
realpath_cache_size = 2M
realpath_cache_ttl = 1800
zend.enable_gc = On

max_input_time = 200
max_execution_time = 30
file_uploads = On

memory_limit = 256M
post_max_size = 8M
upload_max_filesize = 2M
max_file_uploads = 4

extension_dir = «/usr/local/zend/lib/php_extensions»
date.timezone = Europe/Moscow
default_mimetype = «text/html»
default_charset = «UTF-8»

variables_order = «CGPS»
register_argc_argv = Off
auto_globals_jit = On
enable_dl = Off

allow_url_fopen = On
allow_url_include = Off

disable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, etc

Устанавливаем и настраиваем MySQL.

Немного про безопасность.

Под root заходить нежелательно, поэтому создаём нового пользователя:

]# service sshd restart

P.S. Можно использовать Nginx с php-fpm, но есть такое мнение, что при правильно настроенном Apache особой разницы в производительности не наблюдается.

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

Источник

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

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