Php

Centos 7 php apache: Установка и обновление php 7 на CentOS 7

Содержание

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

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

Устанавливаем phpMyAdmin в CentOS 7

К сожалению, официального репозитория рассматриваемого приложения не существует, поэтому придется сначала добавить в систему пользовательское хранилище, из которого далее и выполняется сам процесс инсталляции. Кроме этого, на данный момент особой популярностью пользуются две версии phpMyAdmin, мы же расскажем об установке каждой из них и о дальнейшей настройке под веб-сервер Apache или Nginx.

Добавление компонентов phpMyAdmin

Конечно, при работе с новыми приложениями в Линукс всегда первоочередно происходит добавление их библиотек в систему, и phpMyAdmin не стал исключением. Давайте затронем тему двух доступных версий, начав с рекомендованной разработчиками.

Установка phpMyAdmin 4.4

phpMyAdmin 4.4 работает на языке программирования PHP версии 5.4, а, как известно, эта версия не самая свежая, что не мешает ей быть самой популярной и востребованной. Ее установка в CentOS производится через классический «Терминал» буквально в несколько действий:

  1. Запустите консоль любым удобным методом, например, через меню «Приложения».
  2. Впишите команду sudo rpm -iUvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm для загрузки пакета программного обеспечения из пользовательского репозитория Extra Packages for Enterprise Linux.
  3. Для продолжения процесса введите пароль от учетной записи с рут-доступом.
  4. После завершения добавления пакетов следует обновить список системных библиотек командой sudo yum -y update.
  5. Указанная выше команда инсталлирует все доступные обновления, и после этого останется только инсталлировать сам клиент приложения через sudo yum -y install phpmyadmin.

При использовании веб-сервера, например, Apache, вам останется только перезагрузить его и проверить работу установленного компонента, перейдя по адресу http://ip_вашего_сервера/phpmyadmin.

Установка последней версии phpMyAdmin

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

  1. Добавьте новый пакет в систему, скачав его из репозитория через sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm.
  2. Обновите доступные системные библиотеки с помощью уже знакомой команды sudo yum update.
  3. Включите поддержку последней версии приложения, на данный момент это 7.1. Для этого введите yum-config-manager --enable remi-php71.
  4. Установите ПО sudo yum install phpmyadmin, а подходящая версия PHP определится автоматически.

На этом добавление всех компонентов завершено, однако перед началом работы с веб-интерфейсом потребуется настроить и сам сервер. Далее мы разберем осуществление этой процедуры в двух популярных решениях — Apache и Nginx.

Настройка phpMyAdmin в Nginx

Некоторые пользователи предпочитают работать с веб-сервером Nginx, поскольку тот обеспечивает высокое быстродействие и производительность. Если вы являетесь сторонником этого программного обеспечения, после инсталляции phpMyAdmin придется совершить ряд настроек, чтобы наладить работоспособность всего механизма.

Первоочередно обратите внимание на то, чтобы сам веб-сервер уже добавлен в операционную систему, если это не так, поочередно впишите в консоль следующие команды:

sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx

После этого следуйте такой инструкции:

  1. Включите phpMyAdmin в директорию веб-сервера с помощью строки sudo ln -s /usr/share/phpMyAdmin /var/www/html/phpmyadmin.
  2. После внесения изменений осуществите перезапуск, введя sudo systemctl restart php-fpm.
  3. Через стандартный текстовый редактор запустите конфигурационный файл sudo vi /etc/nginx/nginx.conf.
  4. Отыщите блок «http» и добавьте туда строку disable_symlinks off;.
  5. Сохраните изменения и закройте файл, после чего перезагрузите Nginx sudo nginx -s reload.

Рекомендуется обезопасить веб-сервер путем создания случайного пароля. Для этого введите openssl passwd и скопируйте результат. Далее вам нужно будет запустить файл с паролями с помощью sudo vi /etc/nginx/passwords и внести туда новую строку в формате имя_пользователя:пароль, чтобы в итоге получилось, например, Admin:4B7fsek4L2.

Настройка phpMyAdmin в Apache

Хоть предыдущий веб-сервер и считается лучше в некоторых аспектах, Apache все еще остается достаточно популярным решением и используется в системе программного обеспечения LAMP. Его установка в CentOS производится буквально несколькими командами:

yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service

Если сервер уже добавлен или вы выполнили указанные выше команды, можно переходить непосредственно к самой настройке phpMyAdmin, а делается это следующим образом:

  1. Задайте пароль для доступа администратора с помощью sudo htpasswd -c /etc/httpd/passwords admin.
  2. Запустите конфигурационный файл для дальнейшего редактирования: vi /etc/httpd/conf.d/phpMyAdmin.conf.
  3. Отыщите секцию «<Directory>» и вставьте такое содержимое:

    Options Indexes FollowSymLinks
    AllowOverride All
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /etc/httpd/passwords
    Require valid-user

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

Мы рады, что смогли помочь Вам в решении проблемы.

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Помогла ли вам эта статья?

ДА НЕТ

Как установить PHP на CentOS 8

PHP является одним из наиболее часто используемых языков программирования на стороне сервера. Многие популярные CMS и фреймворки, такие как WordPress, Magento и Laravel, построены на PHP.

В этой статье мы обсудим, как установить PHP 7.2, 7.3 или 7.4 в CentOS 8. Прежде чем выбирать, какую версию PHP устанавливать, убедитесь, что ваши приложения ее поддерживают.

Мы также покажем вам, как интегрировать PHP с Nginx и Apache.

 

