1C
Унифицированная статья для разворачивания сервера 1С:Предприятие 8.3 и 8.2.
См. также
- Краткая инструкция для установки клиента 1С:Предприятие 8.3 вынесена на отдельную страницу.
- Инструкция по установке сервера 1С:Предприятие 8.x.
Подключение необходимых репозиториев 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
или
apt-get install postgresql9.2-1C postgresql9.2-1C-contrib postgresql9.2-1C-server glibc-i18ndata
для случая postgresql9.2 из репо p7/t7
Для установивших ОС с диска (а не разворачивающих 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С-сервера. Вот пример работающего файла конфигурации (закомментированные строки пропущены).
:
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="192.168.0.254";Ref="doc_demo";"> <ws enable="false"/> </point>
Третья строка отражает тот факт, что /home/usr1cv82/www/MyApp - корень сервера
Четвертая что IP сервера 192.168.0.254 (можно, видимо, и localhost), а
Ref="doc_demo";
, что база 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