16 декабря 2016

1С—Битрикс веб—окружение 7

Свершилось, 1С—Битрикс анонсировали выход «Веб—окружение 7», версию обосновали возможностью установки на Centos 7 с php 7. Большой шаг для увеличения скорости сайта за счет новенькой php 7, mysql и обновления системного программного обеспечения на сервере. Centos зарекомендовал себя стабильной версией для сайтов на 1С-Битрикс, лучше чем Windows Server.

Ставить Centos 7 и веб—окружение 7 однозначно надо, за счет php 7 Битрикс показывает производительность в 2 раза больше, по сравнению с предыдущими версиями.

Опишем задачи: установка Centos 7, установка «Веб-окружение», перенос сайта на сервер, настройка сервера, установка сертификатов SSL и перевод с http на https. Столкнулись с осложнениями в виде установки программного обеспечения, поэтому делимся опытом. Установкой Centos делиться не будим, любой дата-центр предоставит вам установке с покупкой vps.

Предполагаем ос стоит, начинаем установку окружения:

wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh 
# chmod +x bitrix-env.sh 

Запускаем скрипт ./bitrix-env.sh установки bitrix окружение. Для установки необходимо отключить Selinux, и скрипт просит произвести отключение и перезагрузку через команду reboot.

Нажимаем Y, означающий согласие на отключение Selinux и производим перезагрузку. Зайдя в систему, перезапускаем скрипт. В нашем случае мы получили повторное уведомление об отключении Selinux. При повторной попытке заметили сообщение ./bitrix-env.sh: line 29: sestatus: command not found. Оказывается на сервере отсутствует Selinux, из-за этого не происходит установка.

Хочу поделиться, что такая проблема теперь везде, как на centos 6, centos 7.

Написали ругательное письмо в техподдержку и стали смотреть скрипт bitrix-env.sh на косяки и нашли начиная с 28 строки.

disable_selinux(){
    sestatus=$(sestatus | awk -F':' '/SELinux status:/{print $2}' | sed -e "s/\s\+//g")
    seconfigs="/etc/selinux/config /etc/sysconfig/selinux"
    if [[ $sestatus != "disabled" ]]; then
        print "You must disable SElinux before installing the Bitrix Environment." 1
        print "You need to reboot the server to disable SELinux"
        read -r -p "Do you want disable SELinux?(Y|n)" DISABLE
        [[ -z $DISABLE ]] && DISABLE=y
        [[ $(echo $DISABLE | grep -wci "y") -eq 0 ]] && print_e "Exit."
        for seconfig in $seconfigs; do
            [[ -f $seconfig ]] && \
                sed -i "s/SELINUX=\(enforcing\|permissive\)/SELINUX=disabled/" $seconfig && \
                print "Change SELinux state to disabled in $seconfig" 1
        done
        print "Please reboot the system! (cmd: reboot)" 1
        exit
    fi
}

На строке 476 строке эта функция запускается на выполнение. Надо закомментировать #disable_selinux функцию. Поясним почему ошибка возникла: в функции выше не существует проверки на существование Selinux в системе, а просто ею пользуется (if [[ $sestatus != "disabled" ]]; then).

Убрав из выполнения эту функцию, процесс установки происходит нормально. Осталось подождать установку и начать пользоваться.

Установка прошла успешно. Заходим в ./menu.sh и создаем pool. Далее стандартно переносим файлы сайта и разворачиваем их. Произошла следующая ошибка, после развертывания сайта мы не смогли его открыть в браузере - сайт не доступен.

Оказывается необходимо теперь самим открывать порты сайта.

iptables -I INPUT -p tcp --dport 25 -m state --state NEW -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
iptables -I INPUT -p tcp --dport 5222 -m state --state NEW -j ACCEPT
iptables -I INPUT -p tcp --dport 5223 -m state --state NEW -j ACCEPT
iptables -I INPUT -p tcp --dport 8090 -m state --state NEW -j ACCEPT
iptables -I INPUT -p tcp --dport 8891 -m state --state NEW -j ACCEPT
service iptables save

Открыв порты и получив доступ к сайту, наблюдаем ошибку работы с mysql. Проблема в новом подключении с базой данных. В файле dbconn.php прописываем следующее:

define( "BX_USE_MYSQLI" , true);

В файле .settings.php заменяем строку, у нас 46:

'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',

напоминаем, что перезапуск служб сервера в Centos 7 выполняются так:

systemctl restart httpd.service
systemctl restart nginx
systemctl restart mysqld

Свершилось второй раз, установка прошла успешно, пользуемся сайтом. Не забываем подключить Sphinx, curl и SSL. Если вы сочли информацию полезной, ставим просто лайк вк.

Техническая поддержка сайта

После обнаружения ошибки и описание проблемы в техподдержку 1С—Битрикс, получили ответ:

Автоматическое сообщение о создании заявки в разработку

На основе информации из данного обращения была создана заявка в отдел разработок.
"не ставится окружение без selinux"
Категория: Ошибки.
Номер обращения в разработку: 80839