CentOS 8 распространяется с PHP 7.2. Эта версия поддерживает большинство современных приложений PHP, но больше не будет активно поддерживаться с ноября 2019 года. Более новые версии PHP доступны в репозитории Remi.

 

Если вы собираетесь установить стабильный дистрибутив PHP версии 7.2, пропустите этот шаг. В противном случае, если вы хотите установить PHP 7.3 или 7.4, включите репозиторий Remi, выполнив следующую команду от имени пользователя root или пользователя с привилегиями sudo:

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Приведенная выше команда также активирует репозиторий EPEL.

После завершения установки выполните команду ниже, чтобы получить список всех доступных версий PHP:

sudo dnf module list php

Вывод покажет список всех доступных модулей, включая связанный поток, версию и профили установки.

Last metadata expiration check: 0:02:11 ago on Fri 18 Oct 2019 08:31:43 PM UTC.
CentOS-8 - AppStream
Name    Stream       Profiles                     Summary                 
php     7.2 [d][e]   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

Модуль PHP по умолчанию установлен на PHP 7.2. Чтобы установить более новую версию PHP, включите соответствующую версию:

PHP 7.3

sudo dnf module reset php
sudo dnf module enable php:remi-7.3

PHP 7.4

sudo dnf module reset php
sudo dnf module enable php:remi-7.4

Теперь вы готовы установить PHP на свой сервер CentOS.

 

Следующая команда установит PHP и некоторые из наиболее распространенных модулей PHP:

sudo dnf install php php-opcache php-gd php-curl php-mysqlnd

PHP использует FPM устанавливается как зависимость и используется как сервер FastCGI. Запустите службу FPM и включите ее автоматический запуск при загрузке:

sudo systemctl enable --now php-fpm

 

 

Если вы используете Apache в качестве веб-сервера, перезапустите службу httpd, используя следующую команду, и все готово:

sudo systemctl restart httpd

 

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

sudo nano /etc/php-fpm.d/www.conf

/etc/php-fpm.d/www.conf

...
user = nginx
...
group = nginx

Убедитесь, что /var/lib/phpкаталог имеет правильное владение:

chown -R root:nginx /var/lib/php

После этого перезапустите службу PHP FPM:

sudo systemctl restart php-fpm

Затем отредактируйте директиву виртуального хоста Nginx и добавьте следующий блок местоположения, чтобы Nginx мог обрабатывать файлы PHP:

server {

    # . . . other code

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Чтобы новая конфигурация вступила в силу, перезапустите службу Nginx:

sudo systemctl restart nginx

 

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Установка PHP 7.4 и настройка php-fpm.sock — Fastcgi Process Manager для Nginx. — Хомячье логово

Содержание:

1. Введение.
2. Настройка репозиториев.
3. Установка php 7.4 и php-fpm.sock.
4. Настройка php-fpm.sock.
5. Оригиналы источников информации.


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 утилиты:

# yum -y install yum-utils mc

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

# yum -y install epel-release

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

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

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

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

# yum-config-manager --disable remi-safe

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

# yum-config-manager --disable ius

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

# yum-config-manager --enable remi

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

# yum repolist

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

# ls /etc/yum.repos.d/remi*

Как видите, есть несколько версий php, сейчас мы можем активировать php 7.4, для этого откройте соответствующий файл, найдите секцию [remi-php74], в ней найдите enabled и поменяйте значение с 0 на 1:

# mcedit /etc/yum.repos.d/remi-php74.repo

enabled=1

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

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

# yum-config-manager --enable remi-php74

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

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

# yum -y install php74

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

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

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

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

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

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

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

# yum -y net-tools

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

# netstat -tulpn | grep php-fpm

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

# mcedit /etc/php-fpm.d/www.conf

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

listen = 127.0.0.1:9000

Вот так:

; listen = 127.0.0.1:9000

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

listen = /var/run/php-fpm/php-fpm.sock
listen.mode = 0660
listen.owner = nginx
listen.group = nginx

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

user = apache
group = apache

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

user = nginx
group = nginx

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

# systemctl restart php-fpm

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

# ll /var/run/php-fpm/php-fpm.sock

Нужно дать права движку web-сервера на операции с файлами и сессиями в специальной папке /var/lib/php/session.

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

# mkdir -p /var/lib/php/session

Накидываем права:

# chown -R nginx:nginx /var/lib/php/session
# chmod -R 755 /var/lib/php/session

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

5. Оригиналы источников информации.

  1. serveradmin.ru «Настройка web сервера nginx, php-fpm, php7 на CentOS 8» от 28.02.2020.
  2. vpsadm.ru «Разница между режимами, PHP-FPM, CGI, FastCGI, модуль Apache».

PHP от Remi для CentOS

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

Введение

В статье будет рассказано про использование репозитория на системах 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.

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

для CentOS 8

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

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

dnf install dnf-utils http://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.

Назначим каталогу /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.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Решение проблемы перезапуска Apache/httpd на CentOS 7

просмотров: 310775 ноября 2016 года

На моем сервере вдруг возникла проблема, которой раньше не было.
Веб-сервер внезапно стал падать, как по расписанию…

Немного покопав, я выяснил, что сервер падал таки по расписанию, а именно — в cron.dialy выполялись некоторые обновления настроек, после чего он должен был удачно перезагружаться…
Как можно догадаться, никаких «удачно» не происходило.

Сервер вылетал с ошибкой:

HOST_NAME /var/log[0]
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/httpd.service.d
           └─nofile.conf
   Active: failed (Result: exit-code) since Sat 2016-11-05 21:58:01 EET; 22s ago
  Process: 4419 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE)
  Process: 4417 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 4417 (code=exited, status=1/FAILURE)

