MyTetra Share
Делитесь знаниями!
Развёртывание "1С:Предприятие 8.1" под GNU/Linux
Время создания: 23.06.2014 09:11
Раздел: Компьютер - Windows - 1С - 1С и Linux
Запись: xintrea/mytetra_syncro/master/base/1337971517mmfzt6tx98/text.html на raw.github.com

Ни для кого не секрет, что программный комплекс "1С:Предприятие" является неотъемлемой составляющей информационных систем множества современных компаний. Именно поэтому настоящим событием стал выпуск редакции серверной части программного комплекса, работающей под управлением операционной системы Linux. Можно смело сказать, что компания "1С" дала Linux ещё один повод занять одну из важнейших позиций в современных бизнес-процессах. Ну что же, повод есть, и задача технических специалистов состоит в том, чтобы воспользоваться им с максимальной пользой как для себя, так и для предприятий, доверившихся свободному ПО.

В этой статье мы рассмотрим процедуру развёртывания сервера "1С:Предприятие 8.1" под управлением операционной системы Linux. За основу будет взят дистрибутив CentOS 5.3.

Необходимо сразу определиться с тем, что нам потребуется.

  • Сервер с установленным дистрибутивом CentOS.
  • Архиватор unrar, который можно получить на официальном сайте программы – http://www.rarlab.com/rar_add.htm.
  • Дистрибутивы серверной части "1С:Предприятие 8.1" (setuprh.rar1) и СУБД PostgreSql (setuppln833.rar1), полученные с официального сайта компании "1C" – http://users.v8.1c.ru.
  • Драйвер и менеджер HASP-ключей, полученный с официального сайта компании "Aladdin" и инсталлятор для него (HASP_SRM_LINUX_ 3.50_RedHat_RPM_Run-time_Installer.tar.gz2) – http://www.aladdin.com/support/hasp/vendor.aspx.

Установите имя узла для вашей операционной системы. Здесь мы будем использовать buh.example.com.

На время установки и настройки отключите сетевой фильтр.

1 Имена файлов могут различаться.

2 Применимо только для USB-ключей; имя файла может варьироваться в зависимости от версии продукта.

Договоримся, что все полученные пакеты были скопированы в каталог /root/1c и, если не сказано иное, все действия должны выполняться от имени суперпользователя root.

Процедуру развёртывания можно разделить на два этапа, а именно:

Установка и настройка.

Оптимизация работы.

Установка и настройка

Как ни странно, но процедуру развёртывания информационной системы мы начнём именно с серверной части "1C:Предприятие". Для начала распакуем полученный архив и произведём установку:

# mkdir /root/1c/tp && unrar x /root/1c/setuprh.rar /root/1c/tp

# yum --nogpgcheck localinstall /root/1c/tp/*.rpm

Запустите сервер "1С:Предприятие" и добавьте его в автозагрузку:

# service srv1cv81 start

# chkconfig add srv1cv81

Теперь установите СУБД PostgreSql. При установке в "свежих" версиях дистрибутивов может возникнуть проблема с зависимостями, так как пакет postgresql-plpython требует наличия интерпретатора python версии 2.3, тогда как во многих дистрибутивах установлен 2.4. Существует множество вариантов решения этой проблемы, но наиболее рациональным является получение src.rpm-пакета с исходными кодами python-2.3 (http://www.python.org/download/releases/2.3.5/rpms/), его последующая сборка и установка. Немаловажным является и то, что пакет postgresql-plpython никак не влияет на работоспособность "1С:Предприятие" и может быть проигнорирован. Итак, распакуйте полученный архив и произведите установку:

# mkdir /root/1c/psql && unrar x /root/1c/setuppln833.rar /root/1c/psql

# yum --nogpgcheck localinstall /root/1c/psql/*.rpm

Добавьте PostgreSql в автозагрузку:

# chkconfig postgresql on

Последний элемент, который необходимо установить, – это драйвер HASP-ключей, необходимый для того, чтобы сервер "1С:Предприятие" смог "увидеть" серверный HASP-ключ. На самом деле сервер "1С:Предприятие" не требует наличия серверного ключа в случае, когда число пользователей не превышает 12. В этой ситуации вам потребуется наличие только клиентских HASP-ключей. Однако, согласно правилам лицензирования, организация должна приобрести серверный ключ. Распакуем архивы и произведём установку с помощью предлагаемого установщика:

# cd /root/1c

# tar xf HASP_SRM_LINUX_ 3.50_RedHat_RPM_Run-time_Installer.tar.gz

# cd HASP_SRM_LINUX_3.50_RedHat_RPM_Run-time_Installer

# yum localinstall aksusbd-redhat-1.14-3.i386.rpm

После этого произойдёт установка драйвера и менеджера ключей. Также будет произведён их запуск. Убедитесь в том, что служба aksusbd определена для запуска на всех необходимых вам уровнях загрузки: # chkconfig --list aksusbd

Убедитесь, что ключ определён менеджером ключей. Для этого с помощью браузера подключитесь к Web-интерфейсу менеджера ключей по адресу http://localhost:1947. На этой странице перейдите по ссылке HASP Keys и найдите в списке ваш USB-ключ.

Теперь, когда все необходимые элементы установлены, самое время заняться настройкой PostgreSql. И первое, что требуется сделать, – инициализировать кластер баз данных (man initdb). При инициализации кластера будут использованы текущие настройки локали (locale) пользователя postgres. Для работоспособности "1С:Предприятие" необходимо установить русскую локаль и кодировку UTF-8. Сделать это можно любым удобным способом. Например, можно добавить следующую строку в файл .bash_profile, находящийся в домашнем каталоге пользователя postgres (/var/lib/pgsql):

LANG=ru_RU.UTF-8

После этого необходимо произвести инициализацию кластера баз данных:

# service postgresql initdb

После завершения инициализации кластера баз данных можно приступать к его настройке. Все файлы кластера находятся в каталоге /var/lib/pgsql/data, в котором вы сможете обнаружить конфигурационные файлы pg_hba.conf и postgresql.conf. Первый файл предназначен для определения параметров аутентификации, а второй – для определения параметров функционирования кластера баз данных.

Первое, что необходимо сделать, – создать нового пользователя для доступа к базам данных и предоставить ему необходимые права доступа, а также настроить подсистему аутентификации кластера баз данных. Серверу "1C:Предприятие" необходимы права доступа, дающие возможность создавать новые базы данных; исходя из этого создаваемой учётной записи будет присвоена роль superuser. Для добавления пользователя переключитесь в учётную запись postgres и из-под неё выполните команду:

$ createuser 1cadmin

Установите пароль для пользователя 1cadmin. Продолжая работать под учётной записью postgres, запустите консоль управления кластером баз данных PostgreSql с помощью команды psql и в ней дайте команду:

alter user "1cadmin" with password 'password';

Вместо password укажите пароль, который должен быть установлен для учётной записи 1cadmin. Не пренебрегайте базовыми требованиями к паролю, ведь от его стойкости зависит защищённость важнейшей информации предприятия.

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

host all all 0.0.0.0/0 md5

В частных случаях вы можете изменить эти параметры для ограничения возможностей подключения к кластеру баз данных PostgreSql. Подробное описание возможных параметров вы можете получить в документации PostgreSql (секция "Client Authentication").

Перейдём к настройке основных параметров, определяющих работу кластера баз данных. Здесь необходимо отметить, что перечень параметров огромен, и в этой статье мы рассмотрим лишь основные из них, которые наиболее сильно влияют на общий уровень производительности сервера "1С:Предприятие". Рассмотрим эти параметры.

shared_buffers. PostgreSql не читает данные и не записывает их напрямую на диск. Вся информация, необходимая PostgreSql, загружается в буфер сервера, который находится в разделяемой памяти (shared memory). Соответственно, работа с данными происходит путём обращения к разделяемой памяти. Если памяти будет недостаточно, то какие-то данные будут "сброшены" на диск для её высвобождения. Учитывая объёмы данных, с которыми обычно приходится работать серверу "1С:Предприятие", недостаток выделенной памяти может привести к существенному снижению производительности.

По умолчанию для параметра установлено значение 32MБ, что зачастую является недостаточным для достижения максимальной производительности. Но не забывайте, что выделение слишком большого объёма памяти может привести к её нехватке другим процессам, работающим в операционной системе.

Память выделяется при запуске PostgreSql, и в некоторых случаях вы можете получить в логах ошибку, сообщающую о невозможности создания буфера указанного размера из-за ограничений операционной системы. В этом случае вам необходимо увеличить значение параметра ядра kernel.shmmax, который определяет максимальный объём разделяемой памяти. Это можно сделать с помощью конфигурационного файла /etc/sysctl.conf.

При объёме оперативной памяти 2–4 ГБ имеет смысл установить значение:

shared_buffers = 256 MБ

Для определения оптимальности выделенного объёма памяти используйте утилиту ipcs во время активной работы с сервером "1С:Предприятие". Эта утилита покажет объём разделяемой памяти, выделенной для кластера баз данных, Значение параметра shared_buffers установите в 2 раза большее.

effective_cache_size. Значением параметра является объём оперативной памяти, который используется операционной системой для кэширования файлов. Этот параметр является одним из наиболее важных, так как на его значение опирается планировщик запросов PostgreSql. Значение вычисляется как 50–75% от общего объёма оперативной памяти.

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

При объёме оперативной памяти 2–4 ГБ имеет смысл установить значение:

work_mem = 64 MБ

maintenance_work_mem. Параметр определяет объём памяти, выделяемый для таких операций, как VACUUM, CREATE INDEX, ALTER TABLE ADD FOREIGN KEY.

При объёме оперативной памяти 2–4 ГБ имеет смысл установить значение:

maintenance_work_mem = 256 MБ

autovacuum. Один из наиболее важных параметров, отвечающий за автоматическое выполнение операции VACUUM, которая играет роль сборщика мусора. Для часто обновляемых баз данных, к которым относится "1С:Предприятие", включение данного параметра жизненно необходимо:

autovacuum = on

В зависимости от характера работы "1С:Предприятие" необходимо определить параметры автоматического вызова команды VACUUM. Важно помнить о том, что операция VACUUM создаёт определённую нагрузку, совершая множество операций ввода/вывода; таким образом, она может существенно снизить общий уровень производительности.

Для решения обозначенной выше проблемы в PostgreSql определён ряд параметров, влияющих на поведение команды VACUUM

vacuum_cost_limit. Значение суммарной стоимости, при достижении которого процесс VACUUM должен "заснуть". По умолчанию установлено значение 200, используйте его в качестве начального. В дальнейшем, наблюдая за работой PostgreSql и сервера "1С:Предприятие", вы сможете более точно определить необходимое значение.

vacuum_cost_delay. Время в миллисекундах, по истечении которого процесс VACUUM должен "пробудиться" после "засыпания", вызванного достижением значения параметра vacuum_cost_limit. Устанавливайте значение, кратное 10, в зависимости от интенсивности изменения записей в базе данных.

fsync. Принцип, по которому PostgreSql осуществляет запись данных на диск, схож с принципом функционирования журналируемых файловых систем. Изменяемые данные помещаются сначала в журнал транзакций, из которого они принудительно перемещаются на устройство хранения информации. Естественно, что этот принцип приводит к временным издержкам, связанным с выполнением операций записи на диск. Установка параметра в значение No поможет существенно повысить производительность в случае, когда данные базы данных интенсивно изменяются, но есть и обратная сторона медали. В случае возникновения сбоя в работе операционной системы и/или оборудования целостность базы данных будет нарушена, что повлечёт за собой восстановление из резервных копий и соответствующий простой в работе предприятия. Учитывая, что в "1С:Предприятие", как правило, размещаются очень важные данные, рекомендуется устанавливать параметр в значение Yes.

Как говорилось ранее, данные записываются на диск не сразу, попадая сначала в журнал транзакций. Возникает вопрос, а по какому алгоритму PostgreSql определяет момент, когда необходимо записать данные из журнала на диск. Этот алгоритм зависит от контрольных точек, а контрольные точки определяются двумя параметрами: checkpoint_segments и checkpoint_timeout. Важно помнить, что запись данных на диск начинается либо при заполнении максимального количества сегментов (checkpoint_segments), либо по истечении времени, определяемого параметром checkpoint_timeout.

checkpoint_segments. Параметр определяет количество сегментов между контрольными точками. Размер каждого сегмента составляет 16 МБ, а общий объём дискового пространства, которое может занять журнал транзакций, определяется по формуле (checkpoint_segments * 2 + 1) * 16 МБ.

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

LOG: checkpoints are occurring too frequently (17 seconds apart)

HINT: Consider increasing the configuration parameter "checkpoint_segments".

Попробуйте плавно увеличивать значение параметра checkpoint_segments до тех пор, пока сообщение не исчезнет. Не устанавливайте слишком большое значение, это увеличит время восстановления после сбоев. Попробуйте использовать параметр checkpoint_timeout.

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

max_locks_per_transaction. Параметр определяет максимально возможное количество блокировок за одну транзакцию. Для "1С:Предприятие" установите значение:

max_locks_per_transaction = 400

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

Перенос журналов транзакций может быть осуществлён очень просто. Допустим, что мы подключили второй жесткий диск, отформатировали его в файловую систему ext3 и подключили в каталог /mnt/hdd2. Теперь вам необходимо выполнить всего несколько команд, и журналы транзакций будут перемещены:

# service postgresql stop

# mv /var/lib/pgsql/data/pg_xlog /mnt/hdd2

# ln -s /mnt/hdd2/pg_xlog /var/lib/pgsql/data/pg_xlog

# service postgresql start

Перенос баз данных необходимо осуществлять в крайнем случае. Например, когда нагрузка стала критической, и нет возможности провести модернизацию аппаратных ресурсов. Принцип такой же, как и в случае с журналами транзакций. Необходимо только знать, где хранятся файлы базы данных. Все базы данных размещены в каталоге /var/lib/pgsql/data/base, но каталог каждой базы называется не именем, а её идентификатором. Чтобы узнать идентификатор переносимой базы, переключитесь в учётную запись пользователя postgres и воспользуйтесь следующей командой:

$ psql -A -q -t -c "select oid from pg_database where datname='DBNAME'"

Вместо DBNAME подставьте имя искомой БД.

В начало

Запуск

Теперь вы можете перезапустить Postgresql. Запустите клиентскую часть "1С:Предприятие". Перед вами появится окно со списком баз данных "1С:Предприятие" (если до этого вы не работали с программным комплексом, то список может быть пуст). Итак, далее выполняйте следующие действия.

Нажмите кнопку Добавить.

Выберите пункт "Создание новой информационной базы" и нажмите Далее.

Если у вас установлены конфигурации "1С:Предприятие", выберите "Создание информационной базы из шаблона", в списке выберите нужный шаблон и нажмите Далее.

Выберите "На сервере "1С:Предприятие".

Перед вами форма для ввода реквизитов доступа к серверу "1С:Предприятие", давайте заполним их:

кластер серверов "1С:Предприятие" – buh.example.com;

имя информационной базы в кластере – testdb;

защищённое соединение – Выключено;

тип СУБД – PostgreSQL;

сервер баз данных – buh.example.com;

имя базы данных – testdb;

пользователь базы данных – 1cadmin;

пароль пользователя – password.

Обязательно отметьте галочкой "Создать базу данных в случае её отсутствия".

Нажмите кнопку Готово.

На этом установку и настройку сервера "1С:Предприятие" можно считать оконченной. Можете загружать необходимые вам конфигурации и работать с ними в обычном режиме.

В начало

Что дальше?

Дальше всё очень просто. Первое, что вы должны сделать, – настроить автоматическое резервирование баз данных и определить правила фильтрации сетевого трафика. Имея минимальные навыки программирования в bash, вы сможете написать скрипт, который будет резервировать базы данных стандартными средствами, входящими в состав PostgreSQL.

В конце сентября 2009 года была выпущена новая версия платформы "1С:Предприятие 8.2". Из основных нововведений: поддержка Oracle и возможность работы посредством протокола HTTP, т. е. "через браузер". Будем надеяться, что это ещё один качественный шаг вперёд на пути к той диверсификации, которой так не хватает рынку программного обеспечения.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования