1C: различия между версиями

Материал из ALT Linux Wiki
Строка 149: Строка 149:


К сожалению, 1С-сервер практически не пишет никаких отчётов, поэтому если что-то не работает, понять, что именно не так, бывает сложно.
К сожалению, 1С-сервер практически не пишет никаких отчётов, поэтому если что-то не работает, понять, что именно не так, бывает сложно.
Вранье, курите технологический журнал.
Разумеется, можно подключить технологический журнал. Но даже самое усердное курение самого подробного технологического журнала может оказаться малопродуктивно, если мы имеем дело с чем-то вроде "Unknown error".
 
Наример, srv1cv83 попросту не запустится если HOSTNAME= из /etc/sysconfig/network почему-то не разрешается в адрес. Чтобы избежать этого, проследите чтобы имя сервера было зарегистрировано в доменной зоне, а также добавьте соответствующую запись в /etc/hosts, тогда неисправность/сбой/недоступность DNS будут не так страшны.
 
Порты, которые слушает 1С:
Порты, которые слушает 1С:
<pre>tcp        0      0 *:1540                      *:*                        LISTEN      18704/ragent
<pre>tcp        0      0 *:1540                      *:*                        LISTEN      18704/ragent

Версия от 17:47, 24 февраля 2015

Унифицированная статья для разворачивания сервера 1С:Предприятие 8.3 и 8.2.

См. также


Подключение необходимых репозиториев ALT Linux

На текущий момент рабочей СУБД является PostgreSQL 9.0 [1] версии от Etersoft Пакеты для аппаратного ключа защиты берем у них же.

Итого наш конфиг репозитория приобретает следующий вид:

cat /etc/apt/sources.list.d/byfly.list
rpm      ftp://ftp.etersoft.ru/pub/Etersoft/Postgre@Etersoft/9.0.4 x86_64/ALTLinux/p7 main
rpm      ftp://ftp.etersoft.ru/pub/Etersoft/Postgre@Etersoft/9.0.4 x86_64/ALTLinux/p7/extra main
rpm      ftp://ftp.etersoft.ru/pub/Etersoft/HASP/3.3 x86_64/ALTLinux/p7 main

rpm [p7] ftp://ftp.byfly.by/pub/ALTLinux/p7/branch x86_64 classic
rpm [p7] ftp://ftp.byfly.by/pub/ALTLinux/p7/branch x86_64-i586 classic
rpm [p7] ftp://ftp.byfly.by/pub/ALTLinux/p7/branch noarch classic

Возможно также использование 9.2 из t7.

Установка сервера 1С:Предприятие на ALT Linux

Состав сервера 1С

Для версии 8.2:

  • 1C_Enterprise82-common… — Общие компоненты 1С Предприятие 8.2 для Linux
  • 1C_Enterprise82-crs… — Компоненты хранилища конфигураций 1С Предприятие 8.2 для Linux
  • 1C_Enterprise82-server… — Сервер 1С Предприятие 8.2 для Linux
  • 1C_Enterprise82-ws… — Компоненты Web-сервисов 1С Предприятие 8.2 для Linux

Для версии 8.3:

  • 1C_Enterprise83-common… — Общие компоненты 1С Предприятие 8.3 для Linux
  • 1C_Enterprise82-server… — Сервер 1С Предприятие 8.3 для Linux
  • 1C_Enterprise82-ws… — Компоненты Web-сервисов 1С Предприятие 8.3 для Linux

Также для каждого из этих компонентов присутствуют пакеты -nls с поддержкой национальных символов.

Подготовка к установке

Сначала проверьте настройку интернационализации системы:

cat /etc/sysconfig/i18n
 LANG=ru_RU.UTF-8
 SUPPORTED=ru_RU

Дело в том, что если сервер 1С не найдёт тут кодировки ru_RU.UTF-8 (например, если установка происходит в OVZ-контейнере), то он будет настойчиво пытаться подключиться к нашей базе с локалью en_EN.UTF-8. А в chroot postgresql копируется только та локаль, которая задана при создании базы. Таким образом 1С-сервер не сможет подключиться к базе. Итак, данное руководство предполагает, что вы используете локаль ru_RU.UTF-8 в качестве общесистемной. Если вы хотите использовать для доступа к БД имя хоста, а не IP, то хорошо бы настроить обратную DNS-зону. Это избавит вас от некоторых хлопот и возможной путаницы (подробности ниже).

Устанавливаем Postgresql

Стандартный Postgresql не будет работать с 1С, а rpm-пакеты с Postgres, которые идут в дистрибутиве 1C, предназначены только для установки на fedora-совместимых дистрибутивах. Устанавливаем пакеты от Etersoft, при этом не забывая обновить дистрибутив до последней версии.