Nov 05 21:58:01 HOST_NAME systemd[1]: Starting The Apache HTTP Server...
Nov 05 21:58:01 HOST_NAME httpd[4417]: [Sat Nov 05 21:58:01.608778 2016] [alias:warn] [pid 4417] AH00671: The Alias directive in /etc/httpd/conf.d/autoindex.conf at line 21 will probably never match because it overlaps an earlier Alias.
Nov 05 21:58:01 HOST_NAME httpd[4417]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 12.34.56.78. Set the 'ServerName' directive globally to suppress this message
Nov 05 21:58:01 HOST_NAME systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Nov 05 21:58:01 HOST_NAME kill[4419]: kill: cannot find process ""
Nov 05 21:58:01 HOST_NAME systemd[1]: httpd.service: control process exited, code=exited status=1
Nov 05 21:58:01 HOST_NAME systemd[1]: Failed to start The Apache HTTP Server.
Nov 05 21:58:01 HOST_NAME systemd[1]: Unit httpd.service entered failed state.
Nov 05 21:58:01 HOST_NAME systemd[1]: httpd.service failed.

Что ж, не буду лукавить, помог мне в очередной раз Гугл…)) оказалось что проблема скрылась в методах этих самых перезагрузок, а точнее, — если apache установлен из репозиториев (yum..) то в файле /usr/lib/systemd/system/httpd.service, скорее записано следующее:

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}





KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 

Как подсказало сообщество apachelounge.com, такая запись не корректна или — это баг.

Следует в файл прописать следующее:

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -k start
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/usr/sbin/httpd $OPTIONS -k graceful-stop
PrivateTmp=true
# If you have 90 seconds reload problem - uncomment several lines below (mixed - worked for me)
#LimitNOFILE=infinity
#KillMode=mixed
#KillMode=none
#TimeoutStopSec=10 [Install] WantedBy=multi-user.target

Для перезагрузки модуля systemctl введите комманду:

systemctl daemon-reload

 

Источники

Установка Xdebug PHP7 в ISPmanager (Linux CentOS) — WebNoob.ru

Не так давно открыл для себя чудо-средство для отладки php скриптов — Xdebuger.
Сразу же встал вопрос о включении модуля xdebuge на удаленном сервере (на котором собственно и ведется разработка).
Все бы ничего, вот только сервер работает под управлением панели ISPmanager и почти все проекты обрабатывает PHP7.1, который установлен в системе как php-fpm (fast-cgi), а это значит что просто так поставить модуль из репозитория не получится.

Начал шерстить инет, информация очень скудная и кусками.
Собрал все в один гайд:

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

git clone https://github.com/xdebug/xdebug.git



git clone https://github.com/xdebug/xdebug.git

И переходим в директорию скачанного проекта

Запускаем phpize для нашей версии PHP

Установим в систему пакеты необходимые для компиляции

yum install -y autoconf gcc glibc glibc-common



yum install -y autoconf gcc glibc glibc-common

Далее конфигурируем вот с такими параметрами:

./configure —enable-xdebug —with-php-config=/opt/php71/bin/php-config



./configure —enable-xdebug —with-php-config=/opt/php71/bin/php-config

Компилируем

make clean
make
make install



make clean

make

make install

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

nano /opt/php71/etc/mods-available/xdebug.ini



nano /opt/php71/etc/mods-available/xdebug.ini

С содержимым

zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9001
xdebug.idekey=PHPSTORM
xdebug.remote_log=/var/www/logs/xdebug.log



zend_extension=xdebug.so

xdebug.remote_enable=1

xdebug.remote_handler=dbgp

xdebug.remote_host=127.0.0.1

xdebug.remote_port=9001

xdebug.idekey=PHPSTORM

xdebug.remote_log=/var/www/logs/xdebug.log

Создадим символическую ссылку для активации модуля

ln -s /opt/php71/etc/mods-available/xdebug.ini /opt/php71/etc/php.d/xdebug.ini



ln -s /opt/php71/etc/mods-available/xdebug.ini /opt/php71/etc/php.d/xdebug.ini

И перезагрузим Apache

Проверяем конфигурацию по средствам:

Профит

apache — Как настроить php-fpm на CentOS 7?

Переполнение стека

  1. Около
  2. Товары

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Как установить PHP 7 на CentOS 7 с веб-сервером Apache

Как установить PHP 7 на CentOS 7 с веб-сервером Apache

В этом руководстве мы узнаем, как установить PHP 7 в операционной системе CentOS 7 Linux.

PHP 7 все еще не поставляется с официальным репозиторием программного обеспечения CentOS 7, поэтому мы должны либо использовать сторонний репозиторий для PHP 7, либо мы можем собрать PHP 7 из исходников. В этом руководстве мы изучим оба метода.

Сначала мы установим PHP 7 с использованием стороннего репозитория, а затем посмотрим, как собрать PHP 7 из исходников. И мы используем Apache HTTPD Server в качестве нашего веб-сервера для CentOS 7 PHP.

Установите PHP 7 с помощью Webtatic Repository

Репозиторий, который мы собираемся использовать, называется веб-репозиторием, который предоставляет последнюю версию PHP 7 для CentOS 7.Итак, давайте посмотрим, как это делается.

Установка и настройка веб-сервера Apache

Первый шаг — установить и настроить веб-сервер Apache в CentOS 7.

ням установить httpd

systemctl запуск httpd

systemctl включить httpd

