Установка CRM Битрикс24 на Linux CentOS

Обновлено Обновлено: Опубликовано Опубликовано:

Есть несколько способов установить CRM Битрикс24 — развернуть готовую виртуальную машину BitrixVM или установить коробку с помощью готового веб окружения. В данной инструкции мы будем использовать второй метод.

Установка битрикс окружения

Битрикс24 является веб приложением и для своей работы требует установленного и настроенного веб-сервера. Для этого у 1С есть готовый скрипт — нам просто нужно его загрузить и запустить.

И так, скачиваем скрипт:

yum install curl

curl -sOL http://repos.1c-bitrix.ru/yum/bitrix-env.sh

* первая команда установит утилиту curl, если ее нет.

Даем права скрипту на выполнение:

chmod +x bitrix-env.sh

... и запускаем его:

./bitrix-env.sh

Мы увидим приветствие, в котором говорится, что на все вопросы по умолчанию будет ответ «Да» (Yes) и при необходимости ответить «Нет» нужно ввести n. Также скрипт должен быть запущен от пользователя root:

====================================================================
Bitrix Environment for Linux installation script.
Yes will be assumed as a default answer.
Enter 'n' or 'no' for a 'No'. Anything else will be considered a 'Yes'.
This script MUST be run as root, or it will fail.
====================================================================

... и следом, если на сервере работает SELinux, первый вопрос — согласны ли мы его отключить. Отвечаем утвердительно, нажав Enter:

You have to disable SElinux before installing Bitrix Environment.
Do you want to disable SELinux?(Y|n)

Скрипт вернет ответ, что SELinux выключен и потребует перезагрузки сервера:

SELinux status changed to disabled in the config file /etc/selinux/config.
SELinux status changed to disabled in the config file /etc/sysconfig/selinux.
Please reboot the system! (cmd: reboot)

... перезагружаем (если отключали SELinux):

shutdown -r now

После перезагрузки снова запускаем скрипт:

./bitrix-env.sh

* перед этим необходимо перейти в каталог, куда мы его скачивали.

Начнется процесс установки обновлений, загрузки пакетов и развертывания необходимого программного обеспечения — просто ждем.

В конце мы должны увидеть следующее:

Bitrix Environment bitrix-env has been installed successfully.

Смотрим пароль для подключения к базе mysql:

cat /root/.my.cnf

Мы увидим что-то на подобие:

...
password='3XJ2|~HnBJB7jsS~L8F7'
...

* где 3XJ2|~HnBJB7jsS~L8F7 — пароль для подключения к базе данных.

Веб-окружение установлено.

На момент обновления данной инструкции, вместе с окружением битрикс устанавливался PHP версии 7.4. Однако в панели Битрикс24 система пишет оповещение о прекращении поддержки данной версии. Необходимо вручную обновить интерпретатор.

Обратите внимание на 2 важных момента, которые произойдут в системе:

  1. Для пользователя root будет установлен флаг о необходимости сменить пароль при следующем входе.
  2. Утилита управления брандмауэром firewalld будет удалена. Использовать нужно будет iptables.

Установка Битрикс24

Открываем браузер и переходим по ссылке https://<IP-адрес сервера>/bitrixsetup.php — откроется окно приветствия. Меняем язык на русский и кликаем по кнопке Установить:

Начинаем установку Битрикс24

В открывшемся окне выбираем дистрибутив 1С-Битрикс24 и демонстрационную версию (если у нас есть ключ, то можно выбрать коммерческую лицензию и ввести его), после нажимаем по кнопке Загрузить:

Выбираем дистрибутив и демонстрационную версию продукта

... начнется процесс загрузки дистрибутива. После его окончания откроется мастер установки — на первой странице принимаем лицензионное соглашение и нажимаем Далее:

Принимаем лицензионное соглашение при установке

На странице «Регистрация продукта» можно снять галочку для заполнения формы регистрации:

Регистрация Битрикс24 при его установке

Начнется процесс установки Битрикс24. Ждем — откроется окно создания учетной записи администратора. Заполняем веб-формы и кликаем Далее.

