Настройка дополнительных параметров

Системный администратор, у которого есть доступ к файлам установленной SuiteCRM, имеет дополнительные возможности по настройке системы, описанные в этом разделе.

Настройка прав доступа к файлам системы

Если система работает на компьютере под управлением ОС Linux, то вы можете поменять владельца файлов системы, а также контролировать доступ ко всем файлам и папкам системы путём настройки прав пользователя и группы.

Как минимум следующие файлы и папки должны быть доступны для записи веб-серверу:

  • ./config.php

  • ./config_override.php

  • ./sugarcrm.log

  • ./cache/ - включая все подпапки и файлы

  • ./custom/ - включая все подпапки и файлы

  • ./data/ - включая все подпапки и файлы

  • ./modules/ - включая все подпапки и файлы

Файлы и папки SuiteCRM, работающей в ОС Windows и использующей веб-сервер IIS, должны иметь права пользователя IIS (IUSR_[computerName]).

Файлы и папки SuiteCRM, работающей в ОС Linux, должны иметь права пользователя веб-сервера (как правило это пользователь apache или www-data), а также находиться в той же группе.

В системе должны быть установлены следующие права:

  • 2770 на все перечисленные выше папки

  • 660 на файл config.php и на все файлы в перечисленных выше папках

В следующем примере показана настройка прав чтения, записи и выполнения для пользователя и группы Apache, прописанные в массиве default_permissions файла config.php:

'default_permissions' => array(
'dir_mode' => 1528,
'file_mode' => 432,
'user' => 'apache',
'group' => 'apache',),

Для параметра dir_mode можно установить значение 1528, которое является десятичным эквивалентом восьмеричного значения 02770. Для параметра file_mode можно установить значение 432, которое является десятичным эквивалентом восьмеричного значения 0660.

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

Значения user и group определяют владельца созданных файлов. Если эти значения пусты, то для определения владельца файла и каталога будут использоваться настройки Apache. Эти значения должны быть установлены явно для пользователя и группы Apache на вашем сервере, и эти значения могут быть различными в зависимости от используемых вами настроек Apache и / или ОС Linux. Для обновления этих значений отредактируйте файл config_override.php в корневом каталоге системы, добавив в него следующие строки:

$sugar_config['default_permissions']['user'] = '<пользователь Apache>';
$sugar_config['default_permissions']['group'] = '<группа Apache>';

Все указанные выше настройки будут влиять только на создаваемые файлы. Если необходимо сменить права или владельца для уже существующих файлов - выполните необходимые команды в консоли ОС.

Безопасность

Блокирование Мастера обновления и Конструктора модулей, а также блокирование создания резервных копий файлов системы

Если вы как системный администратор управляете несколькими копиями SuiteCRM, то вы можете сохранить полный контроль над системами путём запрета внесения изменений в систему всем пользователям с административными правами. (Здесь необходимо отметить, что не следует путать системного администратора, имеющего доступ к базе данных и к файлам системы, и пользователя SuiteCRM с административными правами). Для этого можно заблокировать доступ пользователей к Мастеру обновлений, Конструктору модулей, а также запретить создавать резервные копии файлов системы.

Для выполнения блокировки в файле config_override.php установите следующий параметр:

['admin_access_control'] => true

Контроль загрузки модулей

Чтобы быть уверенным, что пользователи системы с административными правами (но не имеющие доступа к файлу конфигурации config_override.php) не могут загружать посторонние модули в систему, вы можете ограничить загрузку файлов рамками конкретной, контролируемой вами папки. Это позволит вам контролировать все загружаемые в систему модули.

Для контроля загрузки модулей выполните следующее:

В файле config_override.php установите следующие параметры:

'use_common_ml_dir'=>'true',
'common_ml_dir'=>'ml_directory',

где ml_directory - имя папки, из которой будет доступна загрузка модулей в систему.

Предотвращение межсайтовой подделки запросов (XSRF)

Чтобы предотвратить атаку по типу межсайтовой подделки запроса (XSRF), SuiteCRM хранит список допустимых сайтов, разрешённых в качестве источника запроса (HTTP referer). Если вы получили сообщение вроде "Possible Cross Site Request Forgery (XSRF) Attack Detected" от доверенного сайта, пытающегося получить доступ к системе, вы можете добавить URL этого сайта в список доверенных ссылок, поместив следующую строку в файл config_override.php:

$sugar_config['http_referer']['list'][] = 'my-most-trusted-site.com';

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

Производительность

Изменения в файле php.ini

Системе требуется как минимум 512MB оперативной памяти, но в некоторых случаях требования к памяти могут быть увеличены. Например, операции импорта или массового обновления могут потребовать значительно большего объёма памяти в зависимости от объёма обновляемой базы данных и настроек системы. Для изменения объёма потребляемой памяти измените следующее значение в файле php.ini:

memory_limit = 512M

Кроме того, параметр display_errors должен быть выключен. Включение этого параметра может привести к отображению пользователям нежелательных сообщений. Чтобы отключить этот параметр, пропишите в php.ini следующее:

display_errors = off

После изменения и сохранения файла php.ini необходимо перезагрузить веб-сервер.

Ограничение системных ресурсов

По умолчанию любые обращения к базе данных, требующие выполнения более 1000 запросов, прерываются. Для операций импорта, экспорта, синхронизации и при работе в панели администрирования максимальное число запросов равняется 50000. Таким образом, прерываются все процессы, занимающие слишком много системных ресурсов. Если операции, выполняемые пользователем, требуют большего количества запросов, то появится соответствующее сообщение, например: Error: Query limit of 1000 reached for Leads module.

Вы можете изменить эти настройки по своему усмотрению, указав значения для переменных defaul_limit, special_query_limit и special_query_modules в файле config_override.php.

Пример увеличения количества запросов для всех модулей до 5000:

$sugar_config['resource_management']['default_limit'] = 5000; // по умолчанию - 1000

Установка переменной default_limit в ноль снимает ограничение на количество запросов для всех модулей.

Пр необходимости для определённых модулей можно указать особые значения. В следующем примере ограничения сняты для модулей Контакты и Предварительные контакты, для всех остальных модулей используется значение по умолчанию:

$sugar_config['resource_management']['special_query_modules'][] = 'Leads';
$sugar_config['resource_management']['special_query_modules'][] = 'Contacts';
$sugar_config['resource_management']['special_query_limit'] = 0; // по умолчанию - 50000

Установка указанных переменных в минимальные значения может существенно ограничить пользователей при выполнении основных действий в системе. Установка указанных переменных в максимальные значения может значительно повлиять на производительность системы.

Настройка продолжительности выполнения заданий

Все задания планировщика SuiteCRM как правило выполняются утилитой cron. Существует несколько параметров, которые можно прописать в файле config_override.php, гарантирующих, что длительно выполняющиеся или невыполненные задания планировщика не помешают другим заданиям отработать своевременно.

  • max_cron_runtime

Параметр определяет, как долго может выполняться задание. Если задание превышает указанный лимит, его выполнение прерывается, и такое задание помечается как выполняемое в очереди заданий. При следующем запуске cron пропустит задание, которое превысило указанный лимит времени и будет выполнять следующее задание в очереди. Кроме того, если общее время выполнения по всем текущим заданиям превысит max_cron_runtime, то cron выполнит текущее задание и остановится. При следующем запуске cron будет выполнять следующее задание в очереди. По умолчанию значение max_cron_runtime равно 30 минутам.

$sugar_config['cron']['max_cron_runtime'] = 50
  • max_cron_jobs

Параметр определяет максимальное количество заданий, выполняющихся через Планировщик.

$sugar_config['cron']['max_cron_jobs'] = 10 // это значение по умолчанию
  • min_cron_interval

Параметр определяет минимальный интервал в минутах между выполнением заданий.

$sugar_config['cron']['min_cron_interval'] = 30 // это значение по умолчанию
  • max_retries

Параметр определяет количество повторных попыток выполнить задание, если предыдущая попытка закончилась неудачно.

$sugar_config['jobs']['max_retries'] = 5 // это значение по умолчанию
  • min_retry_interval

Параметр определяет интервал в минутах для повторного выполнения невыполненного задания

$sugar_config['jobs']['min_retry_interval'] = 30 // это значение по умолчанию
  • timeout

Параметр определяет интервал в секундах, в течении которого Планировщик будет пытаться выполнить задание. Если по истечении указанного интервала задание не выполнено, то оно будет помечено как невыполненное.

$sugar_config['jobs']['timeout'] = 86400; // это значение по умолчанию

Отключение автоматической фильтрации записей в модулях

