====== Bitrix, CentOS и разные версии PHP ====== Переносил несколько сайтов на Битриксе, приключилась небольшая проблема: часть сайтов старая, обновления давно не устанавливались и работать умеют максимум с PHP 5.6. Другая же часть сайтов обновлены до последних версий и вполне могут крутиться на PHP 7.x. Сервер один на все про все, панели управления и т.д. нет - в общем, надо врукопашную все сделать. Исходные данные, на момент начала работы на сервере установлено: * CentOS 7 * Bitrix + веб-окружение (которое установило Nginx, Apache2, PHP 7.0, MySQL 5.5) ===== Решение ===== Почитав про всякие suPHP, FastCGI и прочие извращения стало понятно что надо сделать как-то проще. Ну и появилось сильное желание заменить MySQL 5.5 на MariaDB 10 (т.к. некоторые модули в Битриксе уже сильно хотят версию 5.6 или выше). ==== Заменяем MySQL на MariaDB ==== Взято тут: https://www.tecmint.com/upgrade-mariadb-5-5-to-10-centos-rhel-debian-ubuntu/ Делаем бэкап (если нужно): # mysqldump -u root -ppassword --all-databases > /tmp/all-database.sql Останавливаем сервис: # systemctl stop mysql Делаем копию папки mysql на всякий случай: # cp -a /var/lib/mysql/ /var/lib/mysql.bak Создаем новый репозиторий: # touch /etc/yum.repos.d/MariaDB10.repo и вставляем туда: # MariaDB 10.1 CentOS repository list - created 2016-01-18 09:58 UTC # http://mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 Удаляем старую версию: # yum remove mariadb-server mariadb mariadb-libs Или так, если был установлен пакет mysql: # yum remove mysql-server Чистим кэш: # yum clean all Устанавливаем новую версию: # yum -y install MariaDB-server MariaDB-client Включаем в автозагрузку и запускаем сервис: # systemctl enable mariadb # systemctl start mariadb Запускаем обновление: # mysql_upgrade Проверяем и пробуем поключиться: # mysql -V # mysql -h localhost -u root -p ==== PHP 5.6 ==== Пришло время установить PHP 5.6 и php-fpm через который он будет работать. Ставим вместе с необходимыми модулями: # yum install php56-php-fpm.x86_64 php56-php-bcmath.x86_64 php56-php-gd.x86_64 php56-php-mbstring.x86_64 php56-php-mcrypt.x86_64 php56-php-mysqlnd.x86_64 php56-php-opcache.x86_64 В CentOS 7 разные версии ставятся в /opt/remi - об этом необходимо помнить, т.к. все файлы конфигурации берутся именно оттуда. Далее необходимо настраить конфигурацию php-fpm в файлах. Файл /opr/remi/php56/root/etc/php-fpm.d/www.conf [www] user = bitrix group = bitrix listen = /var/run/php-fpm/php-fpm56.sock listen.owner = nobody listen.group = nobody listen.mode = 0666 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 slowlog = /opt/remi/php56/root/var/log/php-fpm/www-slow.log env[TMP] = /home/bitrix/tmp env[TMPDIR] = /home/bitrix/tmp env[TEMP] = /home/bitrix/tmp php_admin_value[error_log] = /opt/remi/php56/root/var/log/php-fpm/www-error.log php_admin_flag[log_errors] = on php_value[session.save_handler] = files php_value[session.save_path] = /home/bitrix/tmp php_value[soap.wsdl_cache_dir] = /opt/remi/php56/root/var/lib/php/wsdlcache Основная идея - все папки для временных файлов положить поближе к папке с сайтом и дать права # chown bitrix:bitrix /home/bitrix/tmp # chmod 770 /home/bitrix/tmp Файл /opr/remi/php56/root/etc/php.ini sys_temp_dir = "/home/bitrix/tmp" Подкладываем в /opr/remi/php56/root/etc/php.d/ файл bitrixenv.ini ; Set parameters required for proper Bitrix engine functioning. ; You can redefine parameters specified in this file ; by editing /etc/php.d/z_bx_custom_settings.ini ; Configure error processing display_errors = On error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING ; Set some more PHP parameters enable_dl = Off short_open_tag = On allow_url_fopen = On ; Change default values of important constants max_input_vars = 10000 max_file_uploads = 100 max_execution_time = 300 post_max_size = 1024M upload_max_filesize = 1024M pcre.backtrack_limit = 1000000 pcre.recursion_limit = 14000 realpath_cache_size = 4096k mysql.default_socket = /var/lib/mysqld/mysqld.sock mysqli.default_socket = /var/lib/mysqld/mysqld.sock ; Utf-8 support mbstring.func_overload = 2 ;mbstring.internal_encoding = UTF-8 mbstring.internal_encoding = cp1251 ; Configure PHP sessions session.entropy_length = 128 session.entropy_file = /dev/urandom session.save_path = "/home/bitrix/tmp/php_sessions/www" session.cookie_httponly = On ; Set directory for temporary files upload_tmp_dir = "/home/bitrix/tmp/php_upload/www" sendmail_path = sendmail -t -i date.timezone = Europe/Moscow memory_limit = 256M В этой же папке /opr/remi/php56/root/etc/php.d/ отключить ненужные модули и включить mysqli для Битрикса Настроить связку Битрикса и PHP-FPM, как описано здесь: [[software:bitrix:bitrix-centos7|Битрикс на CentOS 7]] В принципе все, можно тестировать: запустить все сервисы, зайти в панель управления Битрикса и проверить настройки системы: Настройки -> Инструменты -> Проверка системы {{tag>bitrix multiple_php multiple_php_version php_version nginx apache http php-fpm битрикс несколько_версий_php}}