Откроется страница настройки портала. Кликаем Далее до пункта «Настройка Битрикс24» — отмечаем нужные нам галочки и кликаем Установить:

Настройка портала перед установкой

Откроется последняя страница — нажимаем по Перейти в Битрикс24. Установка завершена.

Настройка HTTPS

Для корректной работы портала необходимо на него заходить по https, а для этого нужен сертификат. Мы рассмотрим пример получения бесплатного сертификата от Let's Encrypt. Подробнее в статье Получение бесплатного SSL сертификата Let's Encrypt.

Открываем на редактирование файл:

vi /etc/nginx/bx/site_enabled/s1.conf

В раздел server добавляем следующее:

server {
        ...
        location ~ /.well-known {
                root /usr/share/nginx/html;
                allow all;
        }
        ...
}

Открываем второй файл:

vi /etc/nginx/bx/site_enabled/ssl.s1.conf

Также добавим:

server {
    ...
    location ~ /.well-known {
        root /usr/share/nginx/html;
        allow all;
    }
    ...
}

* данная настройка укажет веб серверу искать файлы в каталоге /usr/share/nginx/html, если мы обратимся к странице /.well-known.

Если у нас несколько сайтов, данную операцию нужно повторить для конфигурационных файлов всех этих сайтов. Они находятся в каталоге /etc/nginx/bx/site_enabled.

Проверяем корректность настройки NGINX и если ошибок нет, перезапускаем службу:

nginx -t && nginx -s reload

Устанавливаем утилиту certbot:

yum install certbot

С помощью даннай утилиты получим сертификат:

certbot certonly --webroot --agree-tos --email postmaster@dmosk.ru --webroot-path /usr/share/nginx/html/ -d bitrix.dmosk.ru

* в данном примере мы запрашиваем сертификат для домена bitrix.dmosk.ru. Предполагается, что именно на нем у меня работает битрикс.

Теперь открываем файл:

vi /etc/nginx/bx/conf/ssl.conf

Редактируем значения для ssl_certificate и ssl_certificate_key:

ssl_certificate         /etc/letsencrypt/live/bitrix.dmosk.ru/fullchain.pem;
ssl_certificate_key     /etc/letsencrypt/live/bitrix.dmosk.ru/privkey.pem;

* в данном примере мы указываем пути до полученных сертификатов. Где bitrix.dmosk.ru — имя нашего сайта, для которого был получен сертификат.

Перезапускаем nginx:

systemctl restart nginx

Можно открывать портал по доменному имени по https.

Для автоматической переадресации с http на https в корне каталога с сайтом создаем файл .htsecure. В нашем примере, сайт находится в каталоге /home/bitrix/www:

touch /home/bitrix/www/.htsecure

И зададим в качестве владельца созданного файла пользователя bitrix:

chown bitrix:bitrix /home/bitrix/www/.htsecure

Добавление другого типа сайта

На первом этапе мы выбрали установку и настройку CRM-системы. Вы могли выбрать Интернет-магазин или обычный сайт. Так или иначе, нам может понадобиться на том же сервере развернуть новый тип веб-приложения.

Для этого заходим на сервер по SSH. Если мы зашли не под пользователем root, вводим команду:

/root/menu.sh

Если мы заходим в данное меню впервые, система запросит установить пароль для пользователя bitrix — вводим его дважды.

Создаем пул для управления:

Available actions: 
                  1. Create management pool on the server
                  2. Configure localhost settings
                  0. Exit.

Enter your choice: 1

Вводим домен для портала, который будет крутиться на новом пуле:

Please enter master server name (default: bitrix.dmosk.ru): shop.dmosk.ru

Мы должны увидеть сообщение, что пул успешно создан:

Pool has been created successfully. Please enter any key

Нажимаем Enter — загрузится меню управления и выбираем управление пулом сайтов:

Available actions: 
                 1.  Manage servers in the pool
                 2.  Configure localhost settings
                 3.  Configure MySQL service for the pool
                 4.  Configure Memcached service for the pool
                 5.  Configure pool monitoring
                 6.  Configure pool sites
                 7.  Configure Sphinx service for the pool
                 8.  Manage pool web servers
                 9.  Configure Push/RTC service for the pool
                 10. Background pool tasks
                 11. Configure Transformer service
                 0.  Exit.

