Установка (не обновление) PHP 7.2 на CentOS 7. Установка php 7 на centos 7


Установка (не обновление) PHP 7.2 на CentOS 7

Для того чтоб на сервере было несколько версий PHP необходимо его не обновлять, а именно установить.

Устанавливаем репозитории федоры (epel-release) и Remi:

yum install -y epel-release yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Просмотр установленных пакетов другой версии php. Для этого посмотрим какая версия PHP стоит на сервере:

php -v

Если на сервера несколько версий PHP, то можно их посмотреть командой:

yum list installed php*

Если у нас стоит и пятая и седьмая версия PHP, но мы хотим обновить именно седьмую версию, например, с PHP 7.0 до PHP 7.2, то самым оптимальным будет установка всех аналогичных пакетов PHP 7.0 для PHP 7.2, а после настройки и проверки работоспособности PHP 7.2 удаление PHP 7.0:

yum list installed php70* yum install -y --enablerepo=php-remi72 php72 php72-php php72-php-cli php72-php-common php72-php-devel php72-php-fpm php72-php-gd php72-php-intl php72-php-json php72-php-mbstring php72-php-mcrypt php72-php-mysqlnd php72-php-opcache php72-php-pdo php72-php-pear php72-php-pecl-geoip php72-php-pecl-solr2 php72-php-pecl-zip php72-php-process php72-php-soap php72-php-xml php72-php-xmlrpc php72-runtime

Смотрим, появилась ли служба и какое у неё состояние при автозагрузке:

systemctl list-unit-files --type service | grep php72

При необходимости включаем службу в атозагрузку (если она отключена) и проверяем её состояние:

systemctl enable php72-php-fpm systemctl is-enabled php72-php-fpm

Запускаем службу (1) и проверяем её состояние (2):

service php72-php-fpm start service php72-php-fpm status

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

systemctl status php72-php-fpm

 ERROR: unable to bind listening socket for address ‘127.0.0.1:9000’: Address already in use

Так как порт занят, то мы скопируем конфигурационный файл (2) из папки /etc/opt/remi/php72/php-fpm.d/ в папку /etc/opt/remi/php7о/php-fpm.d/, предварительно сохраним версию конфигурационного файла для PHP 7.2 (1), а после копирования отключим конфиг файл для PHP 7.0 (3):

mv /etc/opt/remi/php72/php-fpm.d/www.conf /etc/opt/remi/php72/php-fpm.d/www.dis cp /etc/opt/remi/php70/php-fpm.d/www.conf /etc/opt/remi/php72/php-fpm.d/www.conf mv /etc/opt/remi/php70/php-fpm.d/www.conf /etc/opt/remi/php70/php-fpm.d/www.dis

Перезапускаем старую службу (чтоб освободить порт или сокет) и запускаем новую службу (обязательно нужно использовать restart, так как reload сокет или порт не освободит):

service php70-php-fpm restart && service php72-php-fpm start

Аналогично копируем все остальные конфигурационные файлы, но лучше по одному копировать и каждый раз перезапускать службы:

service php70-php-fpm restart && service php72-php-fpm restart

Для правки конфигурационного файла набираем:

yum install -y nano nano /etc/opt/remi/php72/php-fpm.d/название_файла.conf

Пример:

nano /etc/opt/remi/php72/php-fpm.d/www.conf

После правки всегда нужно перезапускать службу:

service php72-php-fpm reload

или

systemctl reload php72-php-fpm

Если хотим включить репозиторий remi-php72, то в файле /etc/yum.repos.d/remi-php72.repo в строке 9 ‘enabled=0‘ заменяем на ‘enabled=1‘. Но нужно помнить, что стоящий php по умолчанию будет обновлён до версии php 7.2 в CentOS 7. Поэтому лучше не включать, а обновление php72 проводить следующим способом:

yum update -y php72* --enablerepo=remi-php72

 

Публикации, которые могут заинтересовать вас

www.dr.arut.ru

Web-сервер на CentOS 7: Nginx, PHP 7.x, PerconaDB

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

Список актуальных версий пакетов на момент установки:

  • Веб-сервер Nginx 1.13.4
  • Менеджер процессов FastCGI PHP 7.1.7
  • MySQL сервер Percona 5.7

Предварительная настройка

Настройку сервера начнем с предварительной настройки сервера. Для начала я отключу firewalld, в дальнейшем доступ к серверу будет ограничен через iptables. Для отключения firewalld в CentOS 7 выполните следующие команды:

systemctl disable firewalld systemctl stop firewalld

Создаем файл с правилами iptables:

mkdir -p /etc/iptables vi /etc/iptables/rules.v4

Добавляем в содержимое файла следующие строки:

*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # DROP INVALID PACKETS -A INPUT -m conntrack --ctstate INVALID -j DROP # ICMP -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT # SSH -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT # Если у вас статический ip, ограничьте доступ к SSH по ip-адресу. # Меняем адрес 1.2.3.4 на свое значение и меняем строку выше на следующую: #-A INPUT -s 1.2.3.4/32 -p tcp -m tcp --dport 22 -j ACCEPT # NGINX -A INPUT -i -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -i -p tcp -m tcp --dport 443 -j ACCEPT COMMIT

В дальнейшем, если вы решите настроить тот или иной сервис, для открытия порта извне необходимо добавить соответствующее правило в iptables. Дополнительно в целях защиты доступа к серверу по SSH настройте fail2ban и авторизацию по ключу.

Применяем правила:

iptables-restore < /etc/iptables/rules.v4

Добавляем выполнение правил при старте системы:

chmod +x /etc/rc.local vi /etc/rc.local

Добавляем содержимое файла:

#!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. iptables-restore < /etc/iptables/rules.v4 touch /var/lock/subsys/local

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

Установку Nginx в CentOS будем из официального репозитория, я рекомендую использовать более свежую mainline-версию. Для настройки репозитория yum для CentOS необходимо создать файл:

/etc/yum.repos.d/nginx.repo

C таким содержимым:

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

Устанавливаем Nginx:

yum install nginx

Запускаем и добавляем nginx в атозапуск при старте системы:

systemctl start nginx systemctl enable nginx

Откройте файл:

vi /etc/nginx/nginx.conf

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

worker_processes auto; access_log off; server_tokens off; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 0;

Применяем значения параметров:

service nginx restart

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

На данный момент PHP 7 нет в официальных репозиториях. Для установки PHP 7.1 в CentOS 7 нам понадобится добавить в систему репозиторий Webtatic. Для установки модулей есть PEAR, но его поддерживают не все модуля. Связи с чем установки неподдерживаемых PHP PEAR модулей нужно выполнять из репозитория Webtatic.

Добавим в систему EPEL и Webtatic репозитории:

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

Устанавливаем PHP 7.1 и наиболее часто используемые расширения:

yum install php71w-fpm php71w-opcache php71w-cli php71w-common php71w-gd php71w-mbstring php71w-mcrypt php71w-mysqlnd php71w-xml

Расширение OPcache, но я рекомендую его использовать для более быстрой работы ваших сайтов. OPcache теперь официально включен в исходный дистрибутив и поддерживается командой PHP. Это дает ему преимущество по сравнению с другим кэшем Opcode.

Список доступных для установки расширений PHP 7.1 есть на официальной странице репозитория Webtatic, в разделе Packages.

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

systemctl start php-fpm systemctl enable php-fpm

Теперь переходим к настройке PHP-FPM, откройте следующий файл:

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

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

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

Перезапустим php-fpm:

service php-fpm restart

Для взаимодействия Nginx с php-fpm создайте следующую конфигурацию:

vi /etc/nginx/conf.d/default.conf

Замените содержимое файла на:

