Bitrix Enviroment и CentOS 6

Итак, имеем чистую установленную CentOS 6

Обновляем систему, подключаем репозиторий EPEL, ставим минимально необходимый набор ПО:

# yum update
# yum install epel-release
# yum install mc bash-completion wget

Создаем пользователя с полными правами:

# useradd -m myadmin
# passwd myadmin
# vi /etc/sudoers

и добавляем строку чтобы получилось

root ALL=(ALL) ALL
myadmin ALL=(ALL) ALL

Для CentOS 6 есть удобная штука Bitrix Enviroment - скрипт, который разворачивает весь набор ПО для Битрикса.

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

После запуска необходимо подождать какое-то время пока все требуемое не будет загружено и установлено.

У Bitrix Enviroment есть одно неудобство: все настроено для работы с 1 сайтом, а если на сервере необходимо развернуть несколько инсталляций Битрикса и иных CMS - необходимо поработать руками.

Необходимо для работы каждого виртуального хоста под своими учетными данными

Ставим:

# yum install mod_ruid2

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

# cp /etc/httpd/conf.d/mod_ruid2.conf /etc/httpd/bx/conf/

В настройках виртуального хоста добавить строчку:

<VirtualHost 127.0.0.1:8888>
...
RUidGid myuser mygroup
...

В файле mod_ruid2.conf можно найти полное описание директив и настроек.

Перезапускаем httpd, проверяем все ли работает - для этого создаем файл ruid2.php и открываем его в браузере

<?php
print `id`;
?>

Должна открыться страничка с примерно такимответом:

uid=1002(myuser) gid=1000(mygroup) groups=1000(mygroup),33(bitrix)

Необходимо для работы каждого виртуального хоста под своими учетными данными

Предупреждение

Apache mpm-itk значительно медленнее prefork и event, поэтому на высокую оценку Битрикса рассчитывать не стоит (в меню Настройки → Производительность → Панель производительности плохие показатели будут в подсистемах «Среднее время отклика», «Файловая система» и как следствие «Конфигурация»). Лучше использовать вышеописанный mod_ruid2
# yum install httpd-itk.x86_64 

Запускаем Apache в режиме mpm-itk: добавляем в /etc/sysconfig/httpd строку

HTTPD=/usr/sbin/httpd.itk

Правим настройки PHP: добавляем в файлы /etc/httpd/bx/conf/php.conf и /etc/httpd/conf.d/php.conf строки

<IfModule itk.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>

Добавляем в файл /etc/httpd/conf/httpd.conf строки (кол-во запускаемых серверов и обслуживаемых клиентов зависит от конкретного сервера, необходимо подбирать самостоятельно):

<IfModule itk.c>
StartServers 1
MinSpareServers 1
MaxSpareServers 20
ServerLimit 50
MaxClients 100
MaxRequestsPerChild 4000
</IfModule>

В файле /etc/httpd/conf/httpd.conf заменяем строку

ServerTokens OS

на

ServerTokens Prod

Необходимо удостовериться что у пользователя под которым работает nginx есть права на чтение папок www

В файле /etc/nginx/nginx.conf настраиваем:

Корректируем число процессов под свою систему:

worker_processes 2;

Скрываем версию:

server_tokens off;

Необходимо включить расширение PHP для работы с MySQL - оно называется mysqli. Опять же - если его включить ДО восстановления сайта из резервной копии то на третьем шагу восстановления (а именно базы данных) - получим симпатишный белый экран.

# cd /etc/php.d
# mv 30-mysql.ini 30-mysql.ini.disabled
# cp 30-mysqli.ini.disabled 30-mysqli.ini
# service httpd restart

Альтернативный вариант заключается в отключении использования mysqli Битриксом: в файле bitrix/php_interface/dbconn.php исправляем строку

define("BX_USE_MYSQLI", true);

на

define("BX_USE_MYSQLI", false);

И в файле bitrix/.settings.php поменять

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

на

'className' => '\\Bitrix\\Main\\DB\\MysqlConnection'

чтобы получилось