Enter your choice: 6

Теперь создаем новый сайт:

Available actions: 
                 
        1.  Create a site
        2.  Delete a site
        3.  Change a site's cron settings
        4.  Change a site's email settings
        5.  Change a site's https settings
        6.  Change a site's backup settings
        7.  Configure NTLM auth for sites
        8.  Configure optional services (xmppd|smtpd) for a site
        9.  Configure nginx to use composite cache
        10. Configure additional site's options
        0. Previous screen or exit

Enter your choice: 1

Вводим имя сайта (доменное):

Enter the site name (e.g. example.org) or 0 to exit: shop.dmosk.ru

Теперь необходимо ввести kernel, чтобы создать новый сайт с отдельной базой данных:

The following site types are available:
      link - the new site will share database and kernel files with an existing site; 
                     web server configuration files will be created
    kernel - the new site will have a dedicated database 
                     and a private set of kernel files;
                     web server configuration files will be created
ext_kernel - the new site will have a dedicated database and a private set of kernel files; 
                     it will not be accessible from the web
Default: link

Enter site type (link|kernel|ext_kernel): kernel

Выбираем кодировку:

Enter site encoding (UTF-8|windows-1251): UTF-8

Разрешаем cron:

Do you want to enable cron for this site? (N|y) y

Теперь система предложит изменить параметры базы данных и пользователя. Если есть желание, можно их изменить, но в моем примере мы ответим нет:

Do you want to customize them? (N|y) n

Готово. Теперь в браузере переходим по адресу созданного сайта, в данном примере, http://shop.dmosk.ru — откроется окно, в котором можно создать новый портал, по инструкции, описанной выше.

Настройка (проверка системы)

Для правильной работы портала необходимы дополнительные настройки системы. Анализ ошибок и предупреждений при настройке можно получить на странице Настройки - Инструменты - Проверка системы.

Попробуем рассмотреть некоторые из ошибок и способы из решения.

1. Работа с сокетами

Является основной настройкой для портала, так как на ее основе строится много других провером. Нет смысла продолжать работу с Битрикс24, если при проверке работы с сокетами система возвращает ошибку.

Для корректной работы необходимо:

  1. Перейти на использование https с настройкой корректного сертификата.
  2. Установить (обновить) корневые центры сертификации.

После данных действий проверка должна пройти корректно.

2. Выполнение агентов на cron

Чтобы портал мог выполнять фоновые задания, необходимо настроить cron.

Открываем конфигурационный файл:

vi /home/bitrix/www/bitrix/php_interface/dbconn.php

Проверяем, чтобы была строка: 

define('BX_CRONTAB_SUPPORT', true);

Открываем на редактирование crontab (для пользователя bitrix):

crontab -e -u bitrix

Добавляем задание:

* * * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.php

* в данном примере мы запускаем на исполнение скрипт /home/bitrix/www/bitrix/modules/main/tools/cron_events.php каждую минуту.

Если не заработает, переходим в панели Битрикс в раздел НастройкиИнструментыКомандная PHP-строка и вводим команду:

COption::SetOptionString("main", "agents_use_crontab", "Y");
COption::SetOptionString("main", "check_agents", "Y");

3. Битрикс24.Диск. Быстрая работа с файлами

Переходим в раздел Настройки - Настройки продукта - Настройка модулей. Мы окажемся в разделе «Главный модуль». В подразделе «Файлы» ставим галочку Быстрая отдача файлов через Nginx:

Включаем быструю отдачу файлов через NGINX

Нажимаем Применить.

4. Настройка почтовых уведомлений

Для отправки почты прочитайте инструкцию Настройка корректной отправки почты в Битрикс24.

5. Сервер очередей Push and Pull

Переходим в раздел Настройки продукта - Настройки модулей. Выбираем в настройках Push and Pull:

Выбираем настройку Push and Pull