server { listen 80; server_name test.net; root /usr/share/nginx/html; index index.php index.html; location ~ .php$ { try_files $uri = 404; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }

Применяем значение параметров:

service nginx restart

Установка Percona в CentOS

Устанавливать PerconaDB, MySQL или MariaDB — дело личного предпочтения. В данной статье речь пойдет о установке PerconaDB на CentOS, для этого добавим в систему официальный репозиторий пакетов:

yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

Устанавливаем Percona Server:

yum install Percona-Server-server-57

Запускаем и добавляем Percona в атозапуск при старте системы:

systemctl start mysql

Наверно, у вас возникнет вопрос: где взять пароль root для доступа к Percona Server? В этом плане Percona проявит самостоятельность, вместо нас придумает пароль и запишет его в лог.Что бы узнать пароль root в Percona выполните команду:

cat /var/log/mysqld.log |grep generated 2017-08-13T15:25:44.331443Z 1 [Note] A temporary password is generated for root@localhost: ************

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

# mysql_secure_installation Securing the MySQL server deployment. Enter password for user root: The 'validate_password' plugin is installed on the server. The subsequent steps will run with the existing configuration of the plugin. Using existing password for root. Estimated strength of the password: 100 Change the password for root ? ((Press y|Y for Yes, any other key for No) : y New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!

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

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

Открываем следующий файл:

vi /etc/percona-server.conf.d/mysqld.cnf

В секцию [mysqld] добавляем следующие параметры:

bind-address=127.0.0.1 # Вредный параметр, но иногда необходимо отключить проверку пароля условиям безопасности # validate-password=off innodb_buffer_pool_size=24G innodb_log_file_size=256M innodb_flush_log_at_trx_commit = 2 innodb_flush_method=O_DIRECT max_connections=300

Что означают и для чего используются некоторые из этих параметров вы можете прочитать в статье MySQL 5.7 Performance Tuning Immediately After Installation на официальном сайте.

Самый важный параметр — innodb_buffer_pool_size. Устанавливаем равным 50%-80% от оперативной памяти, но не более размера вашей базы. Если у вас база на 100Mb устанавливаем значение параметра 200M с запасом. Для базы на 100Gb, при условии недостатка нужного количества оперативной памяти на сервере, значение параметра устанавливаем в пределах 50%-80% от оперативной памяти.

codebeer.ru

поднимаем PHP до версии 7.2 на CentOS

Попробуем заменить установленный по умолчанию PHP 5.6.xx в Vesta CP на актуальную весрию PHP 7.2.xx. Устанавливать будем аккуратно, используя remi repository.

Версия PHP 7 значительно превосходит 5.х по быстродействию и безопасности.

Этап 1

Установим Remi Repository / EPEL Repository:

RHEL 7

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm subscription-manager repos --enable=rhel-7-server-optional-rpms

RHEL 6

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm rhn-channel --add --channel=rhel-$(uname -i)-server-optional-6

CentOS 7

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm

CentOS 6

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm

Этап 2

Выполнение кофигурации.

Выполним две команды для RHEL или CentOS

yum -y install yum-utils yum-config-manager --enable remi-php72

Этап 3

Стандартное обновление пакетов

yum update -y

Удивительно, но теперь yum попытается скачать и установить РНР версии 7. После установки требуется перезапуск Apache/php-fpm-(nginx).

Например, в Centos 7.5 для связки nginx+apache выполним  service httpd  restart

Версию PHP теперь можно проверить:

php -v # PHP 7.2.12 (cli) (built: Nov 6 2018 16:40:25) ( NTS )

Если же обновления не произошло (или вообще ничего не произошло) или, например, раньше вы уже проводили апгрейд с 5.6 до 7.0/7.1, тогда нужно запустить команду для запрета php 5.6/7.0/7.1:

yum-config-manager --disable remi-php56 yum-config-manager --disable remi-php70 yum-config-manager --disable remi-php71

А уже после этого вернуться к Этапу 2 снова.

drach.pro