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

Материал из ALT Linux Wiki
Перейти к: навигация, поиск
м (Создание сервера предприятия)
 
(не показана 71 промежуточная версия 13 участников)
Строка 1: Строка 1:
[[Категория:HOWTO]]
 
[[Категория:Enterprise Software]]
 
 
Унифицированная статья для разворачивания сервера 1С:Предприятие 8.3 и 8.2.  
 
Унифицированная статья для разворачивания сервера 1С:Предприятие 8.3 и 8.2.  
  
Строка 6: Строка 4:
 
* Краткая инструкция для установки клиента 1С:Предприятие 8.3 вынесена на [[1C/Quick|отдельную страницу]].
 
* Краткая инструкция для установки клиента 1С:Предприятие 8.3 вынесена на [[1C/Quick|отдельную страницу]].
 
* [http://forum.altlinux.org/index.php/topic,30681.0.html Инструкция по установке сервера 1С:Предприятие 8.x].
 
* [http://forum.altlinux.org/index.php/topic,30681.0.html Инструкция по установке сервера 1С:Предприятие 8.x].
 +
* [[1C/RAS|Сервер удалённого администрирования (RAS) 1С:Предприятие 8.3]]
  
 
+
  '''Для установки на [[Альт Линукс 6.0 СПТ|СПТ]] используйте специальную сертифицированную версию, полученную от представителей 1С.'''
===  Подключение необходимых репозиториев ALT Linux ===
 
 
 
На текущий момент рабочей СУБД является PostgreSQL 9.0 [http://lists.altlinux.org/pipermail/sysadmins/2013-December/036506.html] версии от Etersoft
 
Пакеты для аппаратного ключа защиты берем у них же.
 
 
 
Итого наш конфиг репозитория приобретает следующий вид:
 
  <pre>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</pre>
 
 
 
Возможно также использование [http://lists.altlinux.org/pipermail/community/2014-August/682293.html 9.2 из t7].
 
  
 
===  Установка сервера 1С:Предприятие на ALT Linux ===
 
===  Установка сервера 1С:Предприятие на ALT Linux ===
Строка 36: Строка 19:
 
Для версии 8.3:
 
Для версии 8.3:
 
* 1C_Enterprise83-common… — Общие компоненты 1С Предприятие 8.3 для Linux
 
* 1C_Enterprise83-common… — Общие компоненты 1С Предприятие 8.3 для Linux
* 1C_Enterprise82-server… — Сервер 1С Предприятие 8.3 для Linux
+
* 1C_Enterprise83-server… — Сервер 1С Предприятие 8.3 для Linux
* 1C_Enterprise82-ws… — Компоненты Web-сервисов 1С Предприятие 8.3 для Linux
+
* 1C_Enterprise83-ws… — Компоненты Web-сервисов 1С Предприятие 8.3 для Linux
  
 
Также для каждого из этих компонентов присутствуют пакеты -nls с поддержкой национальных символов.
 
Также для каждого из этих компонентов присутствуют пакеты -nls с поддержкой национальных символов.
Строка 49: Строка 32:
 
  SUPPORTED=ru_RU</pre>
 
  SUPPORTED=ru_RU</pre>
  
Дело в том, что если сервер 1С не найдёт тут кодировки ru_RU.UTF-8 (например, если установка происходит в OVZ-контейнере), то он будет настойчиво пытаться подключиться к нашей базе с локалью en_EN.UTF-8. А в chroot postgresql копируется только та локаль, которая задана при создании базы. Таким образом 1С-сервер не сможет подключиться к базе. Итак, данное руководство предполагает, что вы используете локаль ru_RU.UTF-8 в качестве общесистемной.
+
Дело в том, что если сервер 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>
 +
 
 +
Итак, данное руководство предполагает, что вы используете локаль ru_RU.UTF-8 в качестве общесистемной.
 
Если вы хотите использовать для доступа к БД имя хоста, а не IP, то хорошо бы настроить обратную DNS-зону. Это избавит вас от некоторых хлопот и возможной путаницы (подробности ниже).
 
Если вы хотите использовать для доступа к БД имя хоста, а не IP, то хорошо бы настроить обратную DNS-зону. Это избавит вас от некоторых хлопот и возможной путаницы (подробности ниже).
 +
 +
==== 32bit на x86_64 ====
 +
Обязательно установите пакет {{pkg|i586-glibc-nss}}, если устанавливаете 32-битную версию 1С на x86_64 сервер - без этого не будет работать DNS в сервере 1С.
  
 
==== Устанавливаем Postgresql ====
 
==== Устанавливаем Postgresql ====
  
Стандартный Postgresql не будет работать с 1С, а rpm-пакеты с Postgres, которые идут в дистрибутиве 1C, предназначены только для установки на fedora-совместимых дистрибутивах. Устанавливаем пакеты от Etersoft, при этом не забывая обновить дистрибутив до последней версии.
+
Стандартный Postgresql не будет работать с 1С, а rpm-пакеты с Postgres, которые идут в дистрибутиве 1C, предназначены только для установки на fedora-совместимых дистрибутивах. Устанавливаем пакеты от Etersoft, при этом не забывая обновить дистрибутив до последней версии.  
  
<pre>apt-get update
+
В p7:
apt-get dist-upgrade
+
<pre>apt-get update ; apt-get dist-upgrade
apt-get install postgre-etersoft9.0 postgre-etersoft9.0-contrib postgre-etersoft9.0-server glibc-i18ndata</pre>
+
apt-get install postgresql9.6-1C postgresql9.6-1C-contrib postgresql9.6-1C-server glibc-i18ndata</pre>
'''или'''
 
<pre>apt-get install  postgresql9.2-1C postgresql9.2-1C-contrib postgresql9.2-1C-server glibc-i18ndata</pre> для случая '''postgresql9.2''' из репо p7/t7
 
  
 +
В p8/p9:
 +
<pre>apt-get update ; apt-get dist-upgrade
 +
apt-get install postgresql10-1C postgresql10-1C-contrib postgresql10-1C-server</pre>
 +
 +
 +
Для Седьмой платформы ALT Linux есть более актуальные релизы от [https://postgrespro.ru/products/postgrespro/standard Postgres Pro]. Там же можно найти документацию на русском. Для этого сначала подключаем репозитарий и затем устанавливаем (для )
 +
<pre> sudo sh -c 'echo "rpm http://1c.postgrespro.ru/rpm/9.6/altlinux/7 x86_64 pgpro-1c" > /etc/apt/sources.list.d/postgrespro-1c.list' && sudo apt-get update
 +
sudo apt-get install postgresql-pro-1c-9.6</pre>
  
 
Для установивших ОС с диска (а не разворачивающих ovz-контейнер) с кодировками быть проблем не должно.
 
Для установивших ОС с диска (а не разворачивающих ovz-контейнер) с кодировками быть проблем не должно.
Строка 70: Строка 67:
 
localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8 # для белорусских баз</pre>
 
localedef -c -i ru_RU -f UTF-8 ru_RU.UTF-8 # для белорусских баз</pre>
  
При попытке первого запуска сервиса (инициализации базы данных) postgresql версии 9.0.4 может ругаться на отсутствующий каталог /var/lib/postgresql, после ручного создания данной папке СУБД инициализируется нормально. После этого открываем файл /var/lib/pgsql/data/postgresql.conf и проверяем, чтобы postgres слушал нужный интерфейс, имел соответствующую локаль и настройки, описанные в документации 1С-сервера. Вот пример работающего файла конфигурации (закомментированные строки пропущены). <div style="display: inline; color: red;">Пожалуйста, не копируйте себе бездумно эту конфигурацию! В комментариях дефолтного postgresql.conf находится много полезной информации</div>:
+
Создаём файлы базы данных:
 +
 
 +
service postgresql initdb
 +
 
 +
В седьмой платформе при попытке первого запуска сервиса (инициализации базы данных) postgresql версии 9 и новее может ругаться на отсутствующий каталог базы данных (/var/lib/pgsql/data), после ручного его создания (<tt>install -d -o postgres -g postgres /var/lib/pgsql/data</tt>) СУБД инициализируется нормально. Как рекомендует скрипт проверки базы, можно выполнить <tt>/etc/init.d/postgresql initdb</tt>, он создаёт также все необходимые файлы конфигурации.
 +
 
 +
После этого открываем файл /var/lib/pgsql/data/postgresql.conf и проверяем, чтобы postgres слушал нужный интерфейс, имел соответствующую локаль и настройки, описанные в документации 1С-сервера. Вот пример работающего файла конфигурации (закомментированные строки пропущены). <div style="display: inline; color: red;">Пожалуйста, не копируйте себе бездумно эту конфигурацию! В комментариях дефолтного postgresql.conf находится много полезной информации</div>:
  
 
<pre>listen_addresses = '*'
 
<pre>listen_addresses = '*'
Строка 87: Строка 90:
 
default_with_oids = on</pre>
 
default_with_oids = on</pre>
  
Учтите, что эта настройка далека от идеальной и производительной. Данное руководство не ставит перед собой такой задачи, поэтому настроить Postgresql под свои нужды вам надо будет самостоятельно (вот, к примеру, [http://oc.cs.msu.su/club/html/ руководство по настройке производительности])
+
Учтите, что эта настройка далека от идеальной и производительной. Данное руководство не ставит перед собой такой задачи, поэтому настроить Postgresql под свои нужды вам надо будет самостоятельно (вот, к примеру, [http://oc.cs.msu.su/club/html/ руководство по настройке производительности], ещё [http://www.gilev.ru/postgresql/ конкретно для 1С], а вот [https://www.postgresql.org/docs/10/static/index.html официальная документация] по используемой версии PostgreSQL)
Также в файле /var/lib/pgsql/data/pg_hba.conf вам надо будет определить политику доступа пользователей к СУБД (для этого читайте документацию 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>
 
<pre>host    all        all        0.0.0.0/0            md5</pre>
 
Что означает разрешение подключаться с любых адресов к любым базам с авторизацией по паролю.
 
Что означает разрешение подключаться с любых адресов к любым базам с авторизацией по паролю.
  
Для первоначальной настройки достаточно сменить пароль суперпользователя СУБД:
+
Не забываем поставить СУБД на автостарт (годится и для sysvinit, и для systemd):
<pre>[root@localhost ~]# psql -h localhost -U postgres template1
+
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>
 
template1=# ALTER USER postgres WITH PASSWORD 'secret';</pre>
  
Не забываем поставить СУБД на автостарт:
+
: Лучше создать отдельного пользователя для каждой базы данных (см. [[#Пользователи СУБД]])
<pre>chkconfig postgresql on</pre>
+
 
 
На этом настройка Postgresql завершена.
 
На этом настройка Postgresql завершена.
 +
 
Настоятельно рекомендуется настроить [http://wiki.postgresql.org/wiki/Automated_Backup_on_Linux автоматическое резервное копирование].
 
Настоятельно рекомендуется настроить [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 ====
 
==== Установка и запуск защиты HASP ====
  
Для сервера 1С на Linux не требуется серверный ключ при количестве подключенных пользователей менее 10.
+
В 2018 году обычно приобретаются и устанавливаются программные лицензии, аппаратный ключ используется редко.
 +
К тому же для сервера 1С на Linux технически не требуется серверный ключ при количестве подключенных пользователей менее 10, но сама лицензия на использование должна быть.
 +
В любом случае для клиентских компьютеров лицензии нужны, и если они хранятся на ключе, лучше всего подключить его к серверу и установить менеджер лицензий.
 +
 
 
Устанавливаем менеджер лицензий:
 
Устанавливаем менеджер лицензий:
<pre>apt-get update
+
<pre>apt-get install i586-haspd</pre>
apt-get install haspd haspd-modules</pre>
 
  
 
После его установки достаточно запустить сервис:
 
После его установки достаточно запустить сервис:
Строка 133: Строка 196:
 
Use $ eterkeytest [--hasp] [--sentinel] [--eutron] for test key presence
 
Use $ eterkeytest [--hasp] [--sentinel] [--eutron] for test key presence
 
</pre>
 
</pre>
Сервис на автостарт
+
Проверяем, будет ли он запускаться при загрузке:
<pre>chkconfig haspd on</pre>
+
# chkconfig haspd --list
  Примечание: текущая версия haspd не видит свежевоткнутые ключи и требует перезапуска после их подключения во время работы службы.
+
haspd          0:выкл 1:выкл 2:вкл 3:вкл 4:вкл 5:вкл 6:выкл
 +
Если на уровнях 3 и 5 не включен - включите:
 +
# chkconfig haspd on
  
 +
{{Note|текущая версия haspd не отслеживает события USB и требует перезапуска после подключения ключа во время работы службы.}}
  
 
==== Установка и запуск сервера 1С ====
 
==== Установка и запуск сервера 1С ====
 +
===== Зависимости и установка =====
 
Заходим в каталог с распакованным rpm64.tar.gz и выполняем следующую команду (с поправкой на свою версию):
 
Заходим в каталог с распакованным 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>
+
<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>
  
Для нормальной работы тонкого и Web-клиента Предприятия также требуются: 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, который тянет многие зависимости нужные для рабочей станции, но излишние для сервера.
+
Серверу может понадобится библиотека <code>fontconfig.so</code> — пакет <code>fontconfig</code> или <code>i586-fontconfig</code>, <code>libWand.so</code> пакет <code>libImageMagick</code> или  <code>i586-libImageMagick</code>
  
Запуск:
+
 
 +
Для нормальной работы тонкого и 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С ведёт журнал действий пользователя для каждой информационной базы. Эти журналы сохраняются в домашнем каталоге пользователя usr1cv8. К сожалению, эти журналы не ограничены в размерах средствами 1С и в некоторый момент том будет переполнен, из-за чего сервер 1С будет отвергать соединения клиентов.
 +
Одно из решений — отключить журнал в конфигураторе.
 +
 
 +
Если журнал нужен, решение простое — нужно настроить ротацию файлов ~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>)
 +
: Пример файла /etc/logrotate.d/srv1cv8 (цифры в имени каталога "reg_1541" - номер порта, на котором процесс rmngr принимает подключения клиентов):
 +
/var/lib/1cv8/.1cv8/1C/1cv8/reg_1541/*/1Cv8Log {
 +
    notifempty
 +
    missingok
 +
    rotate 1
 +
    size=500M
 +
    nocompress
 +
}
 +
 
 +
===== Запуск =====
 +
Запуск демона:
 
<pre>service srv1cv82 start</pre>
 
<pre>service srv1cv82 start</pre>
  
И автозапуск
+
И автозапуск:
 
<pre>chkconfig srv1cv83 on</pre>
 
<pre>chkconfig srv1cv83 on</pre>
  
Строка 153: Строка 242:
 
Разумеется, можно подключить технологический журнал. Но даже самое усердное курение самого подробного технологического журнала может оказаться малопродуктивно, если мы имеем дело с чем-то вроде "Unknown error".
 
Разумеется, можно подключить технологический журнал. Но даже самое усердное курение самого подробного технологического журнала может оказаться малопродуктивно, если мы имеем дело с чем-то вроде "Unknown error".
  
Наример, srv1cv83 попросту не запустится если HOSTNAME= из /etc/sysconfig/network почему-то не разрешается в адрес. Чтобы избежать этого, проследите чтобы имя сервера было зарегистрировано в доменной зоне, а также добавьте соответствующую запись в /etc/hosts, тогда неисправность/сбой/недоступность DNS будут не так страшны.  
+
Например, srv1cv83 попросту не запустится, если HOSTNAME= из /etc/sysconfig/network почему-то не разрешается в адрес. Чтобы избежать этого, проследите, чтобы имя сервера было зарегистрировано в доменной зоне, а также добавьте соответствующую запись в /etc/hosts, тогда неисправность/сбой/недоступность DNS будут не так страшны.  
  
 
Порты, которые слушает 1С:
 
Порты, которые слушает 1С:
Строка 162: Строка 251:
 
tcp        0      0 *:1562                      *:*                        LISTEN      18720/rphost
 
tcp        0      0 *:1562                      *:*                        LISTEN      18720/rphost
 
tcp        0      0 *:1563                      *:*                        LISTEN      18720/rphost</pre>
 
tcp        0      0 *:1563                      *:*                        LISTEN      18720/rphost</pre>
 +
 +
===== Особенности автозапуска 1С-сервера при системе запуска systemd =====
 +
В случае установки альт-сервера 8 в системе по умолчанию устанавливается systemd. Вместе с ним устанавливается пакет, позволяющий запускать автоматически пакеты, прописанные для запуска системы в sysV. В поставке 1С-сервера присутствует скрипт для запуска в sysV, и после установки 1С-сервера он копируется в каталог /etc/init.d/srv1cv83. В этом скрипте есть небольшая ошибка, которая не проявляется при интерактивном запуске 1С-сервера и при автостарте в sysV, но при автостарте из под systemd она проявляется и не дает ему стартовать. Для исправления этой ошибки открываем скрипт автозапуска 1С-сервера /etc/init.d/srv1cv83 в любом редакторе, добавляем первую строку #!/bin/sh и сохраняем скрипт.
 +
После такой модификации скрипта можно спокойно рестартовать систему. 1С-сервер будет автоматически запускаться.
  
 
==== Создание сервера предприятия ====
 
==== Создание сервера предприятия ====
Строка 167: Строка 260:
 
Из Windows это можно сделать так:
 
Из Windows это можно сделать так:
  
Запустите оснастку управления серверами предприятия из меню Пуск —> 1С Предприятие 8.3 —> Серверы 1С Предприятия.
+
Запустите оснастку управления серверами предприятия из меню Пуск 1С Предприятие 8.3 Серверы 1С Предприятия.
 
Создайте центральный сервер. Для этого войдите в контекстное меню и выберите пункт "Создать центральный сервер 1С Предприятия".
 
Создайте центральный сервер. Для этого войдите в контекстное меню и выберите пункт "Создать центральный сервер 1С Предприятия".
 
Введите имя и описание линукс-сервера.
 
Введите имя и описание линукс-сервера.
 
Теперь после закрытия окна нажмите на плюсик рядом с новым сервером.
 
Теперь после закрытия окна нажмите на плюсик рядом с новым сервером.
 
Если сообщений об ошибках не было выдано, то создастся кластер.
 
Если сообщений об ошибках не было выдано, то создастся кластер.
БД создаются прямо из оснастки управления кластером 1С:Предприятие, либо при запуске Конфигуратора.
+
 
 +
Имя кластера лучше задавать в виде адреса IP, иначе на каждом компьютере с клиентом 1С придётся обеспечить разрешение имени сервера в адрес.
 +
 
 +
Информационные базы создаются прямо из оснастки управления кластером 1С:Предприятие, либо при запуске Конфигуратора. Для каждой ИБ нужна своя база данных в postgres. При этом можно задать для каждой такой БД своего пользователя в postgres, но для работы с 1С пользователю postgres нужна роль postgres — точнее, нужны права на создание и удаление функций в схеме public.
  
 
После создания (или загрузки базы) можно подключаться к серверу толстым или тонким клиентом, для Web-доступа базу нужно дополнительно опубликовать (см. ниже)
 
После создания (или загрузки базы) можно подключаться к серверу толстым или тонким клиентом, для Web-доступа базу нужно дополнительно опубликовать (см. ниже)
  
===  Установка сервера 1С Предприятие 8.2 на ALT Linux для документооборота ===
+
Файлы конфигурации и рабочие файлы информационной базы (временные, протоколы, ...) размещены в ~usr1cv8/.1cv8
 +
 
 +
Из Linux это можно сделать так:
  
Стенд для 1С документооборота разварачивали двое - представитель ALT Linux и представитель 1c-kpd.
+
Войдите в меню Все функции... - Стандартные - Управление серверами тонкого или толстого клиента 1С:Предприятие 8.3. Для управления кластером клиентское приложение требует [[1C/RAS|RAS]], запущенный на рабочем сервере к которому идёт обращение. Создайте центральный сервер аналогично тому, как описано для Windows.
 +
 
 +
===  Установка сервера 1С Предприятие 8.2 или 8.3 на ALT Linux для документооборота ===
 +
 
 +
Стенд для 1С:Документооборот разворачивали двое - представитель ALT Linux и представитель 1c-kpd.
  
 
Опишу линуксовую часть.
 
Опишу линуксовую часть.
Строка 190: Строка 292:
  
 
Все шаги, кроме последнего достаточно тривиальны, за исключением мелочи - человек (из 1С) настраивающий сервер со стороны винды сообщил о каких-то ошибках
 
Все шаги, кроме последнего достаточно тривиальны, за исключением мелочи - человек (из 1С) настраивающий сервер со стороны винды сообщил о каких-то ошибках
которые лечатся запуском скрипта <tt>/opt/1C/8.2/i386/utils/config-server</tt>
+
которые лечатся запуском скрипта <tt>/opt/1C/8.2/i386/utils/config-server</tt> (актуально только для 1C 8.2). Скрипт капризный, требует указания пути к мелкомягким шрифтам, потому понадобилось установить <tt>fonts-ttf-ms</tt> и конвертер <tt>ttf2pt1</tt>, после чего скрипт запускается с указанием пути к каталогу шрифтов как параметра командной строки и молча отрабатывает. Помогло.
  
Скрипт капризный, требует указания пути к мелкомягким шрифтам, потому понадобилось установить <tt>fonts-ttf-ms</tt> и конвертер <tt>ttf2pt1</tt>, после чего
+
==== Настройка Apache для веб-клиентов документооборота ====
скрипт запускается с указанием пути к каталогу шрифтов как параметра командной строки и молча отрабатывает. Помогло.
+
Описан дефолтный вариант — подкаталог в основном сайте. В примерах используется версия сервера 1С 8.3.
  
=== Настройка Apache для веб-клиентов документооборота ===
+
Настройка проводится в четыре шага:
 +
# Надо создать в домашнем каталоге пользователя usr1cv82 в случае 1С 8.2 или usr1cv8 в случае 1C 8.3 корень будущего сервера
 +
# положить в него файл-описание подключения к серверу (*.vrd),
 +
# затем подключить модуль 1С к апачу
 +
# и создать конфиг хоста в апаче.
  
* Добавляем спец. модуль
+
Информация о модуле:
я сделал файлик  _1cws_module.load с единственной строчкой
+
** имя модуля: _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.
  
LoadModule _1cws_module /opt/1C/v8.2/i386/wsap22.so
+
: '''Шаг 1. Создаем корень сервера'''
  
И положил в <tt>mods-available</tt>, затем подключил к апачу
+
install -d -o usr1cv8 -g grp1cv8 ~usr1cv8/www/DemoApp
  
* делаем конфиг для будущего сервера.
+
Это просто каталог, владельцы которого usr1cv8:grp1cv8 (или можно сделать apache2:grp1cv8 и дать права доступа владельцу только на чтение).
  
Тут два шага - надо создать в специальном каталоге пользователя usr1cv82 корень будущего сервера
+
Надо позаботиться о том, чтобы <tt>apache2</tt> мог его увидеть в <tt>~usr1cv8</tt>:
 +
chmod 750 ~usr1cv8
 +
usermod -a -G grp1cv8 apache2
  
и создать конфиг хоста в апаче.
+
Остальное можно сделать автоматически разом либо вручную поэтапно. Второй способ гибче, например, можно назначить каждой информационной базе отдельное доменное имя (создать VirtualHost).
  
Шаг 1. Создаем корень сервера:
+
===== Автоматически =====
  
/home/usr1cv82/www/MyApp
+
В главе 7 документации администратора описана команда webinst.
  
Это просто каталог. Владельцы которого apache2:grp1cv82, и права доступа владельцу на чтение (естественно надо позаботиться о том, чтобы <tt>apache2</tt> мог зайти в хомяк <tt>/home/usr1cv82</tt>)
+
Используя 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
  
В этом каталоге надо создать файлик default.vrd такого содержания
+
Смотрим, что получилось:
 +
<pre>
 +
# cat /etc/httpd2/conf/extra-enabled/1c.conf
 +
LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap22.so"
 +
 
 +
# 1c publication.
 +
# В вашей конфигурации путь может быть другим!
 +
Alias "/crm" "/home/usr1cv8/www/DemoApp/"
 +
<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>
 
<pre>
 
  <?xml version="1.0" encoding="UTF-8"?>
 
  <?xml version="1.0" encoding="UTF-8"?>
Строка 222: Строка 371:
 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  base="/MyApp"
+
  base="/DemoApp"
  ib="Srvr=&amp;quot;192.168.0.254&amp;quot;;Ref=&amp;quot;doc_demo&amp;quot;;">
+
  ib="Srvr=192.0.2.54;Ref=doc_demo;">
<ws enable="false"/>
 
 
  </point>
 
  </point>
 
</pre>
 
</pre>
  
Третья строка отражает тот факт, что /home/usr1cv82/www/MyApp - корень сервера
+
В третьей строке значение параметра "base" отражает тот факт, что ~usr1cv8/www/DemoApp - корень веб-интерфейса информационной базы.
  
Четвертая что IP сервера 192.168.0.254 (можно, видимо, и localhost), а <pre>Ref=&amp;quot;doc_demo&amp;quot;;</pre>, что база 1С называется doc_demo (создавал товарищ из через винду)
+
В четвертой строке в параметре "ib" указана строка подключения к информационной базе (connection string), в примере IP сервера 192.0.2.54 (можно указать доменное имя интерфейса, можно localhost), база 1С называется "doc_demo". База должна быть создана в Конфигураторе.<br>
 +
Правильное значение connection string посмотрите в клиенте внизу окна выбора информационной базы.
  
Шаг 2 Конфиг хоста
 
  
в sites-available создаем 1c.conf такого вида:
+
: '''Шаг 3: Добавляем модуль в конфигурацию apache'''
  
 +
Для этого в /etc/httpd2/conf/mods-available создаём файл _1cws_module.load:
 +
 +
echo LoadModule _1cws_module /opt/1C/v8.*/i386/wsap22.so > /etc/httpd2/conf/mods-available/_1cws_module.load
 +
 +
Затем включаем его в работу:
 +
ln -s ../mods-available/_1cws_module.load /etc/httpd2/conf/mods-enabled/_1cws_module.load
 +
 +
: '''Шаг 4. Конфиг хоста'''
 +
 +
Простейший вариант - подкаталог в стандартном сайте.
 +
 +
Cоздаем файл /etc/httpd2/conf/include/1c.conf такого вида:
 
<pre>
 
<pre>
  Alias /MyApp "/home/usr1cv82/www/MyApp"
+
  Alias /DemoApp /home/usr1cv8/www/DemoApp
  <Directory "/home/usr1cv82/www/MyApp">
+
  <Directory "/home/usr1cv8/www/DemoApp">
 
     AllowOverride None
 
     AllowOverride None
 
     Options None
 
     Options None
Строка 244: Строка 404:
 
     Allow from all
 
     Allow from all
 
     SetHandler 1c-application
 
     SetHandler 1c-application
     ManagedApplicationDescriptor /home/usr1cv82/www/MyApp/default.vrd
+
     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>
 
  </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>
 
</pre>
  
и включаем его.
+
===== Проверка =====
  
 
Перезапускаем апач. Если ругнулся на ManagedApplicationDescriptor, значит модуль от 1С не загрузился.
 
Перезапускаем апач. Если ругнулся на ManagedApplicationDescriptor, значит модуль от 1С не загрузился.
  
Все. Проверяем с клиента по адресу http://IP/MyApp Должна показаться морда документооборота.
+
Проверяем с клиента по адресу 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>) и укажите его в конфигурации.
  
 
=== Часто возникающие проблемы ===
 
=== Часто возникающие проблемы ===
В файле /home/usr1cv81/.1cv81/1C/1Cv81/reg_1541/1CV8Reg.lst можно найти конфигурацию кластера 1С. Например, у меня он выглядит так:
+
В файле ~usr1cv81/.1cv81/1C/1Cv81/reg_1541/1CV8Reg.lst (версия 8.1) или ~usr1cv8/.1cv8/1C/1cv8/reg_1541/1CV8Clst.lst (версия 8.3) можно найти конфигурацию кластера 1С в формате JSON. Например, такую:
  
 
<pre>{0,
 
<pre>{0,
Строка 276: Строка 465:
 
}
 
}
 
}</pre>
 
}</pre>
 +
 +
UUID, расположенный в начале каждой секции JSON, идентифицирует конкретную конфигурацию. 1С сервер создаёт для конфигурации подкаталоги, именованные этим UUID, в приведённом примере это:
 +
~usr1cv8/.1cv8/1C/1cv8/reg_1541/0dd04482-9367-11dc-748b-00fc390012a1
 +
  
 
* 1С не сможет подключиться к базе Postgresql, если настройки локали не совпадают. Так что приведите параметр Locale= в соответствие с настройками вашей базы.
 
* 1С не сможет подключиться к базе Postgresql, если настройки локали не совпадают. Так что приведите параметр Locale= в соответствие с настройками вашей базы.
* А ещё 1С берёт значение хоста откуда угодно, только не из настроек, введённых пользователем. :) При необходимости укажите правильные имена хостов для «Центрального сервера» и «Локального кластера» вручную. Однако если у вас правильно настроена обратная зона DNS, ручных исправлений не потребуется.
+
* 1С берёт значение хоста откуда угодно, только не из настроек, введённых пользователем. :) При необходимости укажите правильные имена хостов для «Центрального сервера» и «Локального кластера» вручную. Однако если у вас правильно настроена обратная зона DNS, ручных исправлений не потребуется.
 +
* Если том с домашним каталогом пользователя usr1cv8 переполнился, сервер сбрасывает подключения клиентов без какой-либо диагностики. Решение - перенесите домашний каталог сервера 1С на отдельный том или в /var и настройте ротацию журналов действий пользователей (это файлы "1Cv8Log").
  
 
==== Установка 1С-сервера в OVZ-контейнер ====
 
==== Установка 1С-сервера в OVZ-контейнер ====
Строка 316: Строка 510:
 
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</pre>
 
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</pre>
 
{{Category navigation|title=ПО уровня предприятия|category=Enterprise Software|sortkey={{SUBPAGENAME}}}}
 
{{Category navigation|title=ПО уровня предприятия|category=Enterprise Software|sortkey={{SUBPAGENAME}}}}
 +
{{Category navigation|title=1C|category=1C|sortkey={{SUBPAGENAME}}}}

Текущая версия на 09:30, 22 июля 2020

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

См. также

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

Установка сервера 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_Enterprise83-server… — Сервер 1С Предприятие 8.3 для Linux
  • 1C_Enterprise83-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С-сервер не сможет подключиться к базе.

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

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

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

32bit на x86_64[править]

Обязательно установите пакет i586-glibc-nss, если устанавливаете 32-битную версию 1С на x86_64 сервер - без этого не будет работать DNS в сервере 1С.

Устанавливаем Postgresql[править]

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

В p7:

apt-get update ; apt-get dist-upgrade
apt-get install postgresql9.6-1C postgresql9.6-1C-contrib postgresql9.6-1C-server glibc-i18ndata

В p8/p9:

apt-get update ; apt-get dist-upgrade
apt-get install postgresql10-1C postgresql10-1C-contrib postgresql10-1C-server


Для Седьмой платформы ALT Linux есть более актуальные релизы от Postgres Pro. Там же можно найти документацию на русском. Для этого сначала подключаем репозитарий и затем устанавливаем (для )

 sudo sh -c 'echo "rpm http://1c.postgrespro.ru/rpm/9.6/altlinux/7 x86_64 pgpro-1c" > /etc/apt/sources.list.d/postgrespro-1c.list' && sudo apt-get update
sudo apt-get install postgresql-pro-1c-9.6

Для установивших ОС с диска (а не разворачивающих 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 # для белорусских баз

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

service postgresql initdb

В седьмой платформе при попытке первого запуска сервиса (инициализации базы данных) postgresql версии 9 и новее может ругаться на отсутствующий каталог базы данных (/var/lib/pgsql/data), после ручного его создания (install -d -o postgres -g postgres /var/lib/pgsql/data) СУБД инициализируется нормально. Как рекомендует скрипт проверки базы, можно выполнить /etc/init.d/postgresql initdb, он создаёт также все необходимые файлы конфигурации.

После этого открываем файл /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 под свои нужды вам надо будет самостоятельно (вот, к примеру, руководство по настройке производительности, ещё конкретно для 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;. Если есть более корректный путь - укажите его здесь.)

Установка и запуск защиты HASP[править]

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

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

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 и требует перезапуска после подключения ключа во время работы службы.


Установка и запуск сервера 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

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

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

Примечание: Сотрудники компаний, занимающихся сопровождением 1С, называют это "очисткой кэша".

Также полезно создать для домашнего каталога пользователя 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
}
Запуск[править]

Запуск демона:

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
Особенности автозапуска 1С-сервера при системе запуска systemd[править]

В случае установки альт-сервера 8 в системе по умолчанию устанавливается systemd. Вместе с ним устанавливается пакет, позволяющий запускать автоматически пакеты, прописанные для запуска системы в sysV. В поставке 1С-сервера присутствует скрипт для запуска в sysV, и после установки 1С-сервера он копируется в каталог /etc/init.d/srv1cv83. В этом скрипте есть небольшая ошибка, которая не проявляется при интерактивном запуске 1С-сервера и при автостарте в sysV, но при автостарте из под systemd она проявляется и не дает ему стартовать. Для исправления этой ошибки открываем скрипт автозапуска 1С-сервера /etc/init.d/srv1cv83 в любом редакторе, добавляем первую строку #!/bin/sh и сохраняем скрипт. После такой модификации скрипта можно спокойно рестартовать систему. 1С-сервер будет автоматически запускаться.

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

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

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

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

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

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

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

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

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

Установка сервера 1С Предприятие 8.2 или 8.3 на 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 (актуально только для 1C 8.2). Скрипт капризный, требует указания пути к мелкомягким шрифтам, потому понадобилось установить fonts-ttf-ms и конвертер ttf2pt1, после чего скрипт запускается с указанием пути к каталогу шрифтов как параметра командной строки и молча отрабатывает. Помогло.

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

Описан дефолтный вариант — подкаталог в основном сайте. В примерах используется версия сервера 1С 8.3.

Настройка проводится в четыре шага:

  1. Надо создать в домашнем каталоге пользователя usr1cv82 в случае 1С 8.2 или usr1cv8 в случае 1C 8.3 корень будущего сервера
  2. положить в него файл-описание подключения к серверу (*.vrd),
  3. затем подключить модуль 1С к апачу
  4. и создать конфиг хоста в апаче.

Информация о модуле:

    • имя модуля: _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. Создаем корень сервера
install -d -o usr1cv8 -g grp1cv8 ~usr1cv8/www/DemoApp 

Это просто каталог, владельцы которого usr1cv8:grp1cv8 (или можно сделать apache2:grp1cv8 и дать права доступа владельцу только на чтение).

Надо позаботиться о том, чтобы apache2 мог его увидеть в ~usr1cv8:

chmod 750 ~usr1cv8
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 

Смотрим, что получилось:

# cat /etc/httpd2/conf/extra-enabled/1c.conf
LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap22.so"

# 1c publication.
# В вашей конфигурации путь может быть другим!
Alias "/crm" "/home/usr1cv8/www/DemoApp/"
<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>
Вручную[править]
Шаг 2: пишем default.vrd

В ~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=192.0.2.54;Ref=doc_demo;">
 </point>

В третьей строке значение параметра "base" отражает тот факт, что ~usr1cv8/www/DemoApp - корень веб-интерфейса информационной базы.

В четвертой строке в параметре "ib" указана строка подключения к информационной базе (connection string), в примере IP сервера — 192.0.2.54 (можно указать доменное имя интерфейса, можно localhost), база 1С называется "doc_demo". База должна быть создана в Конфигураторе.
Правильное значение connection string посмотрите в клиенте 1С внизу окна выбора информационной базы.


Шаг 3: Добавляем модуль в конфигурацию apache

Для этого в /etc/httpd2/conf/mods-available создаём файл _1cws_module.load:

echo LoadModule _1cws_module /opt/1C/v8.*/i386/wsap22.so > /etc/httpd2/conf/mods-available/_1cws_module.load

Затем включаем его в работу:

ln -s ../mods-available/_1cws_module.load /etc/httpd2/conf/mods-enabled/_1cws_module.load
Шаг 4. Конфиг хоста

Простейший вариант - подкаталог в стандартном сайте.

Cоздаем файл /etc/httpd2/conf/include/1c.conf такого вида:

 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>

Включаем /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
<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>
Проверка[править]

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

Проверяем с клиента по адресу http://IP/DemoApp — должна показаться морда информационной базы.

Для входа далее нужен специальный клиентский ключ. Программные ключи предоставляет специальная win32-only программа. Обычно ключи запрашивает у неё и распределяет между клиентами сам сервер. Первые 8 клиентов работают без него, при этом, если настроен технологический журнал, в его файлах rpmngr на каждое обращение клиента сообщает об отсутствии лицензии.

Размещение пользовательских файлов конфигурации “Документооборот”[править]

В конфигурации “1С:Документооборот” есть возможность хранить произвольные файлы в информационной базе. В действительности они хранятся не в СУБД, а в виде файлов. Подходящее место для таких файлов - домашний каталог пользователя usr1cv8, например, подкаталог ~usr1cv8/1sfiles. Перед использованием его нужно создать:

install -d -o usr1cv8 -g grp1cv8 -m2770 ~usr1cv8/1sfiles

А затем посмотрите, какой он в файловой системе (ls -d ~usr1cv8/1sfiles) и укажите его в конфигурации.

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

В файле ~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


  • 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-шаблон отсюда.

Далее размещаем шаблон в /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