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 производится через классический «Терминал» буквально в несколько действий:
- Запустите консоль любым удобным методом, например, через меню «Приложения».
- Впишите команду
sudo rpm -iUvh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
для загрузки пакета программного обеспечения из пользовательского репозитория Extra Packages for Enterprise Linux. - Для продолжения процесса введите пароль от учетной записи с рут-доступом.
- После завершения добавления пакетов следует обновить список системных библиотек командой
sudo yum -y update
. - Указанная выше команда инсталлирует все доступные обновления, и после этого останется только инсталлировать сам клиент приложения через
sudo yum -y install phpmyadmin
.
При использовании веб-сервера, например, Apache, вам останется только перезагрузить его и проверить работу установленного компонента, перейдя по адресу http://ip_вашего_сервера/phpmyadmin
.
Установка последней версии phpMyAdmin
Некоторых пользователей интересует только последняя версия phpMyAdmin, для установки которой потребуется выполнить немного другие действия, дополнительно загрузив новые пакеты. В целом инструкция остается похожей, но с некоторыми изменениями.
- Добавьте новый пакет в систему, скачав его из репозитория через
sudo rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm
. - Обновите доступные системные библиотеки с помощью уже знакомой команды
sudo yum update
. - Включите поддержку последней версии приложения, на данный момент это 7.1. Для этого введите
yum-config-manager --enable remi-php71
. - Установите ПО
sudo yum install phpmyadmin
, а подходящая версия PHP определится автоматически.
На этом добавление всех компонентов завершено, однако перед началом работы с веб-интерфейсом потребуется настроить и сам сервер. Далее мы разберем осуществление этой процедуры в двух популярных решениях — Apache и Nginx.
Настройка phpMyAdmin в Nginx
Некоторые пользователи предпочитают работать с веб-сервером Nginx, поскольку тот обеспечивает высокое быстродействие и производительность. Если вы являетесь сторонником этого программного обеспечения, после инсталляции phpMyAdmin придется совершить ряд настроек, чтобы наладить работоспособность всего механизма.
Первоочередно обратите внимание на то, чтобы сам веб-сервер уже добавлен в операционную систему, если это не так, поочередно впишите в консоль следующие команды:
sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx
После этого следуйте такой инструкции:
- Включите phpMyAdmin в директорию веб-сервера с помощью строки
sudo ln -s /usr/share/phpMyAdmin /var/www/html/phpmyadmin
. - После внесения изменений осуществите перезапуск, введя
sudo systemctl restart php-fpm
. - Через стандартный текстовый редактор запустите конфигурационный файл
sudo vi /etc/nginx/nginx.conf
. - Отыщите блок «http» и добавьте туда строку
disable_symlinks off;
. - Сохраните изменения и закройте файл, после чего перезагрузите 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, а делается это следующим образом:
- Задайте пароль для доступа администратора с помощью
sudo htpasswd -c /etc/httpd/passwords admin
. - Запустите конфигурационный файл для дальнейшего редактирования:
vi /etc/httpd/conf.d/phpMyAdmin.conf
. - Отыщите секцию «<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.
Установка PHP на CentOS 8
CentOS 8 распространяется с PHP 7.2. Эта версия поддерживает большинство современных приложений PHP, но больше не будет активно поддерживаться с ноября 2019 года. Более новые версии PHP доступны в репозитории Remi.
Включить репозиторий 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 и некоторые из наиболее распространенных модулей PHP:
sudo dnf install php php-opcache php-gd php-curl php-mysqlnd
PHP использует FPM устанавливается как зависимость и используется как сервер FastCGI. Запустите службу FPM и включите ее автоматический запуск при загрузке:
sudo systemctl enable --now php-fpm
Настройка PHP для работы с Apache
Если вы используете Apache в качестве веб-сервера, перезапустите службу httpd, используя следующую команду, и все готово:
sudo systemctl restart httpd
Настройка PHP для работы с Nginx
По умолчанию 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. Оригиналы источников информации.
- serveradmin.ru «Настройка web сервера nginx, php-fpm, php7 на CentOS 8» от 28.02.2020.
- 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?
Переполнение стека
- Около
Товары
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Как установить 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 |
LoadModule модули fastcgi_module / mod_fastcgi.так
DirectoryIndex index.php index.html index.shtml index.cgi
AddHandler php5-fcgi .