В разделе Использовать "Push server" выбираем Использовать облачный сервер "1С-Битрикс" и кликаем по кнопке Зарегистрироваться:

Выбираем настройку Использовать облачный сервер

6. Параметры настройки UTF (mbstring и константа BX_UTF)

Открываем файл:

vi /etc/php.d/bitrixenv.ini

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

; Utf-8 support
default_charset = UTF-8
mbstring.func_overload=2

Перезапускаем сервис:

systemctl restart httpd

7. Временная папка не существует

У нас могут не проходить тесты загрузки файлов с ошибкой Ошибка! Временная папка не существует (BX_TEMPORARY_FILES_DIRECTORY: /home/bitrix/tmp/bak). Где /home/bitrix/tmp/bak — конкретный путь к каталогу, каторого нет.

Для решения проблемы просто создадим данный каталог:

mkdir -p /home/bitrix/tmp/bak

И задаем права:

chown bitrix:bitrix /home/bitrix/tmp/bak

Настройка кеширования

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

  • apc
  • files
  • redis
  • xcache
  • memcached

Мы рассмотрим пример с memcached. Для начала, устанавливаем его:

yum install memcached php-pecl-memcached

Откроем конфигурационный файл memcached:

vi /etc/sysconfig/memcached

Отредактируем некоторые директивы:

CACHESIZE="1024"
OPTIONS="-t 8"

* где:

  • CACHESIZE — используемый объем памяти.
  • OPTIONS="-t 8" — разрешить 8 потоков.

Разрешаем автозапуск сервиса и запускаем его:

systemctl enable memcached --now

Перезапускаем веб-сервер apache:

systemctl restart httpd

Memcache установлен и подключен. Чтобы убедиться в этом, вводим следующую команду:

php -i | grep "memcached support"

Мы должны увидеть:

memcached support => enabled

Создаем конфигурационный файл битрикс:

vi /home/bitrix/www/bitrix/.settings_extra.php

<?php 

return array (
  'cache' => array (
    'value' => array (
      'type' => array (
        'class_name' => '\\Bitrix\\Main\\Data\\CacheEngineMemcache',
        'extension' => 'memcache'
      ),
      'memcache' => array(
        'host' => '127.0.0.1',
        'port' => '11211',
      ),
      'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
    ),
  ),
);
 
?>

* если в файле уже есть какое-то содержимое, то просто добавляем настройки cache.

Открываем конфигурационный файл dbconn.php:

vi /home/bitrix/www/bitrix/php_interface/dbconn.php

Добавляем строки (или приводим значения к виду):

define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "127.0.0.1");
define("BX_MEMCACHE_PORT", "11211");

* в данном примере мы указали, что наш сервер memcache находится на том же сервере, что и Битрикс24 (127.0.0.1), а сам кэширующий сервис слушает на порту 11211.

Готово. Можно перейти в панель проверики производительности и на вкладке PHP проверить результат.

Обновление PHP

Портал Битрикс24 разработан с использованием PHP. Время от времени разработчик предупреждает о прекращении поддержки установленной версии и необходимости обновления, например:

Предупреждение о необходимости обновления PHP

Рассмотрим пример обновления PHP в CentOS подробнее.

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

Перед выполнением процедуры лучше сделать снапшот (если наш портал работает на виртуальной машине).

На веб-портале в разделе Администрироване - Marketplace устанавливаем все обновления, которые даст установить битрикс.

Подключаемся к серверу по SSH и добавляем репозиторий PHP:

rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm

По нашему сообщению (из скриншота) нам нужно установить версию 8.1. Включаем репозиторий для соответствующей версии:

yum-config-manager --enable remi-php81

Если мы получим ошибку bash: yum-config-manager: command not found, необходимо установить yum-utils:

yum install yum-utils

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

yum install php

Система обновит кэш репозиториев и выполнит установку как PHP, так и расширений, которые необходимо обновить со старой версии на новую.

Чтобы Битрикс24 увидел обновления, вводим:

systemctl restart httpd

Проверяем работоспособность портала. Посмотреть используемую версию PHP можно в панели администратора, разделе Настройки - Производительность - PHP.

Откат PHP

Если после обновления PHP у нас возникли проблемы в работе портала, необходимо обратно вернуть старую версию PHP. Мы не можем штатными средствами удалить интерпретатор, но нам нужно посмотреть на список установленных расширений.

Вводим:

yum remove php-*-8*

* в данном примере мы запросим удалить все пакеты, которые начинаются на php- и имеют в названии -8, что в нашем примере соответствует восьмой версии PHP.

Но не соглашаемся на удаление, введя n.

Мы должны увидеть таблицу, на подобие:

==========================...
 Package
==========================...
Удаление:
 php-cli                  ...
 php-common               ...
 php-gd                   ...
 ...
Удаление зависимостей:
 ...

Для нас важен список пакетов, начинающихся на php. Эти пакеты нам нужно удалить, но без удаления зависимостей.

Обратите внимание, что в таблице есть разделы Удаление и Удаление зависимостей. Нас интересует только первый.

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

rpm -e <имя пакета> --nodeps

Например:

rpm -e php-cli --nodeps

rpm -e php-common --nodeps

rpm -e php-gd --nodeps

И так для всех пакетов из раздела Удаление полученной таблицы.

Теперь удаляем и сам пакет php:

rpm -e php --nodeps

Запрещаем ранее разрешенный репозиторий по установке php версии 8 и заррешаем для версии 7.4:

yum-config-manager --disable remi-php8*

yum-config-manager --enable remi-php74

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

yum install php

Важно убедиться, что будет установлена версия 7.

И установим все те пакеты, которые удалили из таблицы. В моем случае, список был такой:

yum install php-cli php-common php-gd php-ldap php-mbstring php-mysqlnd php-opcache php-pdo php-pecl-memcache php-process php-pspell php-sodium php-xml

Перезапускаем apache:

systemctl restart httpd

Готово. Пробуем зайти на портал битрикс24, проверить обновления, выполнить диагностику и еще раз можно попытаться обновить PHP.

Решение проблем

Рассмотрим процесс разбора проблем, а также приведем примеры.

Включение лога

Лучший способ локализовать проблему — изучить лог. По умолчанию, в Битрикс24 отключен режим журналирования. Рассмотрим процедуру его включения.

Открываем конфигурационный файл:

vi /home/bitrix/www/bitrix/.settings.php

Находим опцию debug и задаем значение true:, а также приводим опцию log к следующему виду:

    ...
    array (
      'debug' => true,
      ...
      'log' => array (
        'settings' => array (
          'file' => 'bitrix/modules/error.log',
          'log_size' => 1000000,
        ),

      ),
    ),

В данном примере мы указали, что файл лога будет сохраняться в каталог установки Битрикс + bitrix/modules/error.log, то есть в нашем случае для просмотра журнала можно использовать команду:

tail /home/bitrix/www/bitrix/modules/error.log

Ошибка 504 при оптимизации базы данных

Оптимизация базы занимает продолжительное время. Но вместо окончиния процесса мы можем увидеть ошибку: 504 Gateway Timeout.

Причина: веб-сервер nginx ждет ответа от работы скрипта определенное время. Данное время определено с помощью опций proxy_connect_timeout, proxy_send_timeout и proxy_read_timeout. Посмотреть текущие значения можно командой:

nginx -T | egrep "proxy_.*_timeout"

Если скрипт работает дольше, то система вернет ошибку.

Решение: нам нужно указать большее значение для вышеперечисленных опций:

vi /etc/nginx/nginx.conf

http {
    ...
    proxy_connect_timeout           3600;
    proxy_send_timeout              3600;
    proxy_read_timeout              3600;

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

Слишком большое ожидание может привести к снижению производительности системы. Рекомендуется вернуть значения после выполнения оптимизации.

Перезапускаем сервис nginx:

nginx -t && nginx -s reload

Можно запускать оптимизацию баз.

Читайте также

Дополнительная информация по битрикс24:

1. Настройка корректной отправки почты в Битрикс24.

2. Работа с резервными копиями в Битрикс24.

# CentOS # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет