установка php 7 centos 7 nginx
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-адрес сервера, который был настроен. Должна загрузиться тестовая страница, наприимер:
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:
Посмотрим доступные репозитории 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, но это уже частный случай. В общем случае, можно оставить так.
Установка и оптимальная настройка 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:
Далее вводим логин [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
]# 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 особой разницы в производительности не наблюдается.
Особое внимание хотелось обратить на безопасность и производительность сервера, поэтому если вы нашли ошибки или недочёты, просим написать это в комментариях и в случае необходимости мы внесём изменения в статью.
Установка 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 сервера.
Установка и настройка PHP 7 на CentOS 7
Install PHP 7 on CentOS 7
В этом руководстве мы объясним, как установить или обновить до PHP 7.0. 7.1, 7.2 и 7.3 в системе CentOS 7. Мы также покажем вам, как интегрировать PHP с Nginx и Apache.
С помощью PHP 7 ваши приложения будут загружаться быстрее и потреблять меньше системных ресурсов. Также перед установкой конкретной версии PHP 7.x убедитесь, что она поддерживается вашим приложением.
Перед началом работы с этим учебником убедитесь, что вы вошли на свой сервер с учетной записью пользователя с привилегиями sudo или с пользователем root. Лучше всего запускать административные команды от имени пользователя sudo вместо root. Если в вашей системе нет пользователя sudo, вы можете создать его, следуя этим инструкциям.
Включение репозитория Remi
Пакеты PHP 7.x доступны в нескольких разных репозиториях. Мы будем использовать репозиторий Remi, который предоставляет более новые версии различных пакетов программного обеспечения, включая PHP.
В следующих разделах мы расскажем, как установить PHP 7.x, включив соответствующий репозиторий Remi. Если в вашей системе уже установлен PHP 5.4, yum обновятся пакеты PHP.
Установка PHP 7.3 на CentOS 7
PHP 7.3 является последней стабильной версией PHP. Большинство современных PHP-фреймворков и приложений, включая WordPress, Drupal, Joomla и Laravel, полностью поддерживают PHP 7.3.
Выполните следующие шаги, чтобы установить PHP 7.3 на CentOS 7.
Начните с включения репозитория PHP 7.3 Remi:
Установите PHP 7.3 и некоторые из наиболее распространенных модулей PHP:
Проверьте установку PHP, введя следующую команду, которая выведет версию PHP:
Установка PHP 7.2 на CentOS 7
Используйте PHP 7.2, только если вы собираетесь устанавливать такие приложения, как Magento 2, которые не совместимы с PHP 7.2.
Следующие шаги описывают, как установить PHP 7.2 CentOS 7.
Сначала включите репозиторий PHP 7.2 Remi, выполнив следующую команду:
После того, как хранилище включено, установите PHP 7.2 и несколько наиболее распространенных модулей PHP:
Проверьте установку PHP:
Установка PHP 7.1 на CentOS 7
Следуйте инструкциям ниже, чтобы установить PHP 7.1.
Включите репозиторий PHP 7.1, набрав:
Установите PHP 7.1 и несколько наиболее распространенных модулей PHP:
Чтобы проверить установку, выполните следующую команду, которая выведет версию PHP:
Настройка PHP 7.x для работы с Apache
Если вы используете Apache в качестве веб-сервера, просто перезапустите службу Apache, используя следующую команду, и все готово:
Настройка PHP 7.x для работы с Nginx
В отличие от Apache, Nginx не имеет встроенной поддержки для обработки файлов PHP, поэтому нам нужно установить отдельное приложение, такое как PHP FPM, которое будет обрабатывать файлы PHP.
Для установки пакета PHP FPM выполните следующую команду:
По умолчанию PHP FPM будет работать как пользователь apache на порту 9000. Мы изменим пользователя на nginx и переключимся с сокета TCP на сокет Unix. Для этого отредактируйте линии, выделенные желтым цветом:
Убедитесь, что /var/lib/php каталог имеет правильное владение :
После внесения изменений включите и запустите службу PHP FPM:
Затем отредактируйте директиву виртуального хоста Nginx и добавьте следующий блок местоположения, чтобы Nginx мог обрабатывать файлы PHP:
Чтобы новая конфигурация вступила в силу, перезапустите службу Nginx :
Вывод
Вы узнали, как установить PHP 7 на вашем сервере CentOS и как настроить веб-сервер для обработки файлов PHP.