По умолчанию Форма списка каждого модуля запоминает последнее установленное условие фильтрации, выполненное текущим пользователем. Если пользователь выполнит фильтрацию в модуле, затем перейдёт к другому модулю, а затем вновь откроет первый модуль, то будут отображены записи, соответствующие ранее выполненной фильтрации. И хотя это довольно удобно, это не всегда бывает нужно. К тому же такое поведение немного, но всё же снижает производительность системы.

Установите параметр $sugar_config['save_query'] в файле config_override.php в одно из следующих значений:

Значение Описание

all

Система заполняет поля условиями фильтрации и выполняет её (стандартное поведение).

no

Система отменяет условия фильтрации и отображает все записи модуля.

populate_only

Система заполняет поля условиями фильтрации, но не выполняет её.

Пример:

$sugar_config['save_query'] = 'populate_only';

Изменение расположения данных SuiteCRM

Изменение расположения папки загрузок

Все файлы, загружаемые системой, хранятся в специальной папке загрузок, её расположение задаётся переменной upload_dir в файле config_override.php. По умолчанию это папка upload, находящаяся в папке установленной системы.

При необходимости её расположение может быть изменено, для этого в переменной upload_dir задайте абсолютный путь к новому расположению папки загрузок.

Не забудьте скопировать все файлы из старой папки загрузок в новую.

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

Изменение расположения папки кэширования

В системе активно используется кэширование данных, что значительно повышает её производительность. Для хранения кэшированных данных (скомпилированных шаблонов, данных электронной почты и т.д.) используется специальная папка и её размер может быть достаточно велик. По умолчанию это папка cache, находящаяся в папке установленной системы. При необходимости её расположение может быть изменено, для этого в переменной cache_dir, расположенной в файле config_override.php, задайте абсолютный путь к новому расположению папки кэша. При этом на прежнем месте папки cache должна быть размещена ссылка, указывающая на новую папку кэша. Это необходимо для обеспечения доступа к некоторым закэшированным файлам системы. Новая папка должна быть доступна для записи пользователю, под которым запущен веб-сервер.

Изменение интерфейса SuiteCRM

Постоянное отображение Расширенных фильтров в Формах списка

В SuiteCRM версии 7.8 вместо Базового и Расширенного поиска был введён более компактный функционал фильтров. Если вам все же необходимо постоянное отображение полей фильтра в верхней части Формы списка определённых модулей (как это было в более ранних версиях системы), добавьте соответствующий массив по аналогии со следующим примером (для модулей Контрагенты, Пользователи и Сотрудники) в файл config_override.php:

'enable_legacy_search' =>
  array (
    0 => 'Accounts',
    1 => 'Users',
    2 => 'Employees',  ),

либо соответствующие строки в файл config_override.php, например:

$sugar_config['enable_legacy_search'][] = 'Accounts';
$sugar_config['enable_legacy_search'][] = 'Users';
$sugar_config['enable_legacy_search'][] = 'Employees';

Субпанели: замена выпадающего меню на кнопки

При необходимости можно отображать функции той или иной субпанели не в виде пунктов выпадающего меню, а в виде кнопок. На рисунке ниже показан пример стандартной субпанели Мероприятия с выпадающим меню и изменённой субпанели ИСТОРИЯ в модуле Предварительные контакты:

Замена выпадающего меню на кнопки

Для изменения субпанели ИСТОРИЯ выполните следующее:

  1. Создайте файл custom/Extension/modules/Leads/Ext/Layoutdefs/myCustomization.php

  2. Добавьте в него строку:

$layout_defs['Leads']['subpanel_setup']['history']['flat'] = 1

Быстрое редактирование пользовательского комбобокса

Если необходимо отредактировать комбобокс, созданный в редакторе комбобоксов, то это можно сделать как при помощи редактора, так и прямым редактирование файла php, что может быть актуально при редактировании больших объёмов данных. Например, для созданных в этом примере динамических комбобоксов, содержащих русскоязычные значения, необходимо отредактировать файл /custom/include/language/ru_ru.lang.php:

<?php
$GLOBALS['app_list_strings']['planet_list']=array (
  'mars' => 'МАРС',
  'jupiter' => 'ЮПИТЕР',
);
$GLOBALS['app_list_strings']['satellite_list']=array (
  'mars_deimos' => 'ДЕЙМОС',
  'mars_phobos' => 'ФОБОС',
  'jupiter_io' => 'ИО',
  'jupiter_europe' => 'ЕВРОПА',
  'jupiter_ganymede' => 'ГАНИМЕД',
  'jupiter_callisto' => 'КАЛЛИСТО',
);

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.