apt-get update
apt-get dist-upgrade
apt-get install  postgre-etersoft9.0 postgre-etersoft9.0-contrib postgre-etersoft9.0-server glibc-i18ndata

Для установивших ОС с диска (а не разворачивающих ovz-контейнер) с кодировками быть проблем не должно.

В любом случае, проверяйте locale. Если нет UTF-8, устанавливайте:

localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8 # для российских баз
localedef -c -i uk_UA -f UTF-8 uk_UA.UTF-8 # для украинских баз
localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8 # для белорусских баз

При попытке первого запуска сервиса (инициализации базы данных) postgresql версии 9.0.4 может ругаться на отсутствующий каталог /var/lib/postgresql, после ручного создания данной папке СУБД инициализируется нормально. После этого открываем файл /var/lib/pgsql/data/postgresql.conf и проверяем, чтобы postgres слушал нужный интерфейс, имел соответствующую локаль и настройки, описанные в документации 1С-сервера. Вот пример работающего файла конфигурации (закомментированные строки пропущены).

Пожалуйста, не копируйте себе бездумно эту конфигурацию! В комментариях дефолтного postgresql.conf находится много полезной информации

:

listen_addresses = '*'
max_connections = 100
shared_buffers = 16MB
max_fsm_pages = 204800
effective_cache_size = 128MB
stats_row_level = on
autovacuum = on
datestyle = 'iso, dmy'
lc_messages = 'ru_RU.UTF-8'
lc_monetary = 'ru_RU.UTF-8'
lc_numeric = 'ru_RU.UTF-8'
lc_time = 'ru_RU.UTF-8'
max_locks_per_transaction = 150
default_with_oids = on

Учтите, что эта настройка далека от идеальной и производительной. Данное руководство не ставит перед собой такой задачи, поэтому настроить Postgresql под свои нужды вам надо будет самостоятельно (вот, к примеру, руководство по настройке производительности) Также в файле /var/lib/pgsql/data/pg_hba.conf вам надо будет определить политику доступа пользователей к СУБД (для этого читайте документацию postgresql), а по умолчанию настройка выглядит так:

host    all         all         0.0.0.0/0             md5

Что означает разрешение подключаться с любых адресов к любым базам с авторизацией по паролю.

Для первоначальной настройки достаточно сменить пароль суперпользователя СУБД:

[root@localhost ~]# psql -h localhost -U postgres template1
template1=# ALTER USER postgres WITH PASSWORD 'secret';

Не забываем поставить СУБД на автостарт:

chkconfig postgresql on

На этом настройка Postgresql завершена. Настоятельно рекомендуется настроить автоматическое резервное копирование.

Установка и запуск защиты HASP

Для сервера 1С на Linux не требуется серверный ключ при количестве подключенных пользователей менее 10. Устанавливаем менеджер лицензий:

apt-get update
apt-get install haspd haspd-modules

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

service haspd start

Проверка состояния:

# service haspd status

Hardware protection keys support bundle. Etersoft (c) 2008-2012
HASPD package 3.3 with /dev/bus/usb support
Aladdin HASP 4/HL/SRM driver status:
    kernel module aksparlnx is not loaded (WARNING: HASP LPT keys support is disabled! Run service haspd build if needed.)
    aksusbd is running
    winehasp is running
    hasplm is running
    hasplmd is running
