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

Материал из ALT Linux Wiki
< 1C
Нет описания правки
Нет описания правки
 
(не показано 57 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{attention|Служба обеспечения совместимости Базальт СПО не отвечает за содержимое данной страницы. Актуальную информацию о совместимости и актуальную информацию по установке от службы обеспечения совместимости смотрите в соответствующих таблицах: [https://www.basealt.ru/fileadmin/user_upload/compatibility/P10-view2.html p10] и [https://www.basealt.ru/fileadmin/user_upload/compatibility/P9-view2.html p9].}}
{{attention|Служба обеспечения совместимости Базальт СПО не отвечает за содержимое данной страницы. Актуальную информацию о совместимости и актуальную информацию по установке от службы обеспечения совместимости смотрите в соответствующих таблицах: [https://www.basealt.ru/fileadmin/user_upload/compatibility/P10-view2.html p10] и [https://www.basealt.ru/fileadmin/user_upload/compatibility/P9-view2.html p9].}}
{{Stub}}


См. также
См. также
Строка 16: Строка 15:
* 1c-enterprise-8.3.23.1688-ws… — Компоненты Web-сервисов 1С Предприятие 8.3 для Linux
* 1c-enterprise-8.3.23.1688-ws… — Компоненты Web-сервисов 1С Предприятие 8.3 для Linux


Также для каждого из этих компонентов присутствуют пакеты -nls с поддержкой национальных символов.
Также для каждого из этих компонентов присутствуют пакеты -nls с поддержкой национальных символов. Архив с установочными пакетами можно получить на сайте releases.1c.ru (требуется авторизация) в разделе Технологические дистрибутивы, Технологическая платформа, по ссылке Сервер 1С:Предприятия (64-bit) для RPM-based Linux-систем.


==== Подготовка к установке ====
==== Разрешение имён DNS ====
Главное требование состоит в том, что для правильной работы кластера серверов 1С, а речь идёт именно о запуске кластера по умолчанию участники, как сервер так и клиенты, должны иметь правильное разрешение имен серверных компонентов в адрес IP. Официальная рекомендация - наличие в сети работоспособного сервера DNS, правильная регистрация серверов-участников кластера в доменной зоне и обеспечение использования данной доменной зоны всеми клиентами. Вопросы настройки DNS выходят за рамки этой статьи.


Сначала проверьте настройку интернационализации системы:
Простой способ проверить правильность разрешения имени в адрес на сервере - команда
<pre>host `hostname`</pre>
в случае выполнения без ошибок и адреса IP, соответствующего hostname вашего будущего сервера, позволяет надеяться на успешный запуск кластера с именем hostname по умолчанию.


<pre>cat /etc/sysconfig/i18n
==== Языковая локализация системы ====
LANG=ru_RU.UTF-8
{{Note|Локаль системы важна для сервера 1С:Предприятие, однако пре установке ОС с официального дистрибутива, как правило, уже настроена, и в этом случае данный раздел можно пропустить}}
SUPPORTED=ru_RU</pre>
Проверьте настройку локализации системы:


Дело в том, что если сервер 1С не найдёт тут кодировки ru_RU.UTF-8 (например, если установка происходит в OVZ-контейнере), то он будет настойчиво пытаться подключиться к нашей базе с локалью en_EN.UTF-8. А в chroot postgresql копируется только та локаль, которая задана при создании базы. Таким образом 1С-сервер не сможет подключиться к базе.
<pre>cat /etc/sysconfig/i18n
LANG=ru_RU.UTF-8
SUPPORTED=ru_RU.UTF-8</pre>
или
<pre>locale
LANG=ru_RU.UTF-8
...</pre>
Дело в том, что если сервер 1С не найдёт тут кодировки ru_RU.UTF-8 (например, если установка происходит в OVZ-контейнере), то он будет пытаться подключиться к нашей базе с локалью en_EN.UTF-8. А в chroot postgresql копируется только та локаль, которая задана при создании базы. Таким образом 1С-сервер не сможет подключиться к базе.


Изменить локаль можно командой (подействует после перезагрузки):
Изменить локаль можно командой (требует перезагрузки):
  <pre>sed -i s/en_EN/ru_RU/ /etc/sysconfig/i18n</pre>
  <pre>sed -i s/en_EN/ru_RU/ /etc/sysconfig/i18n</pre>


Строка 34: Строка 43:
Если вы хотите использовать для доступа к БД имя хоста, а не IP, то хорошо бы настроить обратную DNS-зону. Это избавит вас от некоторых хлопот и возможной путаницы (подробности ниже).
Если вы хотите использовать для доступа к БД имя хоста, а не IP, то хорошо бы настроить обратную DNS-зону. Это избавит вас от некоторых хлопот и возможной путаницы (подробности ниже).


==== 32bit на x86_64 ====
==== Установка и запуск защиты HASP ====
Обязательно установите пакет {{pkg|i586-glibc-nss}}, если устанавливаете 32-битную версию 1С на x86_64 сервер - без этого не будет работать DNS в сервере 1С.
===== Для дистрибутивов на базе P10 включительно =====
{{Note|Уже с 2018 года обычно приобретаются и устанавливаются программные лицензии, аппаратный ключ используется редко. Если есть возможность использовать программные лицензии (рекомендуется), данный раздел можно пропустить}}


==== PostgreSQL ====
Для сервера 1С на Linux технически не требуется серверный ключ при количестве подключенных пользователей менее 10, но сама лицензия на использование должна быть. В любом случае для клиентских компьютеров лицензии нужны, и если они хранятся на ключе, лучше всего подключить его к серверу. Чтобы USB ключ был распознан платформой, требуется работающий менеджер лицензий.
Стандартный Postgresql не будет работать с 1С, а rpm-пакеты с Postgres, которые идут в дистрибутиве 1C, предназначены только для установки на fedora-совместимых дистрибутивах. Устанавливаем пакеты от Etersoft, при этом не забывая обновить дистрибутив до последней версии:
# apt-get update && apt-get dist-upgrade
В p7:
# apt-get install postgresql9.6-1C postgresql9.6-1C-contrib postgresql9.6-1C-server glibc-i18ndata
В p8/p9:
# apt-get install postgresql10-1C postgresql10-1C-contrib postgresql10-1C-server
Для Седьмой платформы ALT Linux есть более актуальные релизы от [https://postgrespro.ru/products/postgrespro/standard Postgres Pro]. Там же можно найти документацию на русском. Для этого сначала подключаем репозиторий и затем устанавливаем (для )
<pre>
# echo "rpm http://1c.postgrespro.ru/rpm/9.6/altlinux/7 x86_64 pgpro-1c" >/etc/apt/sources.list.d/pgpro-1c.list
# apt-get update && apt-get install postgresql-pro-1c-9.6
</pre>
Для установивших ОС с образа, а не развернувших контейнер, с кодировками проблем быть не должно.
 
В любом случае, проверяйте locale. Если нет UTF-8, устанавливайте:
<pre>
localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8 # для российских и белорусских баз
localedef -c -i uk_UA -f UTF-8 uk_UA.UTF-8 # для украинских баз
</pre>
Создаём файлы базы данных:
# service postgresql initdb
В седьмой платформе при попытке первого запуска сервиса (инициализации базы данных) postgresql версии 9 и новее может ругаться на отсутствующий каталог базы данных (/var/lib/pgsql/data), после ручного его создания (<tt>install -o postgres -g postgres -d /var/lib/pgsql/data</tt>) СУБД инициализируется нормально. Как рекомендует скрипт проверки базы, можно выполнить <tt>/etc/init.d/postgresql initdb</tt>, он создаёт также все необходимые файлы конфигурации.
 
После этого открываем файл /var/lib/pgsql/data/postgresql.conf и проверяем, чтобы postgres слушал нужный интерфейс, имел соответствующую локаль и настройки, описанные в документации 1С-сервера. Вот пример работающего файла конфигурации (закомментированные строки пропущены):
<pre>
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
</pre>
{{Attention|Не копируйте бездумно эту конфигурацию себе &mdash; в комментариях дефолтного postgresql.conf содержится масса полезной информации.}}
Учтите, что эта настройка далека от идеальной и производительной. Данное руководство не ставит перед собой такой задачи, поэтому настроить Postgresql под свои нужды вам надо будет самостоятельно (вот, к примеру, [http://oc.cs.msu.su/club/html/ руководство по настройке производительности], ещё [http://www.gilev.ru/postgresql/ конкретно для 1С], а вот [https://www.postgresql.org/docs/10/static/index.html официальная документация] по используемой версии PostgreSQL)
 
Также учтите, что postgres использует разделяемую память (shared memory) и в ядре есть ограничения, возможно, придётся их увеличить (по информации с gilev.ru, начиная с postgresql 9.4 это делать не нужно):
*sysctl kernel.shmall — the total amount of shared memory pages that can be used system wide, default 2097152.
*sysctl kernel.shmmax — the maximum size in bytes of a single shared memory segment that a Linux process can allocate in its virtual address space, default 1073741824 (1 GiB)
*sysctl kernel.shmmni — the system wide maximum number of shared memory segments, default 4096.
 
Также в файле /var/lib/pgsql/data/pg_hba.conf вам надо будет определить политику доступа пользователей к СУБД (для этого читайте документацию postgresql). По умолчанию после <tt>/etc/init.d/postgresql initdb</tt> все базы доступны всем без проверки (правило "trust"). Как минимум, можно сделать так:
<pre>host    all        all        0.0.0.0/0            md5</pre>
Что означает разрешение подключаться с любых адресов к любым базам с авторизацией по паролю.
 
Не забываем поставить СУБД на автостарт (годится и для sysvinit, и для systemd):
chkconfig postgresql on
Затем запускаем его:
service postgresql start
 
Для первоначальной настройки достаточно сменить пароль суперпользователя СУБД командой <code>psql -h localhost -U postgres template1</code> или (короче) <code>psql -U postgres</code>:
<pre>[root@localhost ~]# psql -U postgres
template1=# ALTER USER postgres WITH PASSWORD 'secret';</pre>
 
: Лучше создать отдельного пользователя для каждой базы данных (см. [[#Пользователи СУБД]])
 
На этом настройка Postgresql завершена.
 
Настоятельно рекомендуется настроить [http://wiki.postgresql.org/wiki/Automated_Backup_on_Linux автоматическое резервное копирование].
 
===== Вопросы безопасности =====
 
====== Доступ через сокет unix ======
По умолчанию в файле /var/lib/pgsql/data/postgres.conf задано, что postresql создаёт сокет с правами доступа 0777 ("все могут писать-читать"), при этом в /var/lib/pgsql/data/pg_hba.conf при подключении через сокет нет проверки пользователя.
 
Есть два пути решения.<br>
1. Разрешить доступ к сокету только членам группы postgres в файле postgres.conf:
unix_socket_group = ''              # default use main group of the user postgres
#unix_socket_permissions = 0777      # default
unix_socket_permissions = 0770
2. Требовать аутентификацию при подключениях через сокет в файле pg_hba.conf:
#local  all            all                                    trust # default
local  all            all                                    md5
В первом случае, если сервер 1С будет подключаться к postresql через сокет unix, нужно включить пользователя usr1cv8 в группу postgres:
usermod -a -G postgres usr1cv8
Обычно это не нужно — используется подключение TCP.
 
====== Доступ через TCP ======
Если это не было сделано, установите пароль пользователя postgres
# pwqgen
Dark*Plan7Smoky
# echo "ALTER USER postgres WITH PASSWORD 'Dark*Plan7Smoky';" | psql -h localhost -U postgres
Затем в файле pg_hba.conf укажите требование аутентификации для подключений через сокеты TCP (исходно там указано "trust" - то есть без аутентификации):
host    all            all            127.0.0.1/32            md5
host    all            all            0.0.0.0/0              md5
host    all            all            ::1/128                md5
 
====== Пользователи СУБД ======
Для работы 1С можно создать отдельного пользователя или даже отдельного пользователя для каждой информационной базы 1С:
<pre>
# pwqgen
Bunch!Climb$pay
# psql -U postgres
psql (9.6.6)
Введите "help", чтобы получить справку.
 
postgres=# CREATE USER cluster1c WITH password 'Bunch!Climb$pay';
postgres=# CREATE DATABASE db1c OWNER cluster1c;
postgres=# \q
#
</pre>
 
Возможно, понадобится также дополнительно назначить полные права пользователю:<code>GRANT ALL ON DATABASE db1c TO cluster1c;</code>
 
Проблема в том, что для работы 1С нужны права на создание и изменение функций в схеме public. ''(Самый простой путь тут - дать пользователю роль postgres, что эквивалентно работе с СУБД под суперпользователем: <code>GRANT postgres TO cluster1c;</code>. Если есть более корректный путь - укажите его здесь.)''
 
==== Установка и запуск защиты HASP ====
В 2018 году обычно приобретаются и устанавливаются программные лицензии, аппаратный ключ используется редко.
К тому же для сервера 1С на Linux технически не требуется серверный ключ при количестве подключенных пользователей менее 10, но сама лицензия на использование должна быть.
В любом случае для клиентских компьютеров лицензии нужны, и если они хранятся на ключе, лучше всего подключить его к серверу и установить менеджер лицензий.


Устанавливаем менеджер лицензий:
Устанавливаем менеджер лицензий:
Строка 188: Строка 82:
{{Note|текущая версия haspd не отслеживает события USB и требует перезапуска после подключения ключа во время работы службы.}}
{{Note|текущая версия haspd не отслеживает события USB и требует перезапуска после подключения ключа во время работы службы.}}


==== Установка и запуск сервера 1С ====
===== Для дистрибутивов на базе P11 =====
===== Зависимости и установка =====
Заходим в каталог с распакованным rpm64.tar.gz и выполняем следующую команду (с поправкой на свою версию):
<pre>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</pre>


Серверу 1С может понадобится библиотека <code>fontconfig.so</code> — пакет <code>fontconfig</code> или <code>i586-fontconfig</code>, <code>libWand.so</code> — пакет <code>libImageMagick</code> или  <code>i586-libImageMagick</code>
Устанавливаем поддержку HASP ключей:


<pre>epm play aksusbd</pre>


Для нормальной работы тонкого и 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, который тянет многие зависимости нужные для рабочей станции, но излишние для сервера.
Включаем сервисы '''aksusbd''' и '''hasplmd''':


Начиная с версии 1с 8.3.19, на сервере нужен пакет liblcms2
<pre>
systemctl enable askusbd
systemctl enable hasplmd
</pre>


===== Автостарт сервиса =====
Далее требуется выполнить перезагрузку ОС.


su - # если вдруг ещё не сделан
==== Установка и запуск сервера 1С ====
ln -s /opt/1cv8/x86_64/8.3.19.1229/srv1cv83 /etc/init.d/srv1cv83 # внимание: следите за конкретной версией платформы
===== Зависимости и установка =====
chkconfig srv1cv83 on
В каталоге с распакованным архивом rpm64_8_3_23_1688.tar.gz выполнить команду установки пакетов (с поправкой на свою версию):
systemctl start srv1cv83
<pre>apt-get install 1c-enterprise-8.3.23.1688-common-8.3.23-1688.x86_64.rpm 1c-enterprise-8.3.23.1688-server-8.3.23-1688.x86_64.rpm</pre>


также для остановки и перезапуска можно использовать, соответственно, команды:
Серверу 1С может понадобится библиотека <code>fontconfig.so</code> — пакет <code>fontconfig</code> или <code>i586-fontconfig</code>, <code>libWand.so</code> — пакет <code>libImageMagick</code> или  <code>i586-libImageMagick</code>


systemctl stop srv1cv83
systemctl restart srv1cv83


а для просмотра статуса, команду:
Для нормальной работы тонкого и 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, который тянет многие зависимости нужные для рабочей станции, но излишние для сервера.


systemctl status srv1cv83
Начиная с версии 1с 8.3.19, на сервере нужен пакет liblcms2


Важно: эти два момента уже описаны в нескольких разделах этой статьи и не ясно наверняка оба ли они нужны для успешного старта сервиса.
===== Регистрация сервиса =====
Актуальные версии платформы 1С:Предприятие ориентированы на систему инициализации systemd, использование инитскриптов для запуска в качестве сервиса не предусмотрено и не поддерживается. Результатом такого решения стала возможность одновременного запуска нескольких экземпляров сервиса в одной операционной системе. Подробности можно уточнить в документации по платформе на сайте its.1c.ru, Клиент-серверный вариант. Руководство администратора [https://its.1c.ru/db/v8323doc#bookmark:adm:TI000000069 Глава 4. Запуск компонентов системы](требуется авторизация).


1. У самого файла /opt/1cv8/x86_64/8.3.19.1229/srv1cv83 шебанг должен быть не
Соответствующий версии платформы юнит systemd поставляется в составе пакета 1c-enterprise-*-server и после установки находится в каталоге установки под именем srv1cv8-*@.service


#!/bin/bash
Прежде всего, необходимо зарегистрировать юнит в systemd:
<pre>systemctl link /opt/1cv8/<архитектура>/<версия>/srv1cv8-<версия>@.service</pre>


а
===== Запуск сервиса =====
Запуск сервиса:
<pre>systemctl start srv1cv8-*@default</pre>


#!/bin/sh
Остановка сервиса:
<pre>systemctl stop srv1cv8-*@default</pre>


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


/etc/hostname
В случае необходимости, для диагностики можно подключить технологический журнал. Технологический журнал включается специальным файлом конфагурации logcfg.xml, помещаемым в каталог конфигурации, обычно /opt/1cv8/conf


, который отсутствует в ОС Альт
Пример содержимого файла logcfg.xml (наиболее полный журнал):
<pre>
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="/home/usr1cv8/log" history="24">
<event>
<ne value="" property="Name"/>
</event>
<property name="all"/>
</log>
<dump location="/home/usr1cv8/dump" create="1" type="3" externaldump="1"/>
</config>
</pre>
Подробные сведения о возможностях технологического журнала смотрите в документации по платформе на сайте its.1c.ru (требуется авторизация).


Его можно создать так:
Порты, которые слушает 1С по умолчанию:
 
<pre>tcp        0      0 *:1540                      *:*                        LISTEN      18704/ragent
hostname > /etc/hostname
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</pre>
О (пере)назначении портов сервера 1С:Предприятие смотрите в документации по платформе.


===== Ротация логов =====
===== Ротация логов =====
Строка 243: Строка 157:


Если журнал нужен, решение простое — нужно настроить ротацию файлов ~usr1cv8/.1cv8/1C/1cv8/reg_*/*/1Cv8Log средствами logrotate.
Если журнал нужен, решение простое — нужно настроить ротацию файлов ~usr1cv8/.1cv8/1C/1cv8/reg_*/*/1Cv8Log средствами logrotate.
{{Note|Сотрудники компаний, занимающихся сопровождением 1С, называют это "очисткой кэша".}}
 
Также полезно создать для домашнего каталога пользователя usr1cv8 отдельный том и/или назначить профиль пользователя в каталог /var/lib/1cv8 (<tt>usermod -d /var/lib/1cv8 usr1cv8 ; mv /home/usr1cv8 /var/lib/</tt>)
Также полезно создать для домашнего каталога пользователя usr1cv8 отдельный том и/или назначить профиль пользователя в каталог /var/lib/1cv8 (<tt>usermod -d /var/lib/1cv8 usr1cv8 ; mv /home/usr1cv8 /var/lib/</tt>)
: Пример файла /etc/logrotate.d/srv1cv8 (цифры в имени каталога "reg_1541" - номер порта, на котором процесс rmngr принимает подключения клиентов):
: Пример файла /etc/logrotate.d/srv1cv8 (цифры в имени каталога "reg_1541" - номер порта, на котором процесс rmngr принимает подключения клиентов):
Строка 254: Строка 168:
  }
  }


===== Запуск =====
===== Настройка аутентификации в домене Active Directory на базе Samba 4 =====
Запуск демона:
 
<pre>service srv1cv83 start</pre>
Предполагается, что компьютер с сервером 1С является членом домена и работоспособность аутентификации Kerberos проверена. Действия выполняются на контроллере домена от суперпользователя, исходные данные (пример):
 
Полное имя компьютера с 1C сервером (FQDN): ''server.domain.alt''


И автозапуск:
Имя доменного пользователя сервера 1С: ''server1c''
<pre>chkconfig srv1cv83 on</pre>


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


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


Порты, которые слушает 1С:
Создаем доменного пользователя ''server1c'' с случайным паролем:
<pre>tcp        0      0 *:1540                      *:*                        LISTEN      18704/ragent
<pre>samba-tool user add server1c --random-password</pre>
tcp        0      0 *:1541                      *:*                        LISTEN      18711/rmngr
 
tcp        0      0 *:1560                      *:*                        LISTEN      18711/rmngr
Изменяем атрибут UserPrincipalName (UPN) у пользователя ''server1c'':
tcp        0      0 *:1561                      *:*                        LISTEN      18704/ragent
<pre>samba-tool user rename server1c --upn usr1cv8/server.domain.alt@DOMAIN.ALT</pre>
tcp        0      0 *:1562                      *:*                        LISTEN      18720/rphost
 
tcp        0      0 *:1563                      *:*                        LISTEN      18720/rphost</pre>
Отключаем срок действия пароля у пользователя ''server1c'':
<pre>samba-tool user setexpiry server1c --noexpiry</pre>


===== Особенности автозапуска 1С-сервера при системе запуска systemd =====
Добавляем атрибут ServicePrincipalName (SPN) пользователю ''server1c'':
В случае установки альт-сервера 8 в системе по умолчанию устанавливается systemd. Вместе с ним устанавливается пакет, позволяющий запускать автоматически пакеты, прописанные для запуска системы в sysV. В поставке 1С-сервера присутствует скрипт для запуска в sysV, и после установки 1С-сервера он копируется в каталог /etc/init.d/srv1cv83. В этом скрипте есть небольшая ошибка, которая не проявляется при интерактивном запуске 1С-сервера и при автостарте в sysV, но при автостарте из под systemd она проявляется и не дает ему стартовать. Для исправления этой ошибки открываем скрипт автозапуска 1С-сервера /etc/init.d/srv1cv83 в любом редакторе, добавляем первую строку #!/bin/sh и сохраняем скрипт.
<pre>samba-tool spn add usr1cv8/server.domain.alt server1c</pre>
После такой модификации скрипта можно спокойно рестартовать систему. 1С-сервер будет автоматически запускаться.


===== Настройка аутентификации для -сервера в домене Active Directory на базе Samba 4 =====
{{note|В SPN ''usr1cv8'' - имя локального пользователя от имени которого запускается сервер }}


Предполагается что компьютер с сервером 1с является членом домена, работоспособность аутентификации Kerberos проверена. Действия выполняются на контроллере домена от суперпользователя, исходные данные (пример):
Проверяем SPN для пользователя ''server1c'':
<pre>samba-tool spn list server1c
server1c
User CN=server1c,CN=Users,DC=domain,DC=alt has the following servicePrincipalName:
        usr1cv8/server.domain.alt</pre>


Полное имя компьютера с 1C сервером (FQDN): server.domain.alt
Экспортируем keytab для пользователя ''server1c'':
<pre>samba-tool domain exportkeytab /root/usr1cv8.keytab --principal=usr1cv8/server.domain.alt</pre>


Имя доменного пользователя сервера : usr1cv8
Дальнейшие действия выполняются на сервере .


Realm: DOMAIN.ALT
Полученный ''usr1cv8.keytab'' нужно поместить в каталог c установленным сервером 1C, например ''/opt/1cv8/x86_64/8.3.23.1688'' (где ''8.3.23.1688'' текущая версия установленной платформы 1С) и установить права доступа:


Создаем доменного пользователя usr1cv8 с случайным паролем:
<pre>
<pre>samba-tool user add usr1cv8 --random-password</pre>
chown usr1cv8:grp1cv8 /opt/1cv8/x86_64/8.3.23.1688/usr1cv8.keytab
chmod 0600 /opt/1cv8/x86_64/8.3.23.1688/usr1cv8.keytab
</pre>


Изменяем атрибут UserPrincipalName (UPN) у пользователя usr1cv8:
Добавляем в файл ''/etc/hosts'' строку вида:
<pre>samba-tool user rename usr1cv8 --upn usr1cv8/server.domain.alt@DOMAIN.ALT</pre>


Отключаем срок действия пароля у пользователя usr1cv8:
<pre>192.168.0.100 server.domain.alt</pre>
<pre>samba-tool user setexpiry usr1cv8 --noexpiry</pre>


Добавляем атрибут ServicePrincipalName (SPN) пользователю usr1cv8
где ''192.168.0.100'' - IP адрес данного сервера 1C.
<pre>samba-tool spn add usr1cv8/server.domain.alt usr1cv8</pre>


{{note|В SPN usr1cv8 - имя локального пользователя от имени которого запускается сервер 1С}}
{{attention|Запись в файле ''/etc/hosts'' всегда должна начинаться с полного имени сервера (FQDN), например запись вида:


Проверяем SPN для пользователя usr1cv8
192.168.0.100 server server.domain.alt
<pre>samba-tool spn list usr1cv8
usr1cv8
User CN=usr1cv8,CN=Users,DC=domain,DC=alt has the following servicePrincipalName:
        usr1cv8/server.domain.alt</pre>


Экспортируем keytab для пользователя usr1cv8
приведет к неработоспособности аутентификации.
<pre>samba-tool domain exportkeytab /root/usr1cv8.keytab --principal=usr1cv8/server.domain.alt</pre>
}}


Полученный usr1cv8.keytab нужно поместить в каталог c установленным 1C сервером, например /opt/1cv8/x86_64/8.3.22.1750/ и произвести запуск/перезапуск демона.  
После этого следует произвести запуск/перезапуск сервиса 1С.


{{note|При настройке аутентификации для пользователя 1С выбираем домен вида domain.alt}}
{{note|При настройке аутентификации для пользователя 1С выбираем домен вида domain.alt}}
===== Изменение временного каталога сервера 1С =====
Для сервера 1С характерно создание большого количества файлов, в том числе значительного размера, во временном каталоге, причем очень часто они не удаляются и, соответственно, накапливаются в процессе работы.
Сервер 1С использует временный каталог пользователя ''usr1cv8'' который по умолчанию размещается в ''/tmp/.private/usr1cv8/'', файловая система ''tmpfs'' (которая в свою очередь размещается в оперативной памяти и имеет ограниченный размер). Таким образом в процессе работы можно столкнутся с нехваткой места во временном каталоге, например, при загрузке выгруженной в формате *.dt информационной базы 1С. Поэтому крайне рекомендуется разместить временной каталог в другом месте, для этого, например, можно изменить unit-файл сервиса ''/lib/systemd/system/srv1cv8.service'' добавив в секцию [Service] строку:
<pre>
Environment=TMPDIR=/home/usr1cv8/.tmp/
</pre>
где ''/home/usr1cv8/.tmp/'' - путь к временному каталогу сервера 1С (как пример).


==== Создание сервера предприятия ====
==== Создание сервера предприятия ====
 
{{note|При первом запуске автоматически создаётся кластер с именем hostname сервера. Если оно вас устраивает - данный раздел можно пропустить}}
Из Windows это можно сделать так:
Из Windows это можно сделать так:


Строка 336: Строка 261:


Войдите в меню Все функции... - Стандартные - Управление серверами тонкого или толстого клиента 1С:Предприятие 8.3. Для управления кластером клиентское приложение требует [[1C/RAS|RAS]], запущенный на рабочем сервере к которому идёт обращение. Создайте центральный сервер аналогично тому, как описано для Windows.
Войдите в меню Все функции... - Стандартные - Управление серверами тонкого или толстого клиента 1С:Предприятие 8.3. Для управления кластером клиентское приложение требует [[1C/RAS|RAS]], запущенный на рабочем сервере к которому идёт обращение. Создайте центральный сервер аналогично тому, как описано для Windows.
==== PostgreSQL ====
{{Note|Общая рекомендация состоит в том, что по возможности не следует размещать сервер Предприятия и СУБД в одной системе - лучше в разных, даже если виртуальных}}
Стандартный Postgresql не будет работать с 1С, а rpm-пакеты с Postgres, которые идут в дистрибутиве 1C, предназначены только для установки на fedora-совместимых дистрибутивах. Устанавливаем пакеты от Etersoft, при этом не забывая обновить дистрибутив до последней версии:
# apt-get update && apt-get dist-upgrade
# apt-get install postgresql15-1C-server postgresql15-1C-contrib
Для установивших ОС с образа, а не развернувших контейнер, с кодировками проблем быть не должно.
В любом случае, проверяйте locale. Если нет UTF-8, устанавливайте:
<pre>
localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8 # для российских и белорусских баз
localedef -c -i uk_UA -f UTF-8 uk_UA.UTF-8 # для украинских баз
</pre>
Создаём файлы базы данных:
# service postgresql initdb
После этого открываем файл /var/lib/pgsql/data/postgresql.conf и проверяем, чтобы postgres слушал нужный интерфейс, имел соответствующую локаль и настройки, описанные в документации 1С-сервера. Вот пример работающего файла конфигурации (закомментированные строки пропущены):
<pre>
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
</pre>
{{Attention|Не копируйте бездумно эту конфигурацию себе &mdash; в комментариях дефолтного postgresql.conf содержится масса полезной информации. Как правило, создающаяся по умолчанию конфигурация уже работоспособна и дополнительного вмешательства не требуется.}}
Возможно, настройка по умолчанию далека от идеальной и производительной. Данное руководство не ставит перед собой такой задачи, поэтому настроить PostgreSQL под свои нужды надо будет самостоятельно (вот, к примеру, [http://oc.cs.msu.su/club/html/ руководство по настройке производительности], ещё [http://www.gilev.ru/postgresql/ конкретно для 1С], а вот [https://www.postgresql.org/docs/10/static/index.html официальная документация] по используемой версии PostgreSQL)


===  Установка сервера 1С Предприятие 8.2 или 8.3 на ALT Linux для документооборота ===
Также учтите, что postgres использует разделяемую память (shared memory) и в ядре есть ограничения, возможно, придётся их увеличить (по информации с gilev.ru, начиная с postgresql 9.4 это делать не нужно):
*sysctl kernel.shmall — the total amount of shared memory pages that can be used system wide, default 2097152.
*sysctl kernel.shmmax — the maximum size in bytes of a single shared memory segment that a Linux process can allocate in its virtual address space, default 1073741824 (1 GiB)
*sysctl kernel.shmmni — the system wide maximum number of shared memory segments, default 4096.


Стенд для :Документооборот разворачивали двое - представитель ALT Linux и представитель 1c-kpd.
Также в файле /var/lib/pgsql/data/pg_hba.conf вам надо будет определить политику доступа пользователей к СУБД (для этого читайте документацию postgresql). По умолчанию после <tt>/etc/init.d/postgresql initdb</tt> все базы доступны всем без проверки (правило "trust"). Как минимум, можно сделать так:
<pre>host    all        all        0.0.0.0/0            md5</pre>
Что означает разрешение подключаться с любых адресов к любым базам с авторизацией по паролю.


Опишу линуксовую часть.
Не забываем поставить СУБД на автостарт (годится и для sysvinit, и для systemd):
chkconfig postgresql on
Затем запускаем его:
service postgresql start


Порядок шагов:
Для первоначальной настройки достаточно сменить пароль суперпользователя СУБД командой <code>psql -h localhost -U postgres template1</code> или (короче) <code>psql -U postgres</code>:
* Разворачиваем сервер. Использовался сервер на 5-ой платформе, после установки дотянут до текущего p5
<pre>[root@localhost ~]# psql -U postgres
* устанавливаем [http://wiki.etersoft.ru/PostgreSQL PostgreSQL от Etersoft]: postgresql-8.3eter - установка и настройка по стандарту
template1=# ALTER USER postgres WITH PASSWORD 'secret';</pre>
* Устанавливаем Алладиновские ключи. HASP-ключи взяты для Red Hat, usb-ключ воткнут - должен загореться после установки
* Устанавливаем 1С 8.2.10.77 (с более старыми версиями проблема с документооборотом) взято с фтпшника компании http://1c-kpd.ru/ (нужен пароль)
* Настраиваем apache для работы веб-клиента


Все шаги, кроме последнего достаточно тривиальны, за исключением мелочи - человек (из 1С) настраивающий сервер со стороны винды сообщил о каких-то ошибках
: Лучше создать отдельного пользователя для каждой базы данных (см. [[#Пользователи СУБД]])
которые лечатся запуском скрипта <tt>/opt/1C/8.2/i386/utils/config-server</tt> (актуально только для 1C 8.2). Скрипт капризный, требует указания пути к мелкомягким шрифтам, потому понадобилось установить <tt>fonts-ttf-ms</tt> и конвертер <tt>ttf2pt1</tt>, после чего скрипт запускается с указанием пути к каталогу шрифтов как параметра командной строки и молча отрабатывает. Помогло.


==== Настройка Apache для веб-клиентов документооборота ====
На этом настройка Postgresql завершена.
Описан дефолтный вариант — подкаталог в основном сайте. В примерах используется версия сервера 1С 8.3.


Настройка проводится в четыре шага:
Настоятельно рекомендуется настроить [http://wiki.postgresql.org/wiki/Automated_Backup_on_Linux автоматическое резервное копирование].
#Надо создать в домашнем каталоге пользователя usr1cv82 в случае 1С 8.2 или usr1cv8 в случае 1C 8.3 корень будущего сервера
#положить в него файл-описание подключения к серверу (*.vrd),
#затем подключить модуль 1С к апачу
#и создать конфиг хоста в апаче.


Информация о модуле:
===== Вопросы безопасности =====
*имя модуля: _1cws_module
*файл модуля 1C 8.* для apache 2.2: /opt/1C/v8.*/x86_64/wsap22.so
*файл модуля 1C 8.* для apache 2.4: /opt/1C/v8.*/x86_64/wsap24.so
*файл модуля 1C 8.* для apache 2.0: /opt/1C/v8.*/x86_64/wsapch2.so
На 2017 год внедренцы рекомендуют использовать apache 2.2, хотя в пакете 1C_Enterprise83-ws есть модули для apache 2.0, 2.2 и 2.4.


: '''Шаг 1. Создаем корень сервера'''
====== Доступ через сокет unix ======
По умолчанию в файле /var/lib/pgsql/data/postgres.conf задано, что postresql создаёт сокет с правами доступа 0777 ("все могут писать-читать"), при этом в /var/lib/pgsql/data/pg_hba.conf при подключении через сокет нет проверки пользователя.


  install -d -o usr1cv8 -g grp1cv8 ~usr1cv8/www/DemoApp
Есть два пути решения.<br>
1. Разрешить доступ к сокету только членам группы postgres в файле postgres.conf:
  unix_socket_group = ''              # default use main group of the user postgres
#unix_socket_permissions = 0777      # default
unix_socket_permissions = 0770
2. Требовать аутентификацию при подключениях через сокет в файле pg_hba.conf:
#local  all            all                                    trust # default
local  all            all                                    md5
В первом случае, если сервер 1С будет подключаться к postresql через сокет unix, нужно включить пользователя usr1cv8 в группу postgres:
usermod -a -G postgres usr1cv8
Обычно это не нужно — используется подключение TCP.


Это просто каталог, владельцы которого usr1cv8:grp1cv8 (или можно сделать apache2:grp1cv8 и дать права доступа владельцу только на чтение).
====== Доступ через TCP ======
Если это не было сделано, установите пароль пользователя postgres
# pwqgen
Dark*Plan7Smoky
# echo "ALTER USER postgres WITH PASSWORD 'Dark*Plan7Smoky';" | psql -h localhost -U postgres
Затем в файле pg_hba.conf укажите требование аутентификации для подключений через сокеты TCP (исходно там указано "trust" - то есть без аутентификации):
host    all            all            127.0.0.1/32            md5
host    all            all            0.0.0.0/0              md5
host    all            all            ::1/128                md5


Надо позаботиться о том, чтобы <tt>apache2</tt> мог его увидеть в <tt>~usr1cv8</tt>:
====== Пользователи СУБД ======
chmod 750 ~usr1cv8
Для работы 1С можно создать отдельного пользователя или даже отдельного пользователя для каждой информационной базы 1С:
usermod -a -G grp1cv8 apache2
 
Остальное можно сделать автоматически разом либо вручную поэтапно. Второй способ гибче, например, можно назначить каждой информационной базе отдельное доменное имя (создать VirtualHost).
 
===== Автоматически =====
 
В главе 7 документации администратора описана команда webinst.
 
Используя webinst, нужно создавать файл в /etc/httpd2/conf/extra-available/ и симлинк на него в /etc/httpd2/conf/extra-enabled/. Пример для версии 8.3:
touch /etc/httpd2/conf/extra-available/1c.conf
/opt/1C/v8.3/x86_64/webinst -publish -apache22 -wsdir DemoApp -dir ~usr1cv8/www/DemoApp -connstr "Srvr=127.0.0.1;Ref=doc_demo;" -confpath /etc/httpd2/conf/extra-available/1c.conf
ln -s ../extra-available/1c.conf /etc/httpd2/conf/extra-enabled/1c.conf
 
Смотрим, что получилось:
<pre>
<pre>
# cat /etc/httpd2/conf/extra-enabled/1c.conf
# pwqgen
LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap22.so"
Bunch!Climb$pay
# psql -U postgres
psql (9.6.6)
Введите "help", чтобы получить справку.


# 1c publication.
postgres=# CREATE USER cluster1c WITH password 'Bunch!Climb$pay';
# В вашей конфигурации путь может быть другим!
postgres=# CREATE DATABASE db1c OWNER cluster1c;
Alias "/crm" "/home/usr1cv8/www/DemoApp/"
postgres=# \q
<Directory "/home/usr1cv8/www/DemoApp/">
#
    AllowOverride All
    Options None
    Order allow,deny
    Allow from all
    SetHandler 1c-application
    ManagedApplicationDescriptor "/home/usr1cv8/www/DemoApp/default.vrd"
</Directory>
# cat ~usr1cv8/www/DemoApp/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="/DemoApp"
                ib="Srvr=127.0.0.1;Ref=doc_demo;"/>
        <standardOdata enable="false"
                        reuseSessions="autouse"
                        sessionMaxAge="20"
                        poolSize="10"
                        poolTimeout="5"/>
</point></pre>
 
===== Вручную =====
 
: '''Шаг 2: пишем default.vrd'''
 
В ~usr1cv8/www/DemoApp/ надо создать файл default.vrd такого содержания:
<pre>
<?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="/DemoApp"
ib="Srvr=192.0.2.54;Ref=doc_demo;">
</point>
</pre>
</pre>


В третьей строке значение параметра "base" отражает тот факт, что ~usr1cv8/www/DemoApp - корень веб-интерфейса информационной базы.
Возможно, понадобится также дополнительно назначить полные права пользователю:<code>GRANT ALL ON DATABASE db1c TO cluster1c;</code>


В четвертой строке в параметре "ib" указана строка подключения к информационной базе (connection string), в примере IP сервера — 192.0.2.54 (можно указать доменное имя интерфейса, можно localhost), база 1С называется "doc_demo". База должна быть создана в Конфигураторе.<br>
Проблема в том, что для работы 1С нужны права на создание и изменение функций в схеме public. ''(Самый простой путь тут - дать пользователю роль postgres, что эквивалентно работе с СУБД под суперпользователем: <code>GRANT postgres TO cluster1c;</code>. Если есть более корректный путь - укажите его здесь.)''
Правильное значение connection string посмотрите в клиенте 1С внизу окна выбора информационной базы.


=== Сервер 1С:Предприятия в контейнере OVZ ===
{{Note|Если ваш компьютер физический - данный раздел можно пропустить}}
Cоздадим ovz-инстанцию. Для этого:
: Можно воспользоваться готовым spt-профилем из пакета spt-profiles-ovz-1C
Установка профиля производится так
apt-get install spt-profiles-ovz-1C


: '''Шаг 3: Добавляем модуль в конфигурацию apache'''
Для работы с spt вы должны иметь установленные и настроенные hasher и spt. Читайте соответствующие руководства.


Для этого в /etc/httpd2/conf/mods-available создаём файл _1cws_module.load:
Либо вы можете взять готовый ovz-шаблон [ftp://ftp.altlinux.ru/pub/people/rt/1c/altlinux-1c-server.tar.gz отсюда].


echo LoadModule _1cws_module /opt/1C/v8.*/i386/wsap22.so > /etc/httpd2/conf/mods-available/_1cws_module.load
Далее размещаем шаблон в /var/lib/vz/template/cache/


Затем включаем его в работу:
  cp altlinux-1c-server.tar.gz /var/lib/vz/template/cache/
  ln -s ../mods-available/_1cws_module.load /etc/httpd2/conf/mods-enabled/_1cws_module.load


: '''Шаг 4. Конфиг хоста'''
и создаём ovz-инстанцию:


Простейший вариант - подкаталог в стандартном сайте.
vzctl create 101 --ostemplate altlinux-1c-server --config myserver


Cоздаем файл /etc/httpd2/conf/include/1c.conf такого вида:
Здесь 101 — это номер инстанции (у вас он может быть другой) и myserver - конфигурация сервера; вам также нужно произвести её самостоятельно, для чего читайте руководство по [[OpenVZ|OpenVZ]].
<pre>
Alias /DemoApp /home/usr1cv8/www/DemoApp
<Directory "/home/usr1cv8/www/DemoApp">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    SetHandler 1c-application
    ManagedApplicationDescriptor /home/usr1cv8/www/DemoApp/default.vrd
</Directory>
</pre>
 
Включаем /etc/httpd2/conf/include/1c.conf в конфигурацию стандартного виртуального хоста:
sed 's,\(</Virt\),\tInclude /etc/httpd2/conf/include/1c.conf\n\1,' /etc/httpd2/conf/sites-available/default.conf
 
Другой вариант - виртуальный хост со своим доменным именем.
 
* Cоздаем файл /etc/httpd2/conf/sites-available/1c.conf
<pre>
<Virtualhost 192.2.0.15:80>
<Directory "/var/lib/1cv8/www/DemoApp"> # ~usr1cv8 назначен в /var/lib/1cv8
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    SetHandler 1c-application
    ManagedApplicationDescriptor /var/lib/1cv8/www/DemoApp/default.vrd
</Directory>
servername 1c.example.net
documentRoot /var/lib/1cv8/www/DemoApp
ErrorLog "/var/log/httpd2/1c_log"
TransferLog "/var/log/httpd2/1c_log"
</Virtualhost>
</pre>


===== Проверка =====
Перезапускаем апач. Если ругнулся на ManagedApplicationDescriptor, значит модуль от 1С не загрузился.
Проверяем с клиента по адресу http://IP/DemoApp — должна показаться морда информационной базы.
Для входа далее нужен специальный клиентский ключ. Программные ключи предоставляет специальная win32-only программа. Обычно ключи запрашивает у неё и распределяет между клиентами сам сервер. Первые 8 клиентов работают без него, при этом, если настроен технологический журнал, в его файлах rpmngr на каждое обращение клиента сообщает об отсутствии лицензии.
==== Размещение пользовательских файлов конфигурации “Документооборот” ====
В конфигурации “1С:Документооборот” есть возможность хранить произвольные файлы в информационной базе. В действительности они хранятся не в СУБД, а в виде файлов. Подходящее место для таких файлов - домашний каталог пользователя usr1cv8, например, подкаталог <tt>~usr1cv8/1sfiles</tt>. Перед использованием его нужно создать:
install -d -o usr1cv8 -g grp1cv8 -m2770 ~usr1cv8/1sfiles
А затем  посмотрите, какой он в файловой системе (<tt>ls -d ~usr1cv8/1sfiles</tt>) и укажите его в конфигурации.
=== Возможные проблемы и методы решения ===
В файле ~usr1cv81/.1cv81/1C/1Cv81/reg_1541/1CV8Reg.lst (версия 8.1) или ~usr1cv8/.1cv8/1C/1cv8/reg_1541/1CV8Clst.lst (версия 8.3) можно найти конфигурацию кластера 1С в формате JSON. Например, такую:
В файле ~usr1cv81/.1cv81/1C/1Cv81/reg_1541/1CV8Reg.lst (версия 8.1) или ~usr1cv8/.1cv8/1C/1cv8/reg_1541/1CV8Clst.lst (версия 8.3) можно найти конфигурацию кластера 1С в формате JSON. Например, такую:


Строка 527: Строка 408:
UUID, расположенный в начале каждой секции JSON, идентифицирует конкретную конфигурацию. 1С сервер создаёт для конфигурации подкаталоги, именованные этим UUID, в приведённом примере это:
UUID, расположенный в начале каждой секции JSON, идентифицирует конкретную конфигурацию. 1С сервер создаёт для конфигурации подкаталоги, именованные этим UUID, в приведённом примере это:
~usr1cv8/.1cv8/1C/1cv8/reg_1541/0dd04482-9367-11dc-748b-00fc390012a1
~usr1cv8/.1cv8/1C/1cv8/reg_1541/0dd04482-9367-11dc-748b-00fc390012a1
* 1С не сможет подключиться к базе Postgresql, если настройки локали не совпадают. Так что приведите параметр Locale= в соответствие с настройками вашей базы.
* 1С берёт значение хоста откуда угодно, только не из настроек, введённых пользователем. :) При необходимости укажите правильные имена хостов для «Центрального сервера» и «Локального кластера» вручную. Однако если у вас правильно настроена обратная зона DNS, ручных исправлений не потребуется.
* Если том с домашним каталогом пользователя usr1cv8 переполнился, сервер сбрасывает подключения клиентов без какой-либо диагностики. Решение - перенесите домашний каталог сервера 1С на отдельный том или в /var и настройте ротацию журналов действий пользователей (это файлы "1Cv8Log").
==== Установка 1С-сервера в OVZ-контейнер ====
Для начала создадим ovz-инстанцию.
Для этого:
: Можно воспользоваться готовым spt-профилем из пакета spt-profiles-ovz-1C
Установка профиля производится так
apt-get install spt-profiles-ovz-1C
Для работы с spt вы должны иметь установленные и настроенные hasher и spt. Читайте соответствующие руководства.
Либо вы можете взять готовый ovz-шаблон [ftp://ftp.altlinux.ru/pub/people/rt/1c/altlinux-1c-server.tar.gz отсюда].
Далее размещаем шаблон в /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|OpenVZ]].


Запускаем инстанцию:
Запускаем инстанцию:
Строка 570: Строка 423:


===  [[1C/Эльбрус|1С:Предприятие на системах Эльбрус]] ===
===  [[1C/Эльбрус|1С:Предприятие на системах Эльбрус]] ===
Вынесено в отдельную [[1C/Эльбрус|статью]].
 
 
=== Возможные проблемы и методы решения ===
 
* 1С не сможет подключиться к базе Postgresql, если настройки локали не совпадают. Так что приведите параметр Locale= в соответствие с настройками вашей базы.
* 1С берёт значение хоста откуда угодно, только не из настроек, введённых пользователем. При необходимости укажите правильные имена хостов для «Центрального сервера» и «Локального кластера» вручную. Однако если у вас правильно настроена обратная зона DNS, ручных исправлений не потребуется.
* Если том с домашним каталогом пользователя usr1cv8 переполнился, сервер сбрасывает подключения клиентов без какой-либо диагностики. Решение - перенесите домашний каталог сервера 1С на отдельный том или в /var и настройте ротацию журналов действий пользователей (файлы "1Cv8Log").
* Не запускается менеджер кластера, не запускается рабочий процесс. В технологическом журнале записи о таймауте разрешения адреса IPv6. [[Etcnet#Отключение_IPv6|Отключить поддержку IPv6]] или настроить разрешение адресов IPv6 в DNS.
 
===  Дополнительно ===
===  Дополнительно ===
* [http://forum.altlinux.org/index.php/topic,30681.0.html Обсуждение по установке сервера 1С:Предприятие 8.x на форуме].
* its.1c.ru [https://its.1c.ru/db/metod8dev/content/5953/hdoc Установка Платформы «1С:Предприятие» в ОС Linux] (требуется авторизация)
* forum.altlinux.org [http://forum.altlinux.org/index.php/topic,30681.0.html Обсуждение установки сервера 1С:Предприятие 8].
{{Category navigation|title=ПО уровня предприятия|category=Enterprise Software|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=ПО уровня предприятия|category=Enterprise Software|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=1C|category=1C|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=1C|category=1C|sortkey={{SUBPAGENAME}}}}

Текущая версия от 22:01, 24 августа 2024

Внимание! Служба обеспечения совместимости Базальт СПО не отвечает за содержимое данной страницы. Актуальную информацию о совместимости и актуальную информацию по установке от службы обеспечения совместимости смотрите в соответствующих таблицах: p10 и p9.


См. также

Для установки на СПТ используйте специальную сертифицированную версию, полученную от представителей 1С.

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

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

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

Также для каждого из этих компонентов присутствуют пакеты -nls с поддержкой национальных символов. Архив с установочными пакетами можно получить на сайте releases.1c.ru (требуется авторизация) в разделе Технологические дистрибутивы, Технологическая платформа, по ссылке Сервер 1С:Предприятия (64-bit) для RPM-based Linux-систем.

Разрешение имён DNS

Главное требование состоит в том, что для правильной работы кластера серверов 1С, а речь идёт именно о запуске кластера по умолчанию участники, как сервер так и клиенты, должны иметь правильное разрешение имен серверных компонентов в адрес IP. Официальная рекомендация - наличие в сети работоспособного сервера DNS, правильная регистрация серверов-участников кластера в доменной зоне и обеспечение использования данной доменной зоны всеми клиентами. Вопросы настройки DNS выходят за рамки этой статьи.

Простой способ проверить правильность разрешения имени в адрес на сервере - команда

host `hostname`

в случае выполнения без ошибок и адреса IP, соответствующего hostname вашего будущего сервера, позволяет надеяться на успешный запуск кластера с именем hostname по умолчанию.

Языковая локализация системы

Примечание: Локаль системы важна для сервера 1С:Предприятие, однако пре установке ОС с официального дистрибутива, как правило, уже настроена, и в этом случае данный раздел можно пропустить

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

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

или

locale
LANG=ru_RU.UTF-8
...

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

Изменить локаль можно командой (требует перезагрузки):

sed -i s/en_EN/ru_RU/ /etc/sysconfig/i18n

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

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

Для дистрибутивов на базе P10 включительно
Примечание: Уже с 2018 года обычно приобретаются и устанавливаются программные лицензии, аппаратный ключ используется редко. Если есть возможность использовать программные лицензии (рекомендуется), данный раздел можно пропустить


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

Устанавливаем менеджер лицензий:

# apt-get install i586-haspd

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

# 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 --list
haspd          	0:выкл	1:выкл	2:вкл	3:вкл	4:вкл	5:вкл	6:выкл

Если на уровнях 3 и 5 не включен - включите:

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


Для дистрибутивов на базе P11

Устанавливаем поддержку HASP ключей:

epm play aksusbd

Включаем сервисы aksusbd и hasplmd:

systemctl enable askusbd
systemctl enable hasplmd

Далее требуется выполнить перезагрузку ОС.

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

Зависимости и установка

В каталоге с распакованным архивом rpm64_8_3_23_1688.tar.gz выполнить команду установки пакетов (с поправкой на свою версию):

apt-get install 1c-enterprise-8.3.23.1688-common-8.3.23-1688.x86_64.rpm 1c-enterprise-8.3.23.1688-server-8.3.23-1688.x86_64.rpm

Серверу 1С может понадобится библиотека fontconfig.so — пакет fontconfig или i586-fontconfig, libWand.so — пакет libImageMagick или i586-libImageMagick


Для нормальной работы тонкого и 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, который тянет многие зависимости нужные для рабочей станции, но излишние для сервера.

Начиная с версии 1с 8.3.19, на сервере нужен пакет liblcms2

Регистрация сервиса

Актуальные версии платформы 1С:Предприятие ориентированы на систему инициализации systemd, использование инитскриптов для запуска в качестве сервиса не предусмотрено и не поддерживается. Результатом такого решения стала возможность одновременного запуска нескольких экземпляров сервиса в одной операционной системе. Подробности можно уточнить в документации по платформе на сайте its.1c.ru, Клиент-серверный вариант. Руководство администратора Глава 4. Запуск компонентов системы(требуется авторизация).

Соответствующий версии платформы юнит systemd поставляется в составе пакета 1c-enterprise-*-server и после установки находится в каталоге установки под именем srv1cv8-*@.service

Прежде всего, необходимо зарегистрировать юнит в systemd:

systemctl link /opt/1cv8/<архитектура>/<версия>/srv1cv8-<версия>@.service
Запуск сервиса

Запуск сервиса:

systemctl start srv1cv8-*@default

Остановка сервиса:

systemctl stop srv1cv8-*@default

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

В случае необходимости, для диагностики можно подключить технологический журнал. Технологический журнал включается специальным файлом конфагурации logcfg.xml, помещаемым в каталог конфигурации, обычно /opt/1cv8/conf

Пример содержимого файла logcfg.xml (наиболее полный журнал):

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
	<log location="/home/usr1cv8/log" history="24">
		<event>
			<ne value="" property="Name"/>
		</event>
		<property name="all"/>
	</log>	
	<dump location="/home/usr1cv8/dump" create="1" type="3" externaldump="1"/>
 </config>

Подробные сведения о возможностях технологического журнала смотрите в документации по платформе на сайте its.1c.ru (требуется авторизация).

Порты, которые слушает 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

О (пере)назначении портов сервера 1С:Предприятие смотрите в документации по платформе.

Ротация логов

1С ведёт журнал действий пользователя для каждой информационной базы. Эти журналы сохраняются в домашнем каталоге пользователя usr1cv8. К сожалению, эти журналы не ограничены в размерах средствами 1С и в некоторый момент том будет переполнен, из-за чего сервер 1С будет отвергать соединения клиентов. Одно из решений — отключить журнал в конфигураторе.

Если журнал нужен, решение простое — нужно настроить ротацию файлов ~usr1cv8/.1cv8/1C/1cv8/reg_*/*/1Cv8Log средствами logrotate.

Также полезно создать для домашнего каталога пользователя usr1cv8 отдельный том и/или назначить профиль пользователя в каталог /var/lib/1cv8 (usermod -d /var/lib/1cv8 usr1cv8 ; mv /home/usr1cv8 /var/lib/)

Пример файла /etc/logrotate.d/srv1cv8 (цифры в имени каталога "reg_1541" - номер порта, на котором процесс rmngr принимает подключения клиентов):
/var/lib/1cv8/.1cv8/1C/1cv8/reg_1541/*/1Cv8Log {
   notifempty
   missingok
   rotate 1
   size=500M
   nocompress
}
Настройка аутентификации в домене Active Directory на базе Samba 4

Предполагается, что компьютер с сервером 1С является членом домена и работоспособность аутентификации Kerberos проверена. Действия выполняются на контроллере домена от суперпользователя, исходные данные (пример):

Полное имя компьютера с 1C сервером (FQDN): server.domain.alt

Имя доменного пользователя сервера 1С: server1c

Realm: DOMAIN.ALT

Внимание! Наличие в домене пользователя usr1cv8 при настроенной доменной аутентификации может стать причиной невозможности запуска сервера 1С.


Создаем доменного пользователя server1c с случайным паролем:

samba-tool user add server1c --random-password

Изменяем атрибут UserPrincipalName (UPN) у пользователя server1c:

samba-tool user rename server1c --upn usr1cv8/server.domain.alt@DOMAIN.ALT

Отключаем срок действия пароля у пользователя server1c:

samba-tool user setexpiry server1c --noexpiry

Добавляем атрибут ServicePrincipalName (SPN) пользователю server1c:

samba-tool spn add usr1cv8/server.domain.alt server1c
Примечание: В SPN usr1cv8 - имя локального пользователя от имени которого запускается сервер 1С


Проверяем SPN для пользователя server1c:

samba-tool spn list server1c 
server1c
User CN=server1c,CN=Users,DC=domain,DC=alt has the following servicePrincipalName:
         usr1cv8/server.domain.alt

Экспортируем keytab для пользователя server1c:

samba-tool domain exportkeytab /root/usr1cv8.keytab --principal=usr1cv8/server.domain.alt

Дальнейшие действия выполняются на сервере 1С.

Полученный usr1cv8.keytab нужно поместить в каталог c установленным сервером 1C, например /opt/1cv8/x86_64/8.3.23.1688 (где 8.3.23.1688 текущая версия установленной платформы 1С) и установить права доступа:

chown usr1cv8:grp1cv8 /opt/1cv8/x86_64/8.3.23.1688/usr1cv8.keytab
chmod 0600 /opt/1cv8/x86_64/8.3.23.1688/usr1cv8.keytab

Добавляем в файл /etc/hosts строку вида:

192.168.0.100 server.domain.alt

где 192.168.0.100 - IP адрес данного сервера 1C.

Внимание! Запись в файле /etc/hosts всегда должна начинаться с полного имени сервера (FQDN), например запись вида:

192.168.0.100 server server.domain.alt

приведет к неработоспособности аутентификации.


После этого следует произвести запуск/перезапуск сервиса 1С.

Примечание: При настройке аутентификации для пользователя 1С выбираем домен вида domain.alt


Изменение временного каталога сервера 1С

Для сервера 1С характерно создание большого количества файлов, в том числе значительного размера, во временном каталоге, причем очень часто они не удаляются и, соответственно, накапливаются в процессе работы. Сервер 1С использует временный каталог пользователя usr1cv8 который по умолчанию размещается в /tmp/.private/usr1cv8/, файловая система tmpfs (которая в свою очередь размещается в оперативной памяти и имеет ограниченный размер). Таким образом в процессе работы можно столкнутся с нехваткой места во временном каталоге, например, при загрузке выгруженной в формате *.dt информационной базы 1С. Поэтому крайне рекомендуется разместить временной каталог в другом месте, для этого, например, можно изменить unit-файл сервиса /lib/systemd/system/srv1cv8.service добавив в секцию [Service] строку:

Environment=TMPDIR=/home/usr1cv8/.tmp/

где /home/usr1cv8/.tmp/ - путь к временному каталогу сервера 1С (как пример).

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

Примечание: При первом запуске автоматически создаётся кластер с именем hostname сервера. Если оно вас устраивает - данный раздел можно пропустить

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

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

Имя кластера лучше задавать в виде адреса IP, иначе на каждом компьютере с клиентом 1С придётся обеспечить разрешение имени сервера в адрес.

Информационные базы создаются прямо из оснастки управления кластером 1С:Предприятие, либо при запуске Конфигуратора. Для каждой ИБ нужна своя база данных в postgres. При этом можно задать для каждой такой БД своего пользователя в postgres, но для работы с 1С пользователю postgres нужна роль postgres — точнее, нужны права на создание и удаление функций в схеме public.

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

Файлы конфигурации и рабочие файлы информационной базы (временные, протоколы, ...) размещены в ~usr1cv8/.1cv8

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

Войдите в меню Все функции... - Стандартные - Управление серверами тонкого или толстого клиента 1С:Предприятие 8.3. Для управления кластером клиентское приложение требует RAS, запущенный на рабочем сервере к которому идёт обращение. Создайте центральный сервер аналогично тому, как описано для Windows.

PostgreSQL

Примечание: Общая рекомендация состоит в том, что по возможности не следует размещать сервер Предприятия и СУБД в одной системе - лучше в разных, даже если виртуальных

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

# apt-get update && apt-get dist-upgrade
# apt-get install postgresql15-1C-server postgresql15-1C-contrib

Для установивших ОС с образа, а не развернувших контейнер, с кодировками проблем быть не должно. В любом случае, проверяйте 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 # для украинских баз

Создаём файлы базы данных:

# service postgresql initdb

После этого открываем файл /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.conf содержится масса полезной информации. Как правило, создающаяся по умолчанию конфигурация уже работоспособна и дополнительного вмешательства не требуется.

Возможно, настройка по умолчанию далека от идеальной и производительной. Данное руководство не ставит перед собой такой задачи, поэтому настроить PostgreSQL под свои нужды надо будет самостоятельно (вот, к примеру, руководство по настройке производительности, ещё конкретно для 1С, а вот официальная документация по используемой версии PostgreSQL)

Также учтите, что postgres использует разделяемую память (shared memory) и в ядре есть ограничения, возможно, придётся их увеличить (по информации с gilev.ru, начиная с postgresql 9.4 это делать не нужно):

  • sysctl kernel.shmall — the total amount of shared memory pages that can be used system wide, default 2097152.
  • sysctl kernel.shmmax — the maximum size in bytes of a single shared memory segment that a Linux process can allocate in its virtual address space, default 1073741824 (1 GiB)
  • sysctl kernel.shmmni — the system wide maximum number of shared memory segments, default 4096.

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

host    all         all         0.0.0.0/0             md5

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

Не забываем поставить СУБД на автостарт (годится и для sysvinit, и для systemd):

chkconfig postgresql on

Затем запускаем его:

service postgresql start

Для первоначальной настройки достаточно сменить пароль суперпользователя СУБД командой psql -h localhost -U postgres template1 или (короче) psql -U postgres:

[root@localhost ~]# psql -U postgres
template1=# ALTER USER postgres WITH PASSWORD 'secret';
Лучше создать отдельного пользователя для каждой базы данных (см. #Пользователи СУБД)

На этом настройка Postgresql завершена.

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

Вопросы безопасности
Доступ через сокет unix

По умолчанию в файле /var/lib/pgsql/data/postgres.conf задано, что postresql создаёт сокет с правами доступа 0777 ("все могут писать-читать"), при этом в /var/lib/pgsql/data/pg_hba.conf при подключении через сокет нет проверки пользователя.

Есть два пути решения.
1. Разрешить доступ к сокету только членам группы postgres в файле postgres.conf:

unix_socket_group =                # default use main group of the user postgres
#unix_socket_permissions = 0777       # default
unix_socket_permissions = 0770

2. Требовать аутентификацию при подключениях через сокет в файле pg_hba.conf:

#local   all             all                                     trust # default
local   all             all                                     md5

В первом случае, если сервер 1С будет подключаться к postresql через сокет unix, нужно включить пользователя usr1cv8 в группу postgres:

usermod -a -G postgres usr1cv8

Обычно это не нужно — используется подключение TCP.

Доступ через TCP

Если это не было сделано, установите пароль пользователя postgres

# pwqgen
Dark*Plan7Smoky
# echo "ALTER USER postgres WITH PASSWORD 'Dark*Plan7Smoky';" | psql -h localhost -U postgres

Затем в файле pg_hba.conf укажите требование аутентификации для подключений через сокеты TCP (исходно там указано "trust" - то есть без аутентификации):

host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5
host    all             all             ::1/128                 md5
Пользователи СУБД

Для работы 1С можно создать отдельного пользователя или даже отдельного пользователя для каждой информационной базы 1С:

# pwqgen
Bunch!Climb$pay
# psql -U postgres
psql (9.6.6)
Введите "help", чтобы получить справку.

postgres=# CREATE USER cluster1c WITH password 'Bunch!Climb$pay';
postgres=# CREATE DATABASE db1c OWNER cluster1c;
postgres=# \q
#

Возможно, понадобится также дополнительно назначить полные права пользователю:GRANT ALL ON DATABASE db1c TO cluster1c;

Проблема в том, что для работы 1С нужны права на создание и изменение функций в схеме public. (Самый простой путь тут - дать пользователю роль postgres, что эквивалентно работе с СУБД под суперпользователем: GRANT postgres TO cluster1c;. Если есть более корректный путь - укажите его здесь.)

Сервер 1С:Предприятия в контейнере OVZ

Примечание: Если ваш компьютер физический - данный раздел можно пропустить

Cоздадим 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.

В файле ~usr1cv81/.1cv81/1C/1Cv81/reg_1541/1CV8Reg.lst (версия 8.1) или ~usr1cv8/.1cv8/1C/1cv8/reg_1541/1CV8Clst.lst (версия 8.3) можно найти конфигурацию кластера 1С в формате JSON. Например, такую:

{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=="}
}
}

UUID, расположенный в начале каждой секции JSON, идентифицирует конкретную конфигурацию. 1С сервер создаёт для конфигурации подкаталоги, именованные этим UUID, в приведённом примере это: ~usr1cv8/.1cv8/1C/1cv8/reg_1541/0dd04482-9367-11dc-748b-00fc390012a1

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

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

1С:Предприятие на системах Эльбрус

Возможные проблемы и методы решения

  • 1С не сможет подключиться к базе Postgresql, если настройки локали не совпадают. Так что приведите параметр Locale= в соответствие с настройками вашей базы.
  • 1С берёт значение хоста откуда угодно, только не из настроек, введённых пользователем. При необходимости укажите правильные имена хостов для «Центрального сервера» и «Локального кластера» вручную. Однако если у вас правильно настроена обратная зона DNS, ручных исправлений не потребуется.
  • Если том с домашним каталогом пользователя usr1cv8 переполнился, сервер сбрасывает подключения клиентов без какой-либо диагностики. Решение - перенесите домашний каталог сервера 1С на отдельный том или в /var и настройте ротацию журналов действий пользователей (файлы "1Cv8Log").
  • Не запускается менеджер кластера, не запускается рабочий процесс. В технологическом журнале записи о таймауте разрешения адреса IPv6. Отключить поддержку IPv6 или настроить разрешение адресов IPv6 в DNS.

Дополнительно

[[Категория:Enterprise Software|]]

[[Категория:1C|]]