Затем добавьте следующие правила Firewalld, чтобы разрешить службу http.

firewall-cmd –permanent –add-service = http

firewall-cmd –permanent –add-service = https

firewall-cmd –перезагрузить

Добавить веб-репозиторий для CentOS 7

Репозиторий

Webtatic зависит от репозитория Fedora epel, поэтому мы добавим репозитории как webtatic, так и epel.

об / мин -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

об / мин -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Затем запустите команду yum repolist, чтобы убедиться, что репозитории включены.

Установите PHP 7 с помощью команды yum install

Сначала запустите команду поиска yum, как показано ниже, чтобы узнать, какая версия PHP 7 доступна для установки.

Как видите, в нашем случае пакет PHP под названием php70w теперь доступен для установки.

yum install php70w php70w-mysql

И, наконец, перезапустите сервер Apache HTTPD с помощью команды systemctl.

Теперь, если вы наберете php -v в командной строке, вы получите установленную вами версию PHP 7.

Для тестирования установки PHP создайте файл .php с функцией phpinfo () внутри папки / var / www / html и откройте его через веб-браузер.

Соберите PHP 7 из исходного кода в CentOS 7

Теперь давайте посмотрим, как собрать и скомпилировать PHP 7 из исходников.Мы собираемся загрузить последний пакет PHP 7 с официального сайта php.net и установить его на CentOS 7. Итак, следуйте дальше.

Установите Apache и Apache APXS

yum install httpd httpd-devel

systemctl запуск httpd

systemctl включить httpd

Добавить правила брандмауэра

firewall-cmd –permanent –add-service = http

firewall-cmd –permanent –add-service = https

firewall-cmd –перезагрузить

Установить зависимости

Установите следующие пакеты, которые необходимы для компиляции PHP 7 на CentOS 7.

yum install bison libxml2-devel gcc libtool bzip2

об / мин -Uvh http://mirror.yandex.ru/fedora/russianfedora/russianfedora/free/el/releases/7/Everything/x86_64/os/re2c-0.13.5-7.el7.R.x86_64.rpm

Загрузить PHP 7

Перейдите по следующему URL-адресу https://secure.php.net/downloads.php и загрузите последнюю версию установщика PHP 7 bz2 или gz на свой сервер CentOS 7.

Распакуйте tar-файл

Создайте новый каталог с именем / usr / src / php7 и извлеките tar-файл php 7 в каталог / usr / src / php7.

мкдир -p / usr / src / php7

tar -jxvf php-7.0.6.tar.bz2 -C / usr / src / php7 /

Если вы загрузили пакет gz PHP, используйте флаг -zxvf с командой tar следующим образом.

tar -zxvf php-7.0.6.tar.bz2 -C / usr / src / php7 /

Компиляция и установка PHP 7

Теперь переходим в папку, которую мы извлекаем внутри каталога / usr / src / php7 /.

компакт-диск /usr/src/php7/php-7.0.6/

И запустите сценарий конфигурации со следующими параметрами, как показано ниже.

./configure –with-apxs2 = / usr / bin / apxs –prefix = / usr / local / php7 –with-config-file-path = / etc / php7 / –with-mysqli

Затем выполните команды make и make install для установки PHP 7 на CentOS 7.

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

libtool –finish /usr/src/php7/php-7.0.6/libs

chmod 755 /usr/lib64/httpd/modules/libphp7.so

Создать файл php.ini для PHP 7

мкдир / и т. Д. / Php7

cp php.ini-development /etc/php7/php.ini

Создайте файл конфигурации Apache PHP 7

сенсорный /etc/httpd/conf.d/php7.conf

Затем откройте php7.conf в текстовом редакторе и добавьте следующие строки.

Приложение SetHandler / x-httpd-php

Сохраните файл конфигурации и перезапустите веб-сервер Apache.

И мы закончили. Вы можете получить подробную информацию о вашей установке, используя функцию phpinfo ().

Хорошо, это конец этого урока. Мы узнали, как установить PHP 7 на CentOS 7 с помощью Webtatic Repository, а также узнали, как собрать PHP 7 из исходного кода на CentOS 7 Linux Server.

Centos 7Linux

PHP 7.0 на CentOS / RHEL 6.9 и 7.4 через Yum — Webtatic.com

PHP 7.0.33 был выпущен на PHP.net 6 декабря 2018 г., а также
доступно для CentOS / RHEL 6.9 и 7.4 в Webtatic через Yum.

Источник — проблемы

Установщик

PEAR теперь поддерживает PHP 7.0, однако большинство библиотек pecl не
поддерживать его, не добавляя совместимости со стороны сопровождающих, поэтому только pecl
библиотеки, которые его поддерживают, будут в репозитории Webtatic.

Обновление 2016-12-17 — Webtatic выпустила PHP 7.1.0 для CentOS / RHEL 6 и 7

PHP 7.0.0 поставляется с новой версией Zend Engine с такими функциями, как (неполный список):

  • Повышенная производительность: PHP 7 в два раза быстрее, чем PHP 5.6
  • Постоянная поддержка 64-битных
  • Многие фатальные ошибки теперь являются Исключениями
  • Удаление старых и неподдерживаемых SAPI и расширений
  • Оператор объединения с нулевым значением (??)
  • Оператор комбинированного сравнения (<=>)
  • Объявления типа возврата
  • Объявления скалярных типов
  • Анонимные классы

Чтобы узнать, что еще было добавлено, ознакомьтесь с Миграцией с PHP 5.6.x в PHP 7.0.x.

Для установки сначала необходимо добавить информацию о репозитории Webtatic EL yum, соответствующую вашей версии CentOS / RHEL, в yum:

CentOS / RHEL 7.x:

  yum install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm  

CentOS / RHEL 6.x:

  yum install epel-release
об / мин -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm  

Теперь вы можете установить PHP 7.0 mod_php SAPI (вместе с кешем опкодов), выполнив:

  yum install php70w php70w-opcache  

Вы также можете установить PHP 7.0 в php-fpm SAPI (вместе с кешем кода операции, выполнив:

  yum install php70w-fpm php70w-opcache  

См. Список пакетов ниже для дополнительных SAPI и расширений PHP.

Это установит mod_php SAPI для PHP, однако есть и другие
sapis, например php-fpm (через пакет php70w-fpm). Читайте ниже, чтобы узнать больше
информация о доступных SAPI

Если вы хотите обновить php до этой версии, рекомендуется
сначала убедитесь, что ваша система поддерживает обновление, e.грамм. убедившись, что любой
Программное обеспечение, подобное CPanel, может работать после обновления.

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

Если вы знаете, что делаете, вы можете обновить PHP с помощью:

  yum install yum-plugin-replace
yum заменить php-common --replace-with = php70w-common  

Скорее всего, вы получите сообщение «ПРЕДУПРЕЖДЕНИЕ: невозможно разрешить всех поставщиков…».Это нормально, и вы можете продолжить, связав «y». Вам будет предоставлен
шанс увидеть, какие пакеты будут установлены и удалены, прежде чем снова быть
дали шанс подтвердить.

SAPI

SAPI — это разные среды выполнения PHP.

(без потоковой безопасности) Этот SAPI, содержащийся в пакете php70w, интегрируется в Apache Httpd (2.2. * В RHEL / CentOS 6, 2.4. * В RHEL / CentOS 7). Это стандартный SAPI для использования с httpd prefork mpm (httpd работает в режиме по умолчанию.Это не является потокобезопасным, но не обязательно, потому что предварительная вилка не использует потоки. Он расположен по адресу /usr/lib[64 ]/httpd/modules/libphp7.so

.

Этот SAPI, содержащийся в пакете php70w-cli, позволяет запускать сценарии из командной строки, а также имеет встроенный веб-сервер для использования в процессе разработки. Находится в / usr / bin / php

Содержащийся в пакете php70w-fpm, fpm (FastCGI Process Manager) представляет собой масштабируемый процесс FastCGI, который действует аналогично тому, как Httpd prefork mpm управляет своими вилками.Расположен в / usr / sbin / php-fpm, он управляется с помощью служебного скрипта /etc/init.d/php-fpm

.

Содержащийся в пакете php70w-phpdbg, phpdbg имеет возможность отлаживать сценарии с помощью точек останова из командной строки, а также поддерживает удаленную отладку с использованием внешнего клиента Java для удаленной связи.

Этот SAPI, содержащийся во встроенном пакете php70w, позволяет встраивать PHP в другие приложения. Его библиотека находится по адресу /usr/lib[64pting/libphp7.so

.

Эти SAPI, содержащиеся в пакете php70w-cli, не рекомендуются для использования, но доступны там, где это необходимо.Оба они существуют в двоичном файле по адресу / usr / bin / php-cgi.

(безопасность потоков) Этот SAPI, содержащийся в пакете php70w, интегрируется в Apache Httpd (2.2. * На RHEL / CentOS 6, 2.4. * На RHEL / CentOS 7). Это стандартный SAPI для использования с httpd worker mpm. Он должен быть потокобезопасным, но не может гарантировать, что это будет, и уж тем более не в рамках дополнительных расширений PHP. Лучше использовать FastCGI SAPI, чем этот. Он расположен по адресу /usr/lib[64pting/httpd/modules/libphp7-zts.so

.

Пакеты

Упаковка Обеспечивает
php70w mod_php, php70w-zts
php70w-bcmath
php70w-cli php-cgi, php-pcntl, php-readline
php70w-общий php-api, php-bz2, php-calendar, php-ctype, php-curl, php-date, php-exif, php-fileinfo, php-filter, php-ftp, php-gettext, php-gmp, php -hash, php-iconv, php-json, php-libxml, php-openssl, php-pcre, php-pecl-Fileinfo, php-pecl-phar, php-pecl-zip, php-reflection, php-session, php -shmop, php-simplexml, php-сокеты, php-spl, php-tokenizer, php-zend-abi, php-zip, php-zlib
php70w-dba
php70w-devel
php70w-встроенный встроенный PHP-девел
php70w-энчант
php70w-fpm
php70w-gd
php70w-imap
php70w-interbase php_database, php-firebird
php70w-intl
php70w-ldap
php70w-mbstring
php70w-mcrypt
php70w-mysql php-mysqli, php_database
php70w-mysqlnd php-mysqli, php_database
php70w-odbc php-pdo_odbc, php_database
php70w-opcache php70w-pecl-zendopcache
php70w-pdo php70w-pdo_sqlite, php70w-sqlite3
php70w-pdo_dblib php70w-mssql
php70w-груша
php70w-pecl-apcu
php70w-pecl-imagick
php70w-pecl-memcached
php70w-pecl-mongodb
php70w-pecl-redis
php70w-pecl-xdebug
php70w-pgsql php-pdo_pgsql, php_database
php70w-phpdbg
php70w-процесс php-posix, php-sysvmsg, php-sysvsem, php-sysvshm
php70w-pspell
php70w-перекодировать
php70w-snmp
php70w-мыло
php70w-tidy
php70w-xml php-dom, php-domxml, php-wddx, php-xsl
php70w-xmlrpc

Кеши кодов операций

Дистрибутив PHP теперь поставляется с кешем опкодов.Это Zend Optimizer +
кэш опкодов, теперь известный как расширение Zend OPcache. Это расширение
необязательный, поэтому не мешает вам использовать альтернативный.

Поскольку он включен в исходный код PHP, он будет хорошо
поддерживаются и более подходят для использования, пока другие кеши кодов операций
обновлен в ближайшие месяцы.

  yum install php70w-opcache  

error_reporting E_ALL включает E_STRICT

Как упоминалось в PHP 5.4 гид:

Вы можете получить намного больше ошибок из журналов ошибок, если по умолчанию ваш
error_reporting теперь установлен в E_ALL без явного отключения E_STRICT. В
php.ini по умолчанию, который поставляется с пакетом PHP, по умолчанию отключает его, но
если вы обновляетесь с существующей установки, ваш php.ini может не быть
обновлено, то есть, скорее всего, оно будет включено.

Установите и настройте mod_rewrite для Apache на CentOS 7

Содержание

Введение

Apache mod_rewrite можно использовать для управления URL-адресами.Он встроен в базовый веб-сервер Apache.
Этот модуль предоставляет возможность манипулировать URL-адресами до определения соответствующего файла или передачи скрипту. Это может помочь вам, если вы хотите предложить разные URL-адреса для одного и того же файла. Это чаще всего используется, когда посетитель переходит на определенный веб-адрес, но сервер возвращает другую страницу.
Этот модуль использует механизм перезаписи на основе правил для перезаписи запрошенных URL-адресов на лету. Он поддерживает неограниченное количество правил, чтобы обеспечить действительно гибкий и мощный механизм управления URL-адресами.Он может скрывать конфиденциальную информацию, такую ​​как строки запроса, от URL-запросов. Это потенциально может повысить безопасность веб-сайта.

В этом руководстве мы объясним, как включить mod_rewrite , и продемонстрируем некоторые распространенные способы его использования в Apache на CentOS 7.

Требования

  • Сервер под управлением CentOS 7

Установить Apache

Прежде чем мы начнем с установки модуля mod_rewrite , нам нужно установить веб-сервер Apache.

Чтобы установить Apache, выполните следующую команду:

  sudo yum установить httpd -y
  

После установки Apache запустите службу httpd и включите ее автоматический запуск при загрузке.

Мы можем сделать это с помощью следующих команд:

  sudo systemctl start httpd.service
sudo systemctl включить httpd.service
  

Затем мы должны разрешить доступ к порту Apache по умолчанию 80 (HTTP), используя firewalld .

Мы можем сделать это, выполнив следующую команду:

  sudo firewall-cmd --permanent --add-port = 80 / tcp
  

Теперь перезагрузите службу брандмауэра, чтобы изменения вступили в силу.

  sudo systemctl перезапустить firewalld.service
  

Включить модуль mod_rewrite

Модуль mod_rewrite включен по умолчанию в CentOS 7. Если вы обнаружите, что он не включен на вашем сервере, вы можете включить его, отредактировав 00-base.conf , расположенный в каталоге /etc/httpd/conf.modules.d/ .

  судо нано /etc/httpd/conf.modules.d/00-base.conf
  

Добавьте или раскомментируйте следующую строку:

  LoadModule rewrite_module modules / mod_rewrite.so
  

Сохраните и закройте файл, затем перезапустите службу httpd :

  sudo systemctl перезапустить httpd
  

Включить файл .htaccess

После активации модуля mod_rewrite вы можете настроить перезапись URL, создав файл .htaccess в корневом каталоге документов по умолчанию.
Файл .htaccess позволяет нам изменять наши правила перезаписи без доступа к файлам конфигурации сервера. По этой причине .htaccess критически важен для вашего веб-сервера.
Прежде чем мы начнем, нам нужно разрешить Apache читать файлы .htaccess , расположенные в каталоге / var / www / html .

Вы можете сделать это, отредактировав файл httpd.conf :

  судо нано / и т.д. / httpd / conf / httpd.conf
  

Найдите раздел и измените AllowOverride None на AllowOverride All

  
    AllowOverride All
 
  

Сохраните и выйдите.

Теперь перезапустите Apache, чтобы изменения вступили в силу:

  sudo systemctl перезапустить httpd
  

Настроить модуль перезаписи

В этом разделе мы объясним базовый синтаксис mod_rewrite и дадим несколько примеров.

Вы можете записать RewriteRules в следующем формате:

  Подстановка шаблона RewriteRule [флаги]
  
  • RewriteRule : Эта директива определяет имя директивы mod_rewrite, которую вы хотите использовать.
  • Шаблон : эта директива определяет регулярное выражение, которое соответствует желаемой строке
  • Замена : Эта директива определяет путь к фактическому URL-адресу страницы с информацией, которую вы хотите отобразить.
  • Флаги : Флаг — это тег в конце директивы Rewrite Rule, который указывает дополнительные параметры, которые могут изменять правило.

Давайте обсудим RewriteRules на нескольких примерах:

Перенаправить с www на не-www

Если вы хотите перенаправить пользователей с www на простой домен без www , вам нужно будет создать файл .htaccess в корневом каталоге документов Apache.

Измените каталоги в корневой каталог вашего документа:

  cd / var / www / html
  

Создайте .(. *) $ http: //% 1 / $ 1 [R = 301, L]

Сохраните и выйдите из файла.

Мы можем использовать curl , чтобы проверить, что домен www перенаправляет на домен без www :

  curl -I http://www.yourdomain.com
  

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

  HTTP / 1.1 301 Перемещено окончательно
Дата: пн, 3 мая 2016 г. 18:20:53 GMT
Сервер: Apache / 2.4.6 (CentOS)
Расположение: http://yourdomain.com/
Content-Type: текст / html; кодировка = iso-8859-1
  

Приведенные выше выходные данные показывают местоположение перенаправления без www http: // yourdomain.(. *) $ http: //www.% {HTTP_HOST} / $ 1 [R = 301, L]

Сохраните и выйдите из файла.

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

  curl -I http://yourdomain.com
  

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

  HTTP / 1.1 301 Перемещено окончательно
Дата: пн, 3 мая 2016 г. 18:20:53 GMT
Сервер: Apache / 2.4.6 (CentOS)
Расположение: http://www.yourdomain.com/
Content-Type: текст / html; кодировка = iso-8859-1
  

Приведенные выше выходные данные показывают расположение перенаправления www http: // www.(. *) $ http://www.newdomain.com/$1 [R = 301, L]

Сохраните и выйдите из файла.

Теперь используйте curl , чтобы проверить, что домен «www.olddomain.com» перенаправляется на домен «www.newdomain.com»:

  curl -I http://www.olddomain.com
  

Вы должны получить ответ 301 Moved Permanently , который покажет вам новое место перенаправления домена.

Запретить доступ к типу файла

Если вы хотите запретить пользователям доступ к файлам определенных типов, например: .pdf , .css , .gif , .png или .bmp , затем отредактируйте файл .htacces :

  судо нано /var/www/html/.htaccess
  

Добавьте следующее содержание:

  RewriteEngine на
RewriteRule. * \. (Pdf | css | gif | png | bmp) $ - [F, NC]
  

Сохраните и выйдите из файла.

Сводка

Это всего лишь несколько примеров того, как можно использовать mod_rewrite . Если у вас есть вопросы по этим примерам, сообщите нам об этом ниже.Вы также можете оставлять сообщения в разделе сообщества ProfitBricks DevOps на этом сайте.

Centos 7 — (Apache)

※ 명령어 입력 시 앞에 # 은 프롬프트 를 의미 하므로 # 까지 입력 하시면 않 됩니다.

최초 접속 을 하면 네트워크 에 연결 이 되어 있는지 간단한 를 시행 합니다.

# пинг 168.126.63.1 

네트워크 가 연결 이 않 되어 있으면 연결 시켜 줍니다.

그런 후 обновить 시켜 줍니다.

# yum -y update 

FTP 서버 설치

# yum -y установить vsftpd! - vsftpd 설치

# systemctl включить vsftpd.сервис! - 부팅 시 vsftpd 자동 시작

# systemctl start vsftpd! - ftp 서비스 시작 

방화벽 설치

# yum -y install system-config-firewall-tui 

방화벽 설치 후 사용 하려는 포트 를 허용 하는 스크립트 작성

# vi / и т.д. / sysconfig / iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

: wq 

▶ 80: 아파치
▶ 포트 22: SSH
▶ 21: FTP
▶ 3306: MySql

방화벽 시작 및 부팅 시 자동 시작 설정

# systemctl mask firewalld! - 방화벽 데몬 Отключить

# systemctl start iptables! - 방화벽 시작

# systemctl включить iptables.сервис! - 부팅 시 자동 시작 

이제 아파치 (Apache) 서버 를 설치 합니다.

# yum -y установить httpd! - 아파치 설치

# systemctl enable httpd.service! - 부팅 시 자동 시작

# systemctl start httpd! - 아파치 서버 시작 

아파치 서버 를 시작 했으면 이제 브라우저 에서 제대로 작동 하는지 확인해 봅니다.

이렇게 나오면 성공적 으로 설치 가 된것 입니다..

이제 서버 를 재부팅 하여 재부팅 시 에도 아파치 서버 가 돌아가는지 확인해 봅니다.

# reboot 

축하 드립니다. 이제 아파치 (Apache) 서버 를 사용할 준비 가 되었습니다.

추가 사항

에 아파치 가 설치된 서버 의 IP 주소 를 어떻게 알수 있는지 질문 하신 분이 계십니다.

# ifconfig

이 명령어 는 Centos 가 설치된 서버 의 네트워크 어댑터 의 정보 를 해 줍니다.

여기서 또 하나 의 문제 가 생길수 있습니다.

을 이용 Centos 를 설치 한 에서 네트워크 를 NAT 으로 설정 한 경우 새로운 IP 를 사용 하기 때문에 ПК 에서 접속 을 수 없습니다.

따라서 가상 머신 의 설정 에서 네트워크 를 [브리지 어댑터] 를 선택 하시면 가상 머신 을 설치 PC 와 같은 네트워크 상 에 존재 하게 됩니다. 참고 하시기 바랍니다

추가 사항 2

# ifconfig 명령 사용시 команда не найдена 에러 가 나는 이유 는 Centos 를 최소 버전 으로 설치해 해당 명령 을 가지고 있는 설치 되어 있지 않아서 입니다.

yum -y установить net-tools 

net-tools 패키지 를 설치 하시면 ifconfig 명령 을 사용할 수 있습니다.

Использование PHP-FPM с Apache 2 на CentOS

Запуск Apache 2 и PHP с помощью mod_php просто, но есть более эффективные альтернативы, такие как использование PHP-FPM (FastCGI Process Manager), который является альтернативной реализацией PHP FastCGI.С его помощью процесс PHP работает автономно, без необходимости в веб-сервере, и прослушивает входящие запросы через TCP или сокет Unix. Веб-серверы могут подключаться к процессу PHP и отправлять запросы с использованием протокола FastCGI. Он решает проблему mod_php, связанную с запуском и уничтожением экземпляров PHP с каждым запросом, и, таким образом, более эффективен с точки зрения памяти и обеспечивает лучшую производительность.

Эти инструкции предназначены для CentOS 6.4, но процесс должен работать аналогично с другими дистрибутивами Linux.

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

Установите двоичный файл FPM-CGI для PHP и добавьте его для запуска после перезагрузки сервера:

 # yum install php-fpm
# chkconfig --levels 235 php-fpm на 

# yum install php-fpm
# chkconfig —levels 235 php-fpm на

Настройте пул PHP-FPM в /etc/php-fpm.d/www.conf для использования сокетов и включения некоторой информации о состоянии, например, Munit:

; слушать = 127.0,0.1: 9000
слушайте = /tmp/php5-fpm.sock
pm.status_path = / статус
ping.path = / ping 

; прослушать = 127.0.0.1:9000
слушайте = /tmp/php5-fpm.sock
pm.status_path = / статус
ping.path = / ping

Запустить службу с:

Настройка Apache и mod_fastcgi

Apache можно настроить для запуска FastCGI с двумя модулями: mod_fastcgi и mod_fcgid. Разница объясняется в отчете об ошибке Debian № 504132: «mod_fcgid передает только один запрос на сервер FCGI за раз, в то время как mod_fastcgi передает несколько запросов одновременно, последний обычно лучше для PHP, поскольку PHP может управлять несколькими запросами, используя несколько потоков и Кеши кодов операций, такие как APC, обычно работают только с потоками, а не с процессами.Это означает, что, используя mod_fcgid, вы получаете множество процессов PHP, каждый из которых имеет свой собственный кеш кодов операций. «

Короче: mod_fastcgi лучше.

Установить mod_fastcgi

Итак, нам нужно получить mod_fastcgi, который в настоящее время находится не из репозиториев CentOS по умолчанию или EPEL, а из RPMForge или путем его сборки из исходников.

Получение mod_fastcgi из RPMForge

Установите репозиторий RPMForge:

 # wget http: //pkgs.repoforge.org / rpmforge-release / rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
# rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm 

# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3- 1.el6.rf.x86_64.rpm
# rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

Добавьте несколько приоритетов, которые репо использовать:

 # yum install yum-priority

# vi /etc/yum.repos.d/epel.repo
... добавьте строку priority = 10 в раздел [epel] 

# yum install yum-priority

# vi / etc / yum.repos.d / epel.repo
… добавить приоритет строки = 10 в раздел [epel]

Установить mod_fastcgi

 # yum install mod_fastcgi 

# yum install mod_fastcgi

Или сборка mod_fastcgi из исходников

Вы можете собрать mod_fastcgi из исходников. Убедитесь, что установлены необходимые пакеты (для компиляции mod_fastcgi необходимы httpd-devel и apr-devel):

 # yum install libtool httpd-devel apr-devel apr 

# yum install libtool httpd-devel apr-devel apr

Получите последний исходный код mod_fastcgi:

 # cd / opt
# wget http: // www.fastcgi.com/dist/mod_fastcgi-current.tar.gz 

# cd / opt
# wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz

Унтарский смоляной шар:

 # tar -zxvf mod_fastcgi-current.tar.gz
# cd mod_fastcgi-2.4.6 / 

# tar -zxvf mod_fastcgi-current.tar.gz
# cd mod_fastcgi-2.4.6 /

Поскольку мы используем Apache 2, мы делаем копию Makefile.AP2: cp Makefile.AP2 Makefile

Скомпилируйте и установите mod_fastcgi для 64-битной системы:

 # сделать top_dir = / usr / lib64 / httpd
# make install top_dir = / usr / lib64 / httpd 

# make top_dir = / usr / lib64 / httpd
# сделать установку top_dir = / usr / lib64 / httpd

Настроить mod_fastcgi

Если у вас включен php, отключите его

 # mv / etc / httpd / conf.d / {php.conf, php.conf.disable} 

# mv /etc/httpd/conf.d/{php.conf,php.conf.disable}

Настройте (несуществующий) каталог, через который Apache может маршрутизировать запросы. Этот каталог должен быть доступен для Apache, и это может быть / usr / lib / cgi-bin / , поэтому маршрутизируемый файл будет, например, / usr / lib / cgi-bin / php5-fcgi .

 # mkdir / usr / lib / cgi-bin / 

# mkdir / usr / lib / cgi-bin /

Настройте параметры mod_fastcgi в / etc / httpd / conf.d / mod_fastcgi.conf должно быть:

 LoadModule модули fastcgi_module / mod_fastcgi.so


DirectoryIndex index.php index.html index.shtml index.cgi
AddHandler php5-fcgi .php
Действие php5-fcgi / php5-fcgi
Псевдоним / php5-fcgi / usr / lib / cgi-bin / php5-fcgi
FastCgiExternalServer / usr / lib / cgi-bin / php5-fcgi -socket /tmp/php5-fpm.sock -pass-header Авторизация

# Для мониторинга статуса, например, Мунин

SetHandler php5-fcgi-virt
Действие php5-fcgi-virt / php5-fcgi virtual

 

LoadModule модули fastcgi_module / mod_fastcgi.так


DirectoryIndex index.php index.html index.shtml index.cgi
AddHandler php5-fcgi .

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

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