....
'connections' => 
array (
  'value' => 
  array (
    'default' => 
    array (
      'className' => '\\Bitrix\\Main\\DB\\MysqlConnection',
....

Добавляем в /etc/hosts запись

127.0.0.1 mydomain.ru

В файле /etc/php.d/bitrixenv.ini меняем

pcre.recursion_limit = 14000

на

pcre.recursion_limit = 100000

В скрипте запуска сервера HTTP Apache /etc/rc.d/init.d/httpd изменить функцию «start()», добавив в нее одну строку (ulimit -s unlimited):

start() {
echo -n $"Starting $prog: "
ulimit -s unlimited
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}

и перезапускаем httpd

# service httpd restart

Решение для CentOS 7

Отсюда: http://host-consult.ru/pcre-recursion_limit-bitrix-centos7/

Создаем папку для дополнительного конфигурационного файла сервиса httpd:

# mkdir /etc/systemd/system/httpd.service.d

Внутри создаем файл, например recursion_limit.conf и в него пишем:

[Service]
LimitSTACK=infinity

Перегружаем демона и сервис:

# systemctl daemon-reload
# systemctl restart httpd

Существенное замечание

Снять ограничение на лимит стека, это рекомендация Битрикс. Скажем прямо не самая удачная, т.к. вы можете решив одну проблему заполучить проблему с постоянной нехваткой ОЗУ. И apache будет падать уже по этой причине. Поэтому лучше подобрать верхнее граничное решение, которое будет устраивать Битрикс. Вычислить его достаточно просто:

Обычно кэш равен 8 Мбайт, убедимся:

# ulimit -s
8192

Соответственно, нам нужно немного больше, пусть это будет 9 Мбайт: 1024*1024*9 = 9 437 184 байт

пишем в наш файл:

[Service]
LimitSTACK=9437184

В файле /etc/php.d/bitrixenv.ini меняем

sendmail_path = msmtp -t -i

на

sendmail_path = sendmail -t -i

В файле /etc/php.d/bitrixenv.ini меняем

date.timezone = Europe/Moscow

на свою, например

date.timezone = Asia/Krasnoyarsk

Есть две причины для данной ошибки:

Хост не может разыменовать свое доменное имя

Добавляем в файл /etc/hosts строку

127.0.0.1  mydomain.ru

Веб-сервер не может сохранить файлы сессии

Путь в файловой системе куда сохраняются сессии прописан в файле /etc/php.d/bitrixenv.ini и по умолчанию там прописано следующее значение:

session.save_path = "/tmp/php_sessions/www"

Таким образом нужно удостовериться что данная папка существует, внутри нее так же есть еще две папки: www и www_ext и права установлены следующим образом:

# cd /tmp
# ls -l
drwxrwx---  4 bitrix bitrix 4096 Sep 14 13:44 php_sessions
# cd php_sessions
# ls -l
drwxrwx--- 2 bitrix bitrix 4096 Sep 14 13:44 ext_www
drwxrwx--- 2 bitrix bitrix 4096 Sep 14 13:45 www
  • 25 bitrix smtp сервер
  • 80 http
  • 443 https
  • 5222 bitrix xmpp сервер
  • 5223 bitrix xmpp сервер (ssl)
  • 8090 ntlm авторизация
  • 8891 ntlm авторизация (ssl)
firewall-cmd --zone=public --add-port=25/tcp   --permanent
firewall-cmd --zone=public --add-port=80/tcp   --permanent
firewall-cmd --zone=public --add-port=443/tcp  --permanent
firewall-cmd --zone=public --add-port=5222/tcp --permanent
firewall-cmd --zone=public --add-port=5223/tcp --permanent
firewall-cmd --zone=public --add-port=8890/tcp --permanent
firewall-cmd --zone=public --add-port=8891/tcp --permanent
firewall-cmd --zone=public --add-port=8893/tcp --permanent
firewall-cmd --zone=public --add-port=8894/tcp --permanent
firewall-cmd --reload
  • software/bitrix/bitrix-enviroment-centos6.txt
  • Последнее изменение: 2017/05/15 18:55
  • 127.0.0.1