Daemon version: 1.14 (#7779) - key API (USB) version: 3.88 (parallel driver not available)
    /proc/bus/usb workaround is enabled
Smartkey 3 USB/LPT driver status:
    skeyd is stopped
SafeNet Sentinel status:
    usbsentinel is stopped
    SntlKeysSrvrlnx is stopped

Use $ eterkeytest [--hasp] [--sentinel] [--eutron] for test key presence

Сервис на автостарт

chkconfig haspd on
 Примечание: текущая версия haspd не видит свежевоткнутые ключи и требует перезапуска после их подключения во время работы службы.


Установка и запуск сервера 1С

Заходим в каталог с распакованным rpm64.tar.gz и выполняем следующую команду (с поправкой на свою версию):

apt-get install 1C_Enterprise83-common-8.3.4-365.x86_64.rpm 1C_Enterprise83-common-nls-8.3.4-365.x86_64.rpm 1C_Enterprise83-server-8.3.4-365.x86_64.rpm 1C_Enterprise83-server-nls-8.3.4-365.x86_64.rpm 1C_Enterprise83-ws-8.3.4-365.x86_64.rpm 1C_Enterprise83-ws-nls-8.3.4-365.x86_64.rpm

Для нормальной работы тонкого и Web-клиента 1С Предприятия также требуются: unixodbc, libgsf, glib2, ttf2pt1, ImageMagick (+ создание символических ссылок на /usr/lib64/libWand.so -> libMagickWand-6.Q16.so.1.0.0 /usr/lib64/libWand.so.1 -> libMagickWand-6.Q16.so.1.0.0). Все это можно сделать вручную, либо установив пакет 1c-preinstall-full, который тянет многие зависимости нужные для рабочей станции, но излишние для сервера.

Запуск:

service srv1cv82 start

И автозапуск

chkconfig srv1cv83 on

К сожалению, 1С-сервер практически не пишет никаких отчётов, поэтому если что-то не работает, понять, что именно не так, бывает сложно. Разумеется, можно подключить технологический журнал. Но даже самое усердное курение самого подробного технологического журнала может оказаться малопродуктивно, если мы имеем дело с чем-то вроде "Unknown error".

Наример, srv1cv83 попросту не запустится если HOSTNAME= из /etc/sysconfig/network почему-то не разрешается в адрес. Чтобы избежать этого, проследите чтобы имя сервера было зарегистрировано в доменной зоне, а также добавьте соответствующую запись в /etc/hosts, тогда неисправность/сбой/недоступность DNS будут не так страшны.

Порты, которые слушает 1С:

tcp        0      0 *:1540                      *:*                         LISTEN      18704/ragent
tcp        0      0 *:1541                      *:*                         LISTEN      18711/rmngr
tcp        0      0 *:1560                      *:*                         LISTEN      18711/rmngr
tcp        0      0 *:1561                      *:*                         LISTEN      18704/ragent
tcp        0      0 *:1562                      *:*                         LISTEN      18720/rphost
tcp        0      0 *:1563                      *:*                         LISTEN      18720/rphost

Создание сервера предприятия

Из Windows это можно сделать так:

Запустите оснастку управления серверами предприятия из меню Пуск —> 1С Предприятие 8.3 —> Серверы 1С Предприятия. Создайте центральный сервер. Для этого войдите в контекстное меню и выберите пункт "Создать центральный сервер 1С Предприятия". Введите имя и описание линукс-сервера. Теперь после закрытия окна нажмите на плюсик рядом с новым сервером. Если сообщений об ошибках не было выдано, то создастся кластер. БД создаются прямо из оснастки управления кластером 1С:Предприятие, либо при запуске Конфигуратора.

После создания (или загрузки базы) можно подключаться к серверу толстым или тонким клиентом, для Web-доступа базу нужно дополнительно опубликовать (см. ниже)

Установка сервера 1С Предприятие 8.2 на ALT Linux для документооборота

Стенд для 1С документооборота разварачивали двое - представитель ALT Linux и представитель 1c-kpd.

Опишу линуксовую часть.

Порядок шагов:

  • Разворачиваем сервер. Использовался сервер на 5-ой платформе, после установки дотянут до текущего p5
  • устанавливаем PostgreSQL от Etersoft: postgresql-8.3eter - установка и настройка по стандарту
  • Устанавливаем Алладиновские ключи. HASP-ключи взяты для Red Hat, usb-ключ воткнут - должен загореться после установки
  • Устанавливаем 1С 8.2.10.77 (с более старыми версиями проблема с документооборотом) взято с фтпшника компании http://1c-kpd.ru/ (нужен пароль)
  • Настраиваем apache для работы веб-клиента

Все шаги, кроме последнего достаточно тривиальны, за исключением мелочи - человек (из 1С) настраивающий сервер со стороны винды сообщил о каких-то ошибках которые лечатся запуском скрипта /opt/1C/8.2/i386/utils/config-server

Скрипт капризный, требует указания пути к мелкомягким шрифтам, потому понадобилось установить fonts-ttf-ms и конвертер ttf2pt1, после чего скрипт запускается с указанием пути к каталогу шрифтов как параметра командной строки и молча отрабатывает. Помогло.

Настройка Apache для веб-клиентов документооборота

  • Добавляем спец. модуль

я сделал файлик _1cws_module.load с единственной строчкой

LoadModule _1cws_module /opt/1C/v8.2/i386/wsap22.so

И положил в mods-available, затем подключил к апачу

  • делаем конфиг для будущего сервера.

Тут два шага - надо создать в специальном каталоге пользователя usr1cv82 корень будущего сервера

и создать конфиг хоста в апаче.

Шаг 1. Создаем корень сервера:

/home/usr1cv82/www/MyApp 

Это просто каталог. Владельцы которого apache2:grp1cv82, и права доступа владельцу на чтение (естественно надо позаботиться о том, чтобы apache2 мог зайти в хомяк /home/usr1cv82)

В этом каталоге надо создать файлик default.vrd такого содержания

 <?xml version="1.0" encoding="UTF-8"?>
 <point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
 		xmlns:xs="http://www.w3.org/2001/XMLSchema"
 		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 		base="/MyApp"
 		ib="Srvr=&quot;192.168.0.254&quot;;Ref=&quot;doc_demo&quot;;">
 	<ws enable="false"/>
 </point>

Третья строка отражает тот факт, что /home/usr1cv82/www/MyApp - корень сервера

Четвертая что IP сервера 192.168.0.254 (можно, видимо, и localhost), а

Ref=&quot;doc_demo&quot;;

, что база 1С называется doc_demo (создавал товарищ из 1С через винду)

Шаг 2 Конфиг хоста

в sites-available создаем 1c.conf такого вида:

 Alias /MyApp "/home/usr1cv82/www/MyApp"
 <Directory "/home/usr1cv82/www/MyApp">
     AllowOverride None
     Options None
     Order allow,deny
     Allow from all
     SetHandler 1c-application
     ManagedApplicationDescriptor /home/usr1cv82/www/MyApp/default.vrd
 </Directory>

и включаем его.

Перезапускаем апач. Если ругнулся на ManagedApplicationDescriptor, значит модуль от 1С не загрузился.

Все. Проверяем с клиента по адресу http://IP/MyApp Должна показаться морда документооборота. Для входа далее нужен специальный клиентский ключ...

Часто возникающие проблемы

В файле /home/usr1cv81/.1cv81/1C/1Cv81/reg_1541/1CV8Reg.lst можно найти конфигурацию кластера 1С. Например, у меня он выглядит так:

{0,
{332873ae-75ed-11dc-9f9f-00fc390012a1,"Локальный кластер",1541,"banzay.aspirinka.net",0,0},
{1,
{0dd04482-9367-11dc-748b-00fc390012a1,"1c","","PostgreSQL","1c.aspirinka.net","1c","postgres","zPurhs5czp8pJJ9Z6craZ2vrNnl9u7bkfzlIoDTEfW8=","CrSQLDB=Y;DB=1c;DBMS=PostgreSQL;DBSrvr=1c.aspirinka.net;DBUID=postgres;Descr=;Locale=ru_RU;Ref=1c;SLev=0;SQLYOffs=0;Srvr=banzay.aspirinka.net",0,
{0,00010101000000,00010101000000,"","",""},0}
},
{1,
{36713c62-75ed-11dc-9f9f-00fc390012a1,"banzay.aspirinka.net",1,1,
{9.827956989247312e-2,9.548387096774194e-2,0,0,2.795698924731183e-3,93,1.150875992227514e-3,0},1000}
},
{0},
{1,
{366b0522-75ed-11dc-9f9f-00fc390012a1,"Центральный сервер",1540,"banzay.aspirinka.net",1,
{1,
{1560,1591}
},"","gjZ6h/5H95FpOCqDeLmg2Q=="}
}
}
  • 1С не сможет подключиться к базе Postgresql, если настройки локали не совпадают. Так что приведите параметр Locale= в соответствие с настройками вашей базы.
  • А ещё 1С берёт значение хоста откуда угодно, только не из настроек, введённых пользователем. :) При необходимости укажите правильные имена хостов для «Центрального сервера» и «Локального кластера» вручную. Однако если у вас правильно настроена обратная зона DNS, ручных исправлений не потребуется.

Установка 1С-сервера в OVZ-контейнер

Для начала создадим ovz-инстанцию.

Для этого:

Можно воспользоваться готовым spt-профилем из пакета spt-profiles-ovz-1C

Установка профиля производится так

apt-get install spt-profiles-ovz-1C

Для работы с spt вы должны иметь установленные и настроенные hasher и spt. Читайте соответствующие руководства.

Либо вы можете взять готовый ovz-шаблон отсюда.

Далее размещаем шаблон в /var/lib/vz/template/cache/

cp altlinux-1c-server.tar.gz /var/lib/vz/template/cache/

и создаём ovz-инстанцию:

vzctl create 101 --ostemplate altlinux-1c-server --config myserver

Здесь 101 — это номер инстанции (у вас он может быть другой) и myserver - конфигурация сервера; вам также нужно произвести её самостоятельно, для чего читайте руководство по OpenVZ.

Запускаем инстанцию:

vzctl start 101

Копируем внутрь rpm-пакеты с 1С-сервером:

cp 1C_Enterprise-* /var/lib/vz/root/101/root/

После этого можно зайти в инстанцию и установить пакеты 1С-сервера:

vzctl enter 101
entered into VE 101
cd /root
apt-get install 1C_Enterprise-common-8.1.8-76.i386.rpm 1C_Enterprise-server-nls-8.1.8-76.i386.rpm 1C_Enterprise-common-nls-8.1.8-76.i386.rpm  1C_Enterprise-server-8.1.8-76.i386.rpm