• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела wpt лично.

Релиз [Мануал] Установка Bitrix на php7

virus555

Постоялец
Регистрация
22 Дек 2013
Сообщения
109
Реакции
180
Устанавливать будем так называемый LEMP стек (Linux, Nginx, MySQL, PHP)
А если быть точнее, то CentOS 7, Nginx, MariaDB, PHP 7

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


Предполагается, что у вас уже установлена CentOS 7 minimal, настроена сеть и вы зашли под рутом. Cоветую ставить CentOS в файловой системе ext4, т.к. производительность немного выше чем у xfs (ссылка на мануал внизу).
И так поехали (осторожно - много букаф)
Красным поотмечал, что вам нужно изменить под себя

yum update


УСТАНАВЛИВАЕМ NGINX
Добавляем репозиторий / устанавливаем nginx / запускаем и добавляем в автозагрузку
rpm -Uvh Для просмотра ссылки Войди или Зарегистрируйся
yum install nginx -y
systemctl start nginx && systemctl enable nginx


УСТАНАВЛИВАЕМ PHP7 + МОДУЛИ
rpm -Uvh Для просмотра ссылки Войди или Зарегистрируйся
rpm -Uvh Для просмотра ссылки Войди или Зарегистрируйся
yum install php70w php70w-mysql php70w-fpm php70w-mcrypt php70w-mbstring php70w-gd php70w-devel php70w-opcache -y

правим файл /etc/php-fpm.d/Для просмотра ссылки Войди или Зарегистрируйся
user = nginx
group = nginx
listen.owner = nobody
listen.group = nobody
listen.mode = 0666
listen = /var/run/php-fpm/php-fpm.sock

запускаем и добавляем в автозагрузку
systemctl start php-fpm && systemctl enable php-fpm
это создаст нужный нам php-fpm.sock файл, зададим ему права и владельца
chmod 666 /run/php-fpm/php-fpm.sock
chown nginx:nginx /run/php-fpm/php-fpm.sock

в /etc/php.ini меняем:
---------

cgi.fix_pathinfo=0
short_open_tag=on
mbstring.func_overload=2
mbstring.internal_encoding=UTF-8
date.timezone = Europe/Kiev
max_input_vars = 10000
post_max_size = 20M
upload_max_filesize = 20M
realpath_cache_size = 4096k
display_errors = On
memory_limit = 256M

в /etc/php.d/opcache.ini меняем:
opcache.revalidate_freq=0
opcache.max_accelerated_files = 100000

СТАВИМ БАЗУ ДАННЫХ:
yum -y install mariadb-server mariadb
systemctl start mariadb && systemctl enable mariadb
---------
Затем запускаем скрипт первоначальной установки настроек безопасности:
/usr/bin/mysql_secure_installation
При запуске этого скрипта будет запрошен пароль для root пользователя и будут заданы другие вопросы безопасности на которые нужно отвечать Y или N.
---------
После этого запускаем входим в консоль mysql под root-пользователем:

mysql -uroot -p
(вводим пароль указанный в скрипте mysql_secure_installation)
Создаем базу данных для Битрикс-сайта:

CREATE DATABASE `site_db` CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE USER 'site_db_user'@'localhost' IDENTIFIED BY 'site_db_password';
GRANT ALL PRIVILEGES ON site_db.* TO 'site_db_user'@'localhost';
Этим мы создали базу данных site_db в кодировке UTF-8 с пользователем site_db_user и паролем site_db_password
---------
Если планируется использование движка InnoDB, то нужно в файле /etc/my.cnf
прописать настройку в секцию [mysqld] + небольшой тюнинг:

innodb_flush_log_at_trx_commit=2
query_cache_size = 20mb
query_cache_limit=20mb
thread_cache_size=4
innodb_flush_method=O_DIRECT
transaction-isolation=READ-COMMITTED
---------
Отключаем SELinux — в файле /etc/sysconfig/selinux присваиваем параметру SELINUX флаг disabled:
SELINUX=disabled
перегружаемся
reboot


ДОБАВЛЯЕМ ХОСТ
mkdir -p /home/www/example
chown -R nginx:nginx /home/www/example
chmod -R 755 /home/www/example

Создаём файл настроек виртуалхоста /etc/nginx/conf.d/example.conf
Среди кучи примеров конфигов - вот единственный который корректно работает с битриксом. Копируем текст из файла и не забываем поменять example на свои данные. Example.conf - Для просмотра ссылки Войди или Зарегистрируйся

Проверяем конфигурацию nginx

nginx -t
Должно выдаться что-то типа "syntax is ok". Перезапускаем сервис

systemctl restart nginx

Меняем права на директорию сессий

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


Вот как бы и все!

Теперь можно зайти в папку нашего созданного хоста /home/www/example и закачать пару битриксовских скриптов:
0. yum install wget -y
1. wget Для просмотра ссылки Войди или Зарегистрируйся

Проверяем что все в нашем сервере подходит для битрикса
И запускаем в браузере: Для просмотра ссылки Войди или Зарегистрируйся
Может ругаться на "Обработка .htaccess" - это нормально nginx по сути не работает с этими файлами
Также у меня скрипт ругался на отсутствие функций MySQL, но при установке все было норм.

Качаем файл установки новых решений (2) или востановления из бекапа (3)
2. wget Для просмотра ссылки Войди или Зарегистрируйся
3. wget Для просмотра ссылки Войди или Зарегистрируйся

Для чего все это? - Чтобы добиться высокой производительности - Для просмотра ссылки Войди или Зарегистрируйся
Не претендую на то, что данный мануал является 100% верным. Хотелось бы услышать советы более опытных, что еще не учтено.


Доп. материалы:
Установка memcached - Для просмотра ссылки Войди или Зарегистрируйся
Установка CentOS в ФС ext4 - Для просмотра ссылки Войди или Зарегистрируйся
Переводим агентов на cron - Для просмотра ссылки Войди или Зарегистрируйся

UPD: Заменена репа для nginx на официальную (thx Maybe)
UPD2: Мелкие дополнения в php.ini (thx Для просмотра ссылки Войди или Зарегистрируйся)
UPD3: Небольшое ускорение SQL
 
Последнее редактирование:
Битрикс на 7 PHP ставится на ЛЮБОЙ хостинг под управлением ISPmanager'а через модуль "альтернативные версии PHP"
Не запускается так((
Логи молчат
а на самом сайте выдает следующее:
The script encountered an error and will be aborted. To view extended error messages, enable this feature in Для просмотра ссылки Войди или Зарегистрируйся.
 
Текст, что ниже пришлось вынести в этот пост, т.к. по размеру в первый не влазит:
P.S.: Для тех, кто хочет еще установить memcached (хотя у меня из-за него упала производительность)
Сразу хотелось бы определиться с понятиями:
Для меня на днях стало открытием, что memcache и memcached это не разные сервисы кеширования и даже не опечатка :). На самом деле существует только сервис кеширования под названием memcached.

Memcache, как оказалось, это название php-расширения для работы с сервисом кеширования memcached. Но все не так просто :cool: Существует еще одно (а может и не одно) php-расширение для работы сервисом кеширования memcached с названием memcached. o_0

Итого имеется:
Источник: Для просмотра ссылки Войди или Зарегистрируйся

Устанавливаем необходимое доп. ПО и сам сервер кеширования memcached
yum install gcc zlib-devel -y
yum install memcached -y
запускаем и добавляем в автозагрузку
systemctl start memcached && systemctl enable memcached

Собираем и устанавливаем php-расширение memcache
wget Для просмотра ссылки Войди или Зарегистрируйся
unzip NON_BLOCKING_IO_php7.zip
cd pecl-memcache-NON_BLOCKING_IO_php7
/usr/bin/phpize && ./configure --enable-memcache --with-php-config=/usr/bin/php-config && make
cp modules/memcache.so /usr/lib64/php/modules/
echo 'extension=memcache.so' >/etc/php.d/memcached.ini

В файле /etc/sysconfig/memcached заменяем строку OPTIONS на:
OPTIONS="-l 127.0.0.1"

Теперь осталось добавить эти строки в файл /bitrix/.settings.php
Например сюда - Для просмотра ссылки Войди или Зарегистрируйся

PHP:
'cache' => array(
'value' => array (
'type' => 'memcache',
'memcache' => array(
'host' => '127.0.0.1',
'port' => '11211',
'sid' => $_SERVER["DOCUMENT_ROOT"]."#site01",
),
),
'readonly' => false,
),
 
С redis погонять тоже интересно.
Зимой собирал ubuntu+php7+redis.
Тестил с WP.
Запросы к базе редис кеширует вообще замечательно.
В картинках:
Ubuntu-Wordpress.jpg
Слева на право: общее время загрузки страницы, используемая память, время обращения к базе, количество запросов к базе.
Как видно редис в 6(!) раз сократил количество запросов к базе.
----------------------
Сравнение производительности Redis и Memcached:
Redis
запись: 9.36961с
чтение: 9.03с

Memcached
запись: 10.28c
чтение: 31.23с

Люди уже подключали для битрикс с PHP7.
Кэширование данных с помощью Redis:
Для просмотра ссылки Войди или Зарегистрируйся
 
Почему не ставить Maria и Nginx из оф. реп?
Добавлю пару слов на счет nginx.
Из реп можно ставить, но есть пара приятных оговорок!
nginx-push-stream-module
SPDY


Все находится в и собирается по RTFM nginx+nginx-push-stream-module+SPDY — очень рекомендую.
 
Подскажите кто пробовал - на PHP 7 как насчет решений с Маркетплейса - есть ли косяки?
 
Смотря в будущее, или уже в настоящее, - поддержку SPDY в nginx убрали в последних версиях. SPDY дал старт http2.
-------
Для просмотра ссылки Войди или Зарегистрируйся
HTTP/2 support: The SPDY module was replaced by the Для просмотра ссылки Войди или Зарегистрируйся. HTTP/2 support was recently updated to support Для просмотра ссылки Войди или Зарегистрируйся for requests.
 
Подскажите кто пробовал - на PHP 7 как насчет решений с Маркетплейса - есть ли косяки?

Все решения не попробовать. Если разработчик внимательный и внес необходимые правки, то не будет касяков, если нет то будут, тут однозначно никак не ответить.
 
Назад
Сверху