Установим и настроим web сервер на базе операционной системы CentOS 7 со связкой Nginx, MariaDB и PHP. Коротко такая связка функционала называется LEMP и дает возможность работать с сайтами использующими эти технологии.
Содержание:
Введение
Долгое время лидирующие позиции занимал Apach, но новый продукт кардинально изменил подход к обработке команд и позволяет обслуживать высоконагруженные сайты на бюджетном железе. Более детально узнать про автора Игоря Сысоева и ознакомится с принципами работы вы можете на просторах сети интернет. От себя лишь скажу что теперь это моя основная и любимая связка при организации веб сервера по причине быстроты и удобства работы.
Компоненты web сервера
Для работы с веб сайтом как правило необходимо иметь три компонента.
- Nginx — по сути это и есть сам веб сервер который будет обрабатывать все запросы и выдавать информацию пользователям,
- MariaDB — база данных в которой будут хранится данные сайтов. MariaDB ответвление от популярной mysql и полностью с ней совместима,
- PHP — язык программирования, который чаще всего применяется веб разработчиками.
Теперь обо всех этих компонентах расскажу подробно.
Дальнейшие действия производим с учетом начальной настройки сервера CetnOS 7 на Айхор Хостинге. Все действия будут правильны для других хостингов и серверов где необходимо развернуть данный функционал на операционной системе CentOS 7.
Настройка FirewallD
Установка и настройка
Проверим наличие firewalld:
systemctl status firewalld = вывод команды = Unit firewalld.service could not be found.
Если устанавливали с минимальной версии CentOS то Firewalld там не установлен.
Установим FirewallD вез вопросов командой:
yum -y install firewalld
Добавим в автозагрузку и запустим:
systemctl enable firewalld systemctl start firewalld
Проверим статус:
systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Чт 2017-04-13 20:22:40 MSK; 14s ago Docs: man:firewalld(1) Main PID: 2099 (firewalld) CGroup: /system.slice/firewalld.service └─2099 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid апр 13 20:22:39 nginx.sevo44.loc systemd[1]: Starting firewalld - dynamic firewall daemon... апр 13 20:22:40 nginx.sevo44.loc systemd[1]: Started firewalld - dynamic firewall daemon.
Или короткой командой:
firewall-cmd --state = вывод команды = running
Всё хорошо. Можно приступать к настройке доступа к серверу.
Открытие портов http и https
Добавим сразу 80 и 443 порты в наш FirewallD:
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --permanent --zone=public --add-service=https
Перезагрузим правила FirewallD:
firewall-cmd --reload = вывод команды = success
Проверим:
firewall-cmd --permanent --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client http https ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
Мне не нужны лишние допуски поэтому удалю dhcpv6-client командой:
firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client = вывод команды = success
Перезагрузим и проверим:
firewall-cmd --reload
= вывод команды =
success
firewall-cmd --permanent --list-all
= вывод команды =
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: http https ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
Все прошло успешно. Теперь открыт доступ к серверу по нужным нам портам.
Установка и настройка NGINX
Установка
Установим самую свежую стабильную версию из репозитория NGINX для CentOS 7:
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
Можно создать файл с необходимым репозиторием:
vim /etc/yum.repos.d/nginx.repo = необходимо добавить = [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
Установку выполним без вопросов:
yum install -y nginx
Создадим ссылку на автозагрузку:
systemctl enable nginx
Запустим сервис:
systemctl start nginx
Проверка работы
Проверим работу сервиса:
netstat -tulpn | grep nginx = вывод команды = tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1119/nginx: master
Для работы netstat нужно установить необходимый пакет:
yum -y install net-tools
Проверим статус запущенного сервиса:
systemctl status nginx
= вывод команды =
● nginx.service - nginx - high performance web server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Чт 2017-04-13 22:17:32 MSK; 4min 38s ago
Docs: http://nginх.org/en/docs/
Process: 1160 ExecStart=/usr/sbin/nginх -c /etc/nginх/nginх.conf (code=exited, status=0/SUCCESS)
Process: 1153 ExecStartPre=/usr/sbin/nginх -t -c /etc/nginх/nginх.conf (code=exited, status=0/SUCCESS)
Main PID: 1163 (nginх)
CGroup: /system.slice/nginх.service
├─1163 nginх: master process /usr/sbin/nginх -c /etc/nginх/nginх.conf
└─1164 nginx: worker process
апр 13 22:17:32 ih378645.vds.myihor.ru systemd[1]: Starting nginx - high performance web server...
апр 13 22:17:32 ih378645.vds.myihor.ru nginх[1153]: nginх: the configuration file /etc/nginх/nginх.conf syntax is ok
апр 13 22:17:32 ih378645.vds.myihor.ru nginх[1153]: nginх: configuration file /etc/nginх/nginх.conf test is successful
апр 13 22:17:32 ih378645.vds.myihor.ru systemd[1]: Failed to read PID from file /run/nginх.pid: Invalid argument
апр 13 22:17:32 ih378645.vds.myihor.ru systemd[1]: Started nginх - high performance web server.
Исправление ошибки Invalid argument
Видим что присутствует ошибка. При этой ошибке все работает но я решил её убрать.
Причина ошибки в том что pid указан два раза:
- /usr/lib/systemd/system/nginx.service — строка PIDFile=/run/nginx.pid
- /etc/nginx/nginx.conf — строка pid /var/run/nginx.pid;
Где убрать этот параметр решать вам. Мой выбор это комментирование параметра в файле /etc/nginx/nginx.conf.
Перезагружаем сервер:
reboot
Проверяем:
systemctl status nginx = вывод команды = ● nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Чт 2017-04-13 23:33:19 MSK; 8s ago Docs: http://nginх.org/en/docs/ Process: 1386 ExecStop=/bin/kill -s QUIT $MAINPID (code=exited, status=0/SUCCESS) Process: 1368 ExecReload=/bin/kill -s HUP $MAINPID (code=exited, status=0/SUCCESS) Process: 1390 ExecStart=/usr/sbin/nginx -c /etc/nginх/nginх.conf (code=exited, status=0/SUCCESS) Process: 1389 ExecStartPre=/usr/sbin/nginх -t -c /etc/nginх/nginх.conf (code=exited, status=0/SUCCESS) Main PID: 1394 (nginx) CGroup: /system.slice/nginх.service ├─1394 nginх: master process /usr/sbin/nginх -c /etc/nginх/nginх.conf └─1395 nginх: worker process апр 13 23:33:19 ih378645.vds.myihor.ru systemd[1]: Starting nginх - high performance web server... апр 13 23:33:19 ih378645.vds.myihor.ru nginх[1389]: nginх: the configuration file /etc/nginх/nginх.conf syntax is ok апр 13 23:33:19 ih378645.vds.myihor.ru nginx[1389]: nginx: configuration file /etc/nginх/nginх.conf test is successful апр 13 23:33:19 ih378645.vds.myihor.ru systemd[1]: Started nginх - high performance web server.
Видим что всё у нас хорошо. Сервис работает и стартует при перезагрузке.
Для окончательной проверки мы можем набрать в браузере http://ip сервера и увидеть приветственное сообщение.
Файлы для настройки
Все необходимые нам файлы для настройки находятся в папке /etc/nginx. По умолчанию корневая папка находится по пути usr/share/nginx/html и именно оттуда берется приветственное сообщение.
Работать мы будем с виртуальными сайтами и тут есть два варианта работы:
- Все правила для сайтов писать в конфигурационном файле /etc/nginx/nginx.conf,
- Создать для каждого виртуального сайта свой файл в /etc/nginx/conf.d с названием имя сайта.conf.
Мне удобней работать с файлами настроек для каждого сайта. Чтобы такая возможность была необходимо в главном файле присутствие строки include /etc/nginx/conf.d/*.conf.
Настройка nginx.conf
Сделаем резервную копию оригинала файла главных настроек Nginx:
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
Основное и главное отличие в работе по сравнению с Apach, это то что Nginx не работает с файлами .htaccess.
Ниже приведу пример настройки моего конфигурационного файла с пояснениями:
cat /etc/nginx/nginx.conf = вывод команды с пояснениями = # nginx version:1.14.0 # Пользователь и группа, от имени которых будет запущен процесс user nginx nginx; # Число воркеров в новых версиях рекомендовано устанавливать параметр auto worker_processes auto; # Уровни лога debug, info, notice, warn, error, crit, alert или emerg # перечислены в порядке возрастания важности. При установке определённого уровня # в лог попадают все сообщения указанного уровня и уровней большей важности. # Например, при стандартном уровне error в лог попадают сообщения уровней error, crit, alert и emerg. # Если параметр не задан, используется error. error_log /var/log/nginx/error.log warn; # Файл в котором будет храниться идентификатор основного процесса # указывать если нет параметра в сервисе! #pid /var/run/nginx.pid; events { # Максимальное количество соединений одного воркера worker_connections 1024; # Метод выбора соединений (для FreeBSD будет kqueue) use epoll; # Принимать максимально возможное количество соединений multi_accept on; } http { # Отключить вывод версии nginx в ответе server_tokens off; # Указываем файл с mime-типами и указываем тип данных по-умолчанию include /etc/nginx/mime.types; default_type application/octet-stream; # Формат для лога доступа и путь к файлу log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; # Метод отправки данных sendfile эффективнее чем read+write sendfile on; # Ограничивает объём данных, который может передан за один вызов sendfile(). # Нужно для исключения ситуации когда одно соединение может целиком захватить воркер sendfile_max_chunk 128k; # Отправлять заголовки и начало файла в одном пакете tcp_nopush on; tcp_nodelay on; # Параметр задаёт таймаут, в течение которого keep-alive соединение с клиентом не будет закрыто со стороны сервера keepalive_timeout 65; # Сбрасывать соединение если клиент перестал читать ответ reset_timedout_connection on; # Разрывать соединение по истечению таймаута при получении заголовка и тела запроса client_header_timeout 3; client_body_timeout 5; # Разрывать соединение, если клиент не отвечает в течение 3 секунд send_timeout 3; # Задание буфера для заголовка и тела запроса client_header_buffer_size 2k; client_body_buffer_size 256k; # Ограничение на размер тела запроса client_max_body_size 12m; # Включение сжатия GZIP # Если используется NGINX proxy надо настраивать на нём!!! #gzip on; #gzip_static on; #gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf; #gzip_comp_level 9; #gzip_proxied any; #gzip_min_length 1000; #gzip_disable "msie6"; #gzip_vary on; # Подключение дополнительных конфигов include /etc/nginx/conf.d/*.conf; }
Настройка default.conf
В папке conf.d находится файл default.conf в настройках которого и указаны параметры приветственной странницы, что нам показал запрос на ip адрес сервера. В случае неправильно указанного адреса будет показано именно это приветствие. Вы можете подправить файлы, пути до которых указанны в нём, по своему желанию.
Сделаем резервную копию оригинала файла default.conf:
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.orig
Посмотрим как выглядит файл default.conf:
cat /etc/nginx/conf.d/default.conf = вывод команды с необходимыми изменениями = server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { # Путь до файлов root /usr/share/nginx/html; index index.php index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/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 # Разрешим использование php location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param DOCUMENT_ROOT /usr/share/nginx/html/; fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; fastcgi_param PATH_TRANSLATED /usr/share/nginx/html$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with one #location ~ /\.ht { # deny all; #} }
Мы добавили index.php и отредактировали секцию location ~ \.php$ отвечающую за обработку файлов php.
Данные действия были сделаны для того чтобы не создавая виртуальный сайт произвести проверку работы php. В последствии лучше привести файл к изначальному виду.
Проверка и команды сервиса
После любых манипуляций с файлами у сервиса есть чудесный механизм проверки сделанных изменений.
Посмотрим как выглядит вывод результата правильных настроек конфигурационных файлов:
nginx -t = вывод команды = nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Видим что все хорошо.
Перезагрузим сервис:
systemctl reload nginx или nginx -s reload
Варианты команд при работе с сервисом.
systemctl [start-stop-restart-reload-status] nginx
Для перезагрузки лучше использовать «reload» так как перезагрузка произойдет не прерывая работу сервиса.
В случае если что то пошло не так, вы всегда можете посмотреть логи находящиеся в папке /var/log/nginx.
Установка и настройка MariaDB
Установка
Для установки MariaDB без вопросов выполним команду со следующими параметрами:
yum install -y mariadb mariadb-server
Создадим ссылки на автозагрузку:
systemctl enable mariadb.service = вывод команды = Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
Запустим службу:
systemctl start mariadb.service
Начальная настройка
Произведем начальную настройку базы данных:
mysql_secure_installation
Сразу при старте попросит указать пароль! Так как его просто нет нажимаем Enter. На все вопросы обычно отвечаю Y.
Проверка и команды сервиса
Проверим сервис MariaDB:
netstat -tap | grep mysql = вывод команды = tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN 769/mysqld
Проверим статус:
systemctl status mariadb.service
= вывод команды =
● mariadb.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
Active: active (running) since Чт 2017-03-23 04:59:53 MSK; 1 day 16h ago
- часть вывода не указана -
Видим что всё хорошо и служба стартует при перезагрузке сервера.
Варианты команд при работе с MariaDB
systemctl [start-stop-restart-status] mariadb.service
В случае если что то пошло не так, вы всегда можете ознакомится посмотрев логи в папке /var/log/mariadb.
Установка и настройка PHP
Выбор версии PHP
Nginx готов к обслуживанию страниц, а MariaDB может хранить данные и управлять информацией. Осталось связать эти два компонента для этого нам и понадобится PHP.
Nginx не содержит PHP, необходимо установить php-fpm (менеджер процессов FastCGI). Nginx будет передавать PHP-запросы на обработку данному программному обеспечению. Обязательно необходим еще пакет php-mysql, позволяющий PHP взаимодействовать с бэкэндом базы данных.
По умолчанию в CentOS ставится версия PHP 5.4. Не понимаю почему до сих пор не обновили до версии 5.6 хотя во многих дистрибутивах она уже идёт по умолчанию.
Узнать актуальную версию вы всегда сможете перейдя по ссылке, которая тут указана. Версия 5.6 будет актуальная до 31 декабря 2018 года.
Установка PHP 5.6
После переезда на нового провайдера обнаружил что ресурс webtatic.com не доступен. После небольшого футбола с провайдерами получил ответ: «104.24.6.38 заблокирован Роскомнадзором, тут уже ничего не поделать». На слово верить я уже давно перестал. Задал вопрос Роскомнадзору. Жду ответ. Ну а пока жду ответа добавил как установить PHP 5.6 из репозитория Remi.
16.04.2017 года ресурс Webtatic.com переехал на новый IP адрес и снова доступен для России. Более подробно можете прочитать в статье WebtaticEL или блокировка в России.
Для репозитория WebtaticEL по ссылке вы можете ознакомиться с инструкцией по установке для операционной системы CentOS 7.
Для начала проверим чтобы в системе не присутствовал php:
php -v -bash: php: command not found
Отлично php нет в системе.
Устанавливаем только из одного репозитория. Различий в работе я не обнаружил.
Добавим необходимые репозиторий WebtaticEL:
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
Для репозитория Remi:
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7*.rpm
В дистрибутив PHP теперь входит opcode который называется ZendOPcache. Данное расширение сохраняет компилированный байт код скрипта и повышает производительность скриптов. Это дополнение необязательно, вы можете выбрать любое другое, но поскольку данное дополнение входит в состав исходного дистрибутива PHP, и оно поддерживается разработчиком, именно его мы и будем использовать. Скорость еще никому не вредила.
Установим необходимый нам вариант php вместе с opcache и всем необходимым для WebtaticEL:
yum install php56w-fpm php56w-opcache php56w-mysql php56w-cli php56w-gd php56w-ldap php56w-odbc php56w-pdo php56w-pecl-memcache php56w-pear php56w-xml php56w-xmlrpc php56w-mbstring php56w-snmp php56w-soap php56w-imap
Установим необходимый нам вариант php вместе с opcache и всем необходимым для Remi:
yum --enablerepo=remi,remi-php56 install php-fpm php-opcache php-mysql php-cli php-gd php-ldap php-odbc php-pdo php-pecl-memcache php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap php-imap
После установки проверим правильность:
php -v = вывод команды = PHP 5.6.30 (cli) (built: Jan 26 2017 00:22:46) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Вся настройка осуществляется редактированием 3 файлов а именно:
- /etc/php.ini — главный конфигурационный файл php,
- /etc/php-fpm.conf — главный файл настройки php-fpm,
- /etc/php-fpm.d/www.conf — наш файл настройки php-fpm.
Настройка файла php.ini
Настроим главный конфигурационный файл php:
mcedit /etc/php.ini = необходимые изменения = # Запрет на исполнение произвольного кода на сервере с правами php процесса при загрузке файла. cgi.fix_pathinfo=0 # Избежим ошибок часового пояса в файле /var/log/php-fpm/www-error.log date.timezone = "Europe/Moscow"
Остальные параметры можно не трогать, так как их настройка будет осуществлена средствами настройки Nginx.
Настройка файла /etc/php-fpm.conf
В этом файле указанны основные настройки которые мы не будем трогать, лишь проверим наличие необходимых нам параметров.
Откроем файл:
cat /etc/php-fpm.conf = вывод команды и проверка необходимых параметров = ;;;;;;;;;;;;;;;;;;;;; ; FPM Configuration ; ;;;;;;;;;;;;;;;;;;;;; ; All relative paths in this configuration file are relative to PHP's install ; prefix. ; Include one or more files. If glob(3) exists, it is used to include a bunch of ; files from a glob(3) pattern. This directive can be used everywhere in the ; file. ; Разрешаем подгружать необходимые нам файлы настроек include=/etc/php-fpm.d/*.conf ;;;;;;;;;;;;;;;;;; ; Global Options ; ;;;;;;;;;;;;;;;;;; [global] ; Pid file ; Default Value: none pid = /var/run/php-fpm/php-fpm.pid ; Error log file ; Default Value: /var/log/php-fpm.log ; Путь куда пишутся логи ошибок error_log = /var/log/php-fpm/error.log ; Log level ; Possible Values: alert, error, warning, notice, debug ; Default Value: notice ;log_level = notice ; If this number of child processes exit with SIGSEGV or SIGBUS within the time ; interval set by emergency_restart_interval then FPM will restart. A value ; of '0' means 'Off'. ; Default Value: 0 ;emergency_restart_threshold = 0 ; Interval of time used by emergency_restart_interval to determine when ; a graceful restart will be initiated. This can be useful to work around ; accidental corruptions in an accelerator's shared memory. ; Available Units: s(econds), m(inutes), h(ours), or d(ays) ; Default Unit: seconds ; Default Value: 0 ;emergency_restart_interval = 0 ; Time limit for child processes to wait for a reaction on signals from master. ; Available units: s(econds), m(inutes), h(ours), or d(ays) ; Default Unit: seconds ; Default Value: 0 ;process_control_timeout = 0 ; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging. ; Default Value: yes daemonize = yes ;;;;;;;;;;;;;;;;;;;; ; Pool Definitions ; ;;;;;;;;;;;;;;;;;;;; ; See /etc/php-fpm.d/*.conf
Все остальные параметры мы будем делать в файле /etc/php-fpm.d/www.conf
Настройка файла /etc/php-fpm.d/www.conf
В этом файле мы и укажем все параметры необходимые нам для работы php-fpm.
Посмотрим файл:
cat /etc/php-fpm.d/www.conf = вывод команды с пояснениями = [www] # Используем порт 9000 по адресу 127.0.0.1 listen = 127.0.0.1:9000; listen.allowed_clients = 127.0.0.1 # Пользователь и группа от которой работает php user = nginx group = nginx # Как будут создаваться новые рабочие процессы pm = dynamic # Максимальное количество рабочих процессов pm.max_children = 20 # Число запущенных процессов при старте сервера pm.start_servers = 6 # Минимальное и максимальное количество процессов в простое pm.min_spare_servers = 4 pm.max_spare_servers = 8 # Логи работы slowlog = /var/log/php-fpm/www-slow.log php_admin_value[error_log] = /var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on 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 pm.status_path = /status
Так как мы указали пользователя Nginx, то права на папки и файлы виртуальных сайтов должны быть именно такие!
Можно использование Unix сокет в PHP-FPM, но какие он дает преимущества я так и не понял. Для применения необходимо в файле /etc/php-fpm.d/www.conf вместо строчки listen = 127.0.0.1:9000 прописать строку listen = /var/run/php-fpm/php5-fpm.sock и не забыть применить этот параметр в файлах настройки виртуальных сайтов.
Также будет необходимо создать папку с правами где будут находится наши данные сессии:
cd /var/lib/php/ mkdir session chown nginx:nginx session/
У меня не сложилась нормальная работа по сокету, в связи с тем что периодически он отказывался работать и помогала лишь ручная перезагрузка сервера.
Запуск, проверка, команды работы с PHP-FPM
Создадим ссылки на автозагрузку для php-fpm:
systemctl enable php-fpm.service
Запустим командой:
systemctl start php-fpm.service
Проверим работу сервиса:
netstat -tulpn | grep php-fpm tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 443/php-fpm: master
Если вы используйте сокет то вывод проверки будет пустой и необходимо проверить работу выводом статуса 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 Чт 2017-03-23 04:59:50 MSK; 2 days ago
- часть вывода не указана -
Видим что сервис запущен и стартует при перезагрузки сервера.
Варианты команд при работе с Php-fpm
systemctl [start-stop-restart-status] php-fpm.service
Если пошло что то не так, всегда можно посмотреть логи находящиеся по адресу /var/log/php-fpm.
Вывод информации о версии PHP
Последнее что нам осталось это проверить как браузер обрабатывает php файлы и для этого в стандартной папке nginx мы создадим файл info.php который выведет нам информацию о версии php со всеми параметрами.
Создадим файл info.php указав в нем необходимый код:
mcedit /usr/share/nginx/html/info.php = необходимый код = <?php phpinfo(); ?>
Назначим необходимые права на папку и все файлы внутри:
chown -R nginx:nginx /usr/share/nginx/html
Откроем в браузере наш файл указав http://ip адрес сервера/info.php
Результат
После всех произведенных действий мы настроили для работы веб сервер с необходимыми нам параметрами. Конечно в тексте присутствуют неточности как в понимании некоторых технических процессов так и самой настройки. Внимательно выслушаю все дополнения, исправления и произведу изменения в тексте статьи.
Ух ты, хороший сайт по Линуксу!
Ув. автор! Директория указывается с правым слешем на коце:
свой файл в /etc/nginx/conf.d с названием имя сайта.conf
должно быть …/conf.d/
Важно прививать новичкам полезные стандарты с «детства»
Спасибо за замечание. Вроде мелочь а на самом деле очень важная.
Установил все по тексту… Где то на середине запутался, но дошел до конца статьи и … О ЧУДО!!!! Все заработало. Осталось разобраться как именно ))))
Автору Огромная БлагоДарность !!!! Материал очень доходчивый, правда местами не хватает пояснений.
Рад что помогло 🙂 Стараюсь писать с пояснениями, но не всегда получается всё учесть. В каком именно месте не хватает пояснений?
Обновите статью. Нет в этом репозитории nginx
Обновил. Спасибо за замечание.
«Откроем в браузере наш файл указав http://ip адрес сервера/info.php» — на этом месте страница скачивается, вместо того, чтобы открыться
Не работает связка nginx c php. Проверяйте службу php, настройки php-fpm и параметры в настройках сайта для nginx.