Сервер 1С на Linux

Содержание

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

Несмотря на кажущуюся простоту, настройка веб-доступа к файловым базам несколько сложнее, чем к серверным, это связано с тем, что необходимо правильно установить права доступа для всех участников данной схемы. Официальная документация довольно скупо освещает этот вопрос, поэтому ниже мы уделим ему повышенное внимание:

После выполнения публикации необходимо предоставить пользователю, от лица которого запускается Apache, права на каталог исполняемых файлов (/opt/1C/v8.3/i386/ для 32-разрядной версии или /opt/1C/v8.3/x86_64/ для 64-разрядной версии) конкретной версии системы «1C:Предприятие» (чтение и выполнение). В случае файлового варианта информационной базы необходимо дать права на модификацию каталога информационной базы пользователю, от лица которого работает веб-сервер.

Итак, рассмотрим подробнее всех участников нашей схемы. Ключевую роль в ней занимает информационная база, права на модификацию которой должны иметь все подключающиеся к ней клиенты, а также исполняемые файлы платформы, к которым должен иметь доступ веб-сервер.

Начнем с платформы, она размещается в /opt/1C и имеет владельцем usr1cv8:grp1cv8, такой формат записи является общеупотребительным в Linux и обозначает связку пользователь:группа. Если быть точным, то веб-серверу требуется доступ на чтение и выполнение к единственному файлу платформы — библиотеке wsap24.so (для Apache 2.4).

Гораздо интереснее с информационной базой, изначально ее владельцем является локальный пользователь user:user, который является также членом одноименной персональной группы. По умолчанию он имеет все необходимые права доступа к базе (чтение и запись). Аналогичные права также должен иметь веб-сервер, который работает от имени www-data:www-data.

Существуют способы запустить Apache от имени нужного пользователя, но на практике выяснилось, что 1С не работает с mpm-itk, даже если веб-сервер запущен от системного пользователя, практически сразу после запуска базы вы будете получать следующую ошибку: Сеанс отсутствует или удален.

Поэтому самое время вспомнить, что в Linux права устанавливаются для пользователя, группы и остальных, права по умолчанию, в зависимости от системы, несколько отличаются. За их назначение отвечает такой параметр как umask, грубо говоря, это маска, которую надо вычесть из полных прав, чтобы получить права, применяющиеся по умолчанию. В Ubuntu umask равен 002, а в Debian 022, следовательно, набор стандартных прав в Ubuntu/Debian будет 775/755 для папок и 664/644 для файлов.

Набор 775/664 дает права чтения/записи как владельцу, так и группе, а 755/644 — только владельцу. Таким образом в Ubuntu набор прав по умолчанию полностью подходит для наших целей, а в Debian потребуется изменить umask на 002.

Что касается прав, то потребуется взаимное включение пользователя и веб-сервера в персональные группы друг друга, а также веб-сервера в группу владельца бинарных файлов 1С. Теория понятна, перейдем к практике.

Установка модуля расширения веб-сервера

Будем считать, что у вас уже установлена платформа согласно нашему руководству Установка клиента 1С:Предприятие на Ubuntu 12.04. В таком случае нам понадобятся пакеты 1c-enterprise83-ws и 1c-enterprise83-ws-nls из поставки сервера. Обратите внимание, что версия и разрядность данных пакетов должна совпадать с версией и разрядностью установленной платформы.

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

dpkg -i 1c*.deb

Обратите внимание, что данная команда установит все пакеты из текущего расположения по маске 1с*, поэтому будьте внимательны и убедитесь, что в ней нет ничего лишнего.

Затем установим нужного владельца для платформы:

chown -R usr1cv8:grp1cv8 /opt/1C

на этом установка модуля веб-сервера окончена.

Установка Apache 2.4

Начиная с платформы 8.3.8 добавлена поддержка актуальной версии Apache 2.4, теперь нет необходимости понижать версию пакета, если вы используете более раннюю версию платформы, то вам потребуется понизить Apache до версии 2.2, как это сделать описано в нашей статье Используем APT Pinning для закрепления пакетов в Debian и Ubuntu.

Также мы категорически не советуем использовать экземпляр Apache используемый для 1С:Предприятия для иных целей, как мы уже видели, 1С оказалась несовместима с mpm-itk, кроме того 1С достаточно вольно обращается с файлами конфигурации, игнорируя виртуальные хосты и дописывая свои директивы прямо в основной конфигурационный файл Apache.

Конечно, можно вручную настроить все красиво, но это потребует повышенных затрат на администрирование при добавлении новых баз, поэтому более разумным решением будет выделение для 1С собственного экземпляра Apache.

Его установка производится одной единственной командой:

apt-get install apache2

После установки следует уточнить какой MPM-модуль использует ваш сервер:

apachectl -V | grep -i mpm

Если это будет prefork или event, то их следует отключить:

a2dismod mpm_prefork

или

a2dismod mpm_event

А затем включить модуль worker:

a2enmod mpm_worker

Затем откройте /etc/apache2/mods-available/mpm_worker.conf и внесите следующие изменения:

StartServers 1
MinSpareThreads 1
MaxSpareThreads 1

После чего перезапустите веб-сервер:

service apache2 restart

его настройка завершена.

Настройка необходимых прав доступа

Если вы используете Debian, то прежде всего следует изменить umask системы на 002, для этого откройте файл /etc/pam.d/common-session и добавьте в его конец строку:

session optional pam_umask.so umask=0002

Затем включим пользователя веб-сервера в группы 1С и текущего пользователя системы:

usermod -a -G grp1cv8 www-data
usermod -a -G user www-data

Также включим текущего пользователя в группу веб-сервера:

usermod -a -G www-data user

где вместо user следует использовать имя текущего пользователя.

После чего нужно установить права на папки с информационными базами, допустим они находятся в /opt/1C_bases:

chmod -R u=rw,g=rw,o=r,a+X /opt/1C_bases

Закончив с установкой прав следует перезагрузить сервер.

Публикация информационной базы

Публикацию базы можно выполнить двумя путями: через Конфигуратор и при помощи командной строки. Ниже мы рассмотрим оба способа.

Перед публикацией создадим директорию для нее в рабочем каталоге веб сервера, по умолчанию это /var/www, мы будем публиковать Бухгалтерию 3.0 поэтому назовем директорию acc30:

mkdir /var/www/acc30

Запустим 1С:Предприятие с повышенными правами, для этого в терминале от имени суперпользователя выполните для 32-разрядной системы:

/opt/1C/v8.3/i386/1cestart

для 64-разрядной:

/opt/1C/v8.3/x86_64/1cestart

Откроется стандартное окно запуска 1С из которого откроем в Конфигураторе нужную нам базу. Затем перейдем в Администрирование — Публикация на веб-сервере и заполним небольшую форму:

В поле Имя указываем желаемый алиас информационной базы, его вы будете набирать в адресной строке браузера для доступа к данной базе, поэтому не следует делать его длинным или неудобочитаемым. Веб-сервер — здесь все понятно, в нашем случае Apache 2.4 и, наконец, Каталог — здесь следует указать директорию публикации, которую мы создали несколько ранее, не следует путать ее с рабочим каталогом ИБ. Если вы не используете интерфейс OData и Web-сервисы, то публиковать их не нужно.

Заполнив все необходимые поля нажмите кнопку Опубликовать, затем согласитесь с предложением перезапустить веб-сервер.

Для публикации из командной строки следует перейти в директорию с бинарными файлами 1С, в 32-разрядной системе выполните:

cd /opt/1C/v8.3/i386/

в 64-разрядной:

cd /opt/1C/v8.3/x86_64/

После чего запустите утилиту webinst со следующими параметрами:

./webinst -publish -apache24 -wsdir acc30 -dir /var/www/acc30/ -connstr «File=»»/opt/1C_bases/acc30/»»;» -confpath /etc/apache2/apache2.conf

На первый взгляд ее синтаксис довольно сложен, но на самом деле все довольно просто, давайте разберем каждый параметр:

  • publish — указывает необходимое действие, в данном случае публикацию, может быть опущен, так как это действие по умолчанию.
  • apache24 — задает тип веб-сервера, для Apache 2.2 следует указывать apache22.
  • wsdir — имя алиаса публикации, по которому к базе следует обращаться из браузера.
  • dir — путь публикации, созданная нами директория в рабочем каталоге веб-сервера
  • connstr — строка соединения, состоит из трех частей, каждая из которых взята в кавычки: «File=» — указывает что база файловая, «/opt/1C_bases/acc30/» — путь к каталогу ИБ, «;» — служебный символ.
  • confpath — путь к конфигурационному файлу веб-сервера.

Опубликовав базу следует восстановить владельца папки публикации:

chown -R www-data:www-data /var/www

Теперь можем попробовать запустить базу, обратившись к ней в браузере по имени хоста или IP-адресу, добавив через слеш нужный алиас, на локальной машине можно набрать http://127.0.0.1/acc30.

Если вы внимательно следовали инструкции и не допустили нигде ошибок, то все должно работать. Однако при выборе режима работы, через браузер или тонкий клиент, учитывайте особенности лицензирования. При работе в режиме веб-клиента (через браузер) веб-сервер ищет доступные лицензии на собственном хосте, а тонкий клиент использует локальную лицензию рабочего места. Более подробно об особенностях лицензирования читайте в статье: Особенности применения программных лицензий 1С:Предприятие.

Несколько слов о производительности

По-хорошему здесь должен был быть завершающий абзац статьи с заключением и пожеланиями, но наш материал был бы неполным без темы производительности данного решения. Так как веб доступ в файловом режиме обычно используют небольшие предприятия, то в роли веб-сервера чаще всего используется обычный офисный ПК. В его роли мы использовали виртуальную машину, которой выделили два ядра от Core i5-4670 и 4 ГБ оперативной памяти, что соответствует неплохой офисной машине.

Если по процессорным или дисковым ресурсам вопросов не возникло, то вот расход оперативной памяти нас не порадовал. Ниже показана система сразу после загрузки:

Затем мы запустили два экземпляра базы (один в веб-клиенте, другой в тонком) локально и два экземпляра по сети:

Как видим, свободная память в системе закончилась, и она ушла в своп, а если немного поработать в базах, то быстро закончится и файл подкачки. При этом, кроме 1С, на данном ПК больше ничего не запущено, что для обычной офисной машины не характерно. Эмпирическим путем мы выяснили, что на каждый сеанс работы с такими конфигурациями, как Бухгалтерия предприятия 3.0 требуется иметь 1 ГБ оперативной памяти.

Хорошо, закрываем все сеансы, но что это?

Система не спешит освобождать ресурсы, а переключившись на первую вкладку мы обнаружим запущенные процессы Apache, которые и не думают завершаться. Ошибка в платформе? Нет, начиная с платформы 8.3.9.1818 был реализован новый механизм работы с сеансами веб-сервисов, подробнее об этом можно прочитать в статье: Повышение производительности веб-сервисов.

Если коротко, то раньше веб-сервисы 1С работали как CGI-приложение, т.е. при каждом запуске веб-клиента или обращении к веб-сервисам происходил запуск рабочего процесса Apache, который загружал модуль веб-расширения 1С, а по завершении работы выгружал его и закрывался сам. Недостатком подобного метода являются высокие накладные расходы на запуск и завершение процесса.

Теперь модель работы веб-сервисов соответствует FastCGI-приложению, которое запускается один раз и продолжает оставаться запущенным даже при завершении сеансов работы с ним. Процитируем разработчиков 1С:

Сеансы в пуле хранятся в разрезе типа сервиса, наименования сервиса, пользователя/пароля, значений разделителей и безопасного режима. Причём в пуле может быть несколько сеансов с одинаковыми значениями перечисленных реквизитов.

При вызове платформа проверяет, есть ли простаивающий сеанс с подходящим сочетанием этих реквизитов. Если такой сеанс есть, то он выделяется для обработки вызова. Если такого сеанса нет, то создается новый сеанс и выделяется для обработки.

Сеанс автоматически завершается по истечении периода бездействия (ВремяЖизниСеанса).

Что из этого следует? А то, что если вы одновременно запустите 4 сеанса работы с веб-сервером, то по их завершении рабочие процессы Apache продолжат работу в ожидании новых подключений, а если их не будет, то по окончании времени жизни сеанса, которое по умолчанию составляет 20 минут, будут завершены.

Таким образом вам нужно иметь достаточное количество оперативной памяти для обеспечения одновременной работы максимально возможного числа одновременно подключившихся клиентов, в противном случае ваша система может катастрофически снизить производительность по причине отсутствия свободной памяти. Даже если эти подключения будут носить кратковременный характер память под них будет «зарезервирована» в течении еще 20 минут.

Для небольших фирм мы можем рекомендовать установить объем оперативной памяти исходя из соображений 1 ГБ на одну свободную лицензию 1С, это позволит всегда иметь необходимый запас свободной памяти и избежать неприятных ситуаций с недоступностью сервера в разгар работы.

Если вы приверженец бесплатных программных продуктов, например Ubuntu, то многие программы могут быть вам недоступны. В случае с 1С такое положение вещей стало бы большой проблемой, так как разработки этой отечественной компании очень популярны в России, а для автоматизации некоторых процессов и вовсе незаменимы. Именно поэтому разработчики предусмотрели, что среди клиентов могут быть пользователи Linux. Прочитав статью, вы узнаете, как воспользоваться настроенными пакетами для установки 1С на Ubuntu или любые другие системы семейства Linux.

Скачивание и подготовка файлов 1С

Для того чтобы начать установку 1С, надо подготовить дистрибутивы. Начнем с вопроса: «Для какой ОС мы подбираем 1С – для 32- или 64-битной?». После заходим на сайт, где компания 1С выкладывает дистрибутивы. Введя логин и пароль, заходим в раздел с дистрибутивами и там, найдя нужные нам в списке, сохраняем на компьютер следующие архивы:

  • Клиент 1С:Предприятие для DEB-based Linux-систем;
  • Сервер 1С:Предприятие для DEB-based Linux-систем.

Рис.1 Дистрибутивы для DEB-based Linux-систем

На Ubuntu используется формат файлов DEB. Но поскольку мы скачали с сайта архивы, надо все скачанные пакеты распаковать и переместить в один каталог. В результате должен получиться такой список файлов:

На этом этапе подготовка заканчивается и можно приступать непосредственно к установке 1С на Линукс.

Процесс установки 1С на Ubuntu

Чтобы установить 1С на Linux, необходимо открыть терминал («Приложения»>»Стандартные») и перейти в папку, где сложены все файлы.

Рис.2 Терминал с файлами

В этом нам поможет команда «cd» (пример использования – «cd /etc/apt»). После этого, необходимо запустить установку скачанных пакетов в определенном порядке. Для этого последовательно вводим следующие команды в запущенный терминал:

Рис.3 Установка скачанных пакетов При установке на Ubuntu могут возникнуть проблемы с отсутствием пакета «libwebkitgtk-1.0-0». Решить ее достаточно просто с помощью последовательного ввода команд в терминал «apt-get install libwebkitgtk-1.0-0» и «apt-get -f install».Рис.4 Установка на Ubuntu Бесплатная
консультация
экспертаНаталья Севорина Консультант-аналитик 1С Спасибо за Ваше обращение! Специалист 1С свяжется с вами в течение 15 минут.

Настройка 1С и ключей лицензии на Linux

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

Последняя команда выполняется продолжительное время, поэтому придется подождать. После выполнения всего перечня команд, в каталоге «/opt/1C/» появится необходимое программное обеспечение.

Рис.5 ПО установлено

В том случае, если вам нужно установить аппаратные ключи защиты HASP, скачайте дистрибутив и установите его. Для этого воспользуйтесь терминалом и введите последовательно следующие команды:

Создание базы 1С

Для работы в 1С нам необходима информационная база. Для ее создания придется научиться работать с кластером серверов 1С на Linux. И для начала запустим его с помощью команды:

  • «/opt/1C/v8.3/i386/ras —daemon cluster».

Для создания базы данных нам требуется идентификатор кластера. Его можно получить, введя команду:

  • «/opt/1C/v8.3/i386/rac cluster list».

Проверить перечень созданных баз можно командой:

  • «/opt/1C/v8.3/i386/rac infobase —cluster=ef89b672-c6a6-11e4-ea91-0800274e0291 summary list».

Для создания новой базы данных необходимо ввести довольно большую команду:

На эту команду должен быть получен ответ в виде идентификатора новой базы данных 1С.

Теперь можно подключиться к созданной базе 1С, указав имя сервера и базы данных.

Рис.6 Подключение к созданной базе 1С

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

Имеется сервер с Linux на борту, необходима установка сервера 1С и PostgreSQL, свежих версий.

Данная запись написана уже давно, во времена Ubuntu 16.04, технологической платформы 1С:Предприятия 8.3.10 и PostgreSQL 9.4. С выходом новых релизов обновляется, и является пособием для установки актуальных версий. Выявленные особенности сочетания дистрибутивов описаны отдельно.

Задача

Есть сервер с Ubuntu(Debian) на борту, необходимо установить и настроить для совместной работы сервер 1С:Предприятие 8.3 и PosgreSQL

Решение

Самым первым делом устанавливаем локализацию, сервер 1С работает с локализацией ru_RU.UTF8, соответственно PostgreSQL нужен с ней же. PostgreSQL создает кластер с локализацией по умолчанию ОС, если будет указана отличная локализация, то сервевер 1С и PostgreSQL не встретятся.

# locale-gen en_US # locale-gen ru_RU # update-locale LANG=ru_RU.UTF8

Или воспользоваться утилитой с псевдо-графическим интерфейсом, которая делает все тоже самое

# dpkg-reconfigure locales

В псевдо-графическом интерфейсе необходимо проверить правильность выбранных вариантов и ответить утвердительно.

Для применения изменений необходимо перезагрузить систему.

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

Предварительно установим необходимые пакеты

# apt install imagemagick ttf-mscorefonts-instal

Для получения дистрибутива сервера 1С:Предприятие необходимо перейти на https://releases.1c.ru/project/Platform и выбрать необходимый релиз с необходимой разрядностью. В моем случае актуальный релиз. Далее по тексту, вместо релиза буду указывать x.x.xx-xxxx.

С установкой cсервера, как правило проблем нет, просто последовательно устанавливаем пакеты

# dpkg -i 1c-enterprise83-common_x.x.xx-xxxx_amd64.deb # dpkg -i 1c-enterprise83-server_x.x.xx-xxxx_amd64.deb # dpkg -i 1c-enterprise83-ws_x.x.xx-xxxx_amd64.deb

Если вдруг пакеты не установились из-за неудовлетворенных зависимостей, то воспользуемся командой

# apt -f install

в итоге станет все хорошо, если хорошо не стало, то читаем выхлоп и правим зависимости. У меня проблем не возникло.

На этом этапе уже можно добавить сервер в консоль серверов и он должен быть виден.

Для запуска, перезапуска, остановки службы сервера 1С:Предприятие можно воспользоваться командами:

# /etc/init.d/srv1cv83 start # /etc/init.d/srv1cv83 restart # /etc/init.d/srv1cv83 stop

Если необходимо установить драйвер HASP, то прочитать как это делается можно в статье 1С. Установка 1С:Предприятие 8.3 на Linux.

Установка PostgreSQL

Фирма 1С распространяет специально обученный дистрибутив PostgreSQL, который отличается от «стандартного» наложенным патчем. При желании можно взять «стандартный» PostgreSQL, пропатчить его и собрать.

Получение дистрибутива

Для получения дистрибутива необходимо перейти на https://releases.1c.ru/project/AddCompPostgre и выбрать необходимый релиз с необходимой разрядностью. В моем случае необходимо было установить релиз 11.5, на нем и буду проводить дальнейшее описание.

Кроме дистрибутива необходимо обратить внимание на раздел Особенности релиза, в нем описано:

  • C какой версисей платформы реализована поддержка и проводилось нагрузочное тестироввние;
  • Список поддерживаемых дистрибутивов Linux и что необходимо выполнить до установки.

Для Ubuntu 16.04 и старше указано, что необходимо предварительно установить пакеты libicu55 и postgresql-common.

Ранее необходимо было искать недостающие пакеты по репозиториям, скачивать и устанавливать. Теперь же в нижней части страницы с релизами есть раздел . В разделе выложены необходимые пакеты для удовлетворения зависимостей дистрибутива. Например для Ubuntu Server 20.04, к PostgreSQL 11.5 архив содержит пакеты:

Установка

Пакет postgresql-common я установил из репозитория

# apt install postgresql-common

Пакет libicu55, установил из скачанного ахива дополлнительных материалов

# dpkg -i ./libicu55_55.1-7ubuntu0.4_amd64.deb

Далее необходимо установить пакеты скачанного дистрибутива PostgreSQL

# dpkg -i ./libpq5_11.5-19.1C_amd64.deb # dpkg -i ./postgresql-11_11.5-19.1C_amd64.deb # dpkg -i ./postgresql-client-11_11.5-19.1C_amd64.deb

Теперь все установилось без проблем, но Postgres после этого автоматически не запускается, а предлагает это выполнить вручную. Запуск проиходит без проблем.

# pg_ctlcluster 11 main start

Теперь необходимо зафиксировать установленные вручную пакеты, иначе при первом же обновлении они будут заменены пакетами из репозитория

# apt-mark hold libpq5 postgresql-11 postgresql-client-11

Настройка

При установке автоматически создается кластер main, необходимо только произвести некоторые настройки. Для возможности подключения открываем файл /etc/postgresql/11.6/main/pg_hba.conf

# nano /etc/postgresql/11/main/pg_hba.conf

находим строку

local all postgres peer

и изменяем на peer на trust

local all postgres trust

Далее сменим пароль для пользователя postgres, от которого будет происходить подключение к СУБД

# psql -U postgres -d template1 -c «ALTER USER postgres PASSWORD ‘Password'»

вместо Password пишем необходимый пароль.

Остается перезапустить службу, и можно подключиться к серверу PostgreSQL средствами pgAdmin.

Для запуска, перезапуска, остановки службы сервера PostgreSQL можно воспользоваться командами:

# /etc/init.d/postgresql start # /etc/init.d/postgresql restart # /etc/init.d/postgresql stop

Если Вы все сделали и сервер так и не заработал, то первым делом необходимо проверить локализацию. Если установлена не та локализация, то необходимо пересоздать кластер, команды и результат выполнения ниже

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

См. также

  • Краткая инструкция для установки клиента 1С:Предприятие 8.3 вынесена на отдельную страницу.
  • Инструкция по установке сервера 1С:Предприятие 8.x.
  • Сервер удалённого администрирования (RAS) 1С:Предприятие 8.3

Для установки на СПТ используйте специальную сертифицированную версию, полученную от представителей 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 это делать не нужно):

Также в файле /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:

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

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

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

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

Есть два пути решения.
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 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

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

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

Примечание: Сотрудники компаний, занимающихся сопровождением 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. и создать конфиг хоста в апаче.

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

На 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.

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) и укажите его в конфигурации.

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

{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 ПО уровня предприятия

1C • 1C 7.7 • AnyDesk • Api.php • BricsCAD • Chromium-gost • Cisco Anyconnect VPN Client • Citrix Client • Citrix XenServer • DB2 • Dr.Web • DraftSight • Dropbox • Enterprise Software • Hyper-V • Kaspersky Endpoint Security • Lotus Domino • Lotus Notes • MSSQL • Monit • Nuxeo • OpenMeetings • OracleALS40 • OwnCloud9 • PVE • SAP GUI for Java • SAP R3 • SCOM • SecureCRT • Skype • Skype/isolation • Theme-mate-windows • TrueConf • Vargus • ViPNet CSP • ViPNet Coordinator • ViPNet Coordinator/СПТ7 • Vibe • Viber • VipNet Client • VirtualBox • Winbox • Yandex.Disk • Zimbra • Zoom • АЦК Финансы • Антивирус Касперского • Битрих24 • ГОСТ в OpenSSL • Континент-АП • КриптоПро • Лисси-Софт • Совместимость программного обеспечения • СправкиБК • Спутник Браузер • ТамТам • Установка VMware View Client • ЭП • Яндекс Браузер

Обновлено: 25.09.2020 Опубликовано: 04.02.2020

Можно значительно сократить затраты на программное обеспечение, установив сервер 1С на Linux. В данной инструкции мы рассмотрим процесс настройки сервера 1C 8.3 на Ubuntu 18.04 с сервером баз данных (не файловый вариант). В качестве СУБД мы будем использовать PostgreSQL (на примере версий 9.6 и 10).

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

Настройка брандмауэра

Для корректной работы сервера, необходимо открыть порты:

  • 1540 и 1541 для сервера 1С.
  • 1560 — запросы к базе данных.

По умолчанию, в Ubuntu действует разрешающая политика и настройка брандмауэра не требуется. В противном случае, вводим команды:

iptables -I INPUT 1 -p tcp —dport 1540:1541 -j ACCEPT

iptables -I INPUT 1 -p tcp —dport 1560 -j ACCEPT

И сохраняем правило одним из приемлемых способов.

Установка PostgreSQL

Как было сказано выше, мы задействуем СУБД PostgreSQL. Для 1С требуется специальная сборка postgresql, которая может быть установлена из специального дистрибутива или от поставщика 1С. Рассмотрим установку как версии 9.6, так и 10.

Подготовка к установке СУБД

Настраиваем локаль, введя команду:

dpkg-reconfigure locales

В открывшемся окне выбираем локаль ru_RU.UTF-8 UTF-8:

Нажимаем OK. В следующем окне также выбираем ru_RU.UTF-8:

… и нажимаем OK.

* Если мы устанавливали русскую версию Linux, возможно, данные настройки уже будут выставлены. Так или иначе, стоит в этом убедиться.

Установка PostgreSQL 9.6 из репозитория

PostgreSQL 9.6 для 1С можно установить из репозитория. Для начала, добавим его:

echo «deb http://1c.postgrespro.ru/pg1c-9.6/ubuntu/ $(lsb_release -cs) main» > /etc/apt/sources.list.d/postgrespro-1c.list

Установим цифровую подпись для репозитория:

wget —no-verbose -O — http://1c.postgrespro.ru/pg1c-9.6/keys/GPG-KEY-POSTGRESPRO | apt-key add —

Обновляем списки пакетов:

apt-get update

Устанавливаем библиотеку libpq5 версии 9.6, собранной для postgresql под 1С:

apt-get install libpq5=9.6.*.1C.bionic

Выполняем установку самого PostgreSQL:

apt-get install postgresql-pro-1c-9.6

Разрешаем автозапуск сервиса баз данных и стартуем его:

systemctl enable postgresql —now

Задаем пароль для пользователя postgres:

sudo -u postgres psql -U postgres -d template1 -c «ALTER USER postgres PASSWORD ‘password'»

* данную команду мы запускаем под пользователем postgres; мы задаем пароль password для postgresql-пользователя postgres.

Установка PostgreSQL 10 от 1С

Сначала устанавливаем компоненты, необходимые для установки СУБД из пакетов.

wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb

dpkg -i libicu55_55.1-7_amd64.deb

* libicu55 — Unicode-компоненты для интернационализации.

Теперь устанавливаем postgresql-common:

apt-get install postgresql-common

* postgresql-common позволяет одновременную установку нескольких версий PostgreSQL.

Переходим к установки самой СУБД. 10-я версия PostgreSQL может быть установлена из дистрибутива, полученного от 1С (в личном кабинете или от поставщика). Архив с дистрибутивом postgresql, в свою очередь, содержит архивы под различные операционные системы — нам нужен файл с окончанием в названии …amd64_deb.tar.bz2

* в данном примере взят файл для 64-х разрядной версии операционной системы. Пакет deb (для систем на базе Debian).

Копируем данный файл на сервер (например, с помощью программы WinSCP) и распаковываем его:

tar jxvf PostgreSQL_10.10-4.1C_postgresql_10.10_4.1C_amd64_deb.tar.bz2

* где имя PostgreSQL_10.10-4.1C_postgresql_10.10_4.1C будет зависеть от версии устанавливаемого Postgresql.

Выполним установку пакетов из папки …amd64_deb…:

dpkg -i postgresql-10.10-4.1C_amd64_deb/*.deb

Инициализируем СУБД:

sudo -u postgres /usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main —locale=ru_RU.UTF-8

* при инициализации для нас важно задать русскую локаль. В противном случае мы можем получить ошибку «Порядок сортировки не поддерживается базой данных».

Разрешаем автозапуск сервиса баз данных и перезапускаем его:

systemctl enable postgresql

systemctl restart postgresql

Задаем пароль для пользователя postgres:

sudo -u postgres psql -U postgres -d template1 -c «ALTER USER postgres PASSWORD ‘password'»

* данную команду мы запускаем под пользователем postgres; мы задаем пароль password для postgresql-пользователя postgres.

Блокировка обновлений PostgreSQL

Так как для 1С устанавливается специальная сборка СУБД, необходимо запретить ее обновление. В противном случае будет установлен обычныйpostgresql, что приведет к потери работоспособности сервера.

Смотрим версию установленного сервера баз данных:

dpkg -l | grep postgresql

Пример ответа:

ii postgresql-10 10.10-4.1C …
ii postgresql-client-10 10.10-4.1C …

И так, у нас установлена версия 10.10-4.1C. Вводим:

dpkg -l | grep 10.10-4.1C | awk -F’ ‘ ‘{print $2}’ | xargs apt-mark hold

* где 10.10-4.1C — версия установленного PostgreSQL. Команда apt-mark hold блокируем установку обновлений для пакетов версии 10.10-4.1C.

Также добавим:

apt-mark hold postgresql-common postgresql-client-common

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

Для установки сервера 1С необходимо сначала установить вспомогательные пакеты, затем сам сервис. Дистрибутив необходимо скачать с сайта 1С — личного кабинета, доступного по подписке.

И так, выполним установку следующих пакетов:

apt-get install imagemagick unixodbc ttf-mscorefonts-installer

* где:

  • imagemagick — набор программ для чтения и редактирования графических файлов.
  • unixodbc — диспетчер драйверов для ODBC.
  • ttf-mscorefonts-installer — набор шрифтов Microsoft.

В процессе установки система запросит принять лицензионное соглашение — выбираем Yes.

Копируем на сервер архив с дистрибутивом для 1С, который был загружен с сайта 1С или получен от поставщика. Распаковываем архив командой:

tar zxvf 8.3.16.1148_deb64.tar.gz

Устанавливаем все пакеты, которые находились в архиве командой:

dpkg -i 1c-enterprise*.deb

Разрешаем автозапуск сервиса 1С и стартуем его:

systemctl enable srv1cv83

systemctl start srv1cv83

Настройка кластера и клиента

На любой компьютер в сети установим толстый клиент 1С:Предприятие той же версии, что и сервер. Во время установки обязательно выбираем компонент Администрирование сервера 1С:Предприятие:

Устанавливаем клиента 1С. После установки в меню пуск находим ссылку Регистрация утилиты администрирования серверов (версия) и запускаем ее от имени администратора:

Теперь запускаем утилиту Администрирование серверов 1С Предприятия:

В открывшемся окне кликаем правой кнопкой мыши по Central 1C:Enterprise 8.3 servers — выбираем Создать — Центральный сервер 1С:Предприятие 8.3:

Пишем имя сервера 1С или его IP-адрес:

… и нажимаем OK. В панели управления появится подключение — переходим в раздел Кластеры — Локальный кластер — кликаем правой кнопкой по Информационные базы — выбираем Создать — Информационная база:

Заполняем параметры для создания новой базы:

* в данном примере нами были заполнены:

  • Имя — задаем произвольное имя для подключения к базе.
  • Сервер баз данных — имя или IP-адрес базы. Задаем localhost, так как в нашем случае сервер 1С и сервер баз данных находятся на одном сервере.
  • Тип СУБД — выбираем PostgreSQL.
  • База данных — имя базы данных.
  • Пользователь сервера БД — пользователь, под которым будет выполняться подключение к базе. В нашем примере postgres.
  • Пароль пользователя БД — пароль для базы, который мы задали после установки СУБД.
  • Создать базу данных в случае ее отсутствия — ставим галочку, чтобы база была создана.

Если мы получим ошибку Этот хост неизвестен:

… необходимо убедиться, что имя сервера разрешается в IP-адрес. Для этого необходимо его добавить в локальную DNS или файл hosts.

База должна создастся. Теперь запускаем 1С клиент и добавляем новую базу — при добавлении выбираем Добавление в список существующей информационной базы:

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

Нажимаем Далее и Готово. Запускаем конфигуратор, загружаем базу и пользуемся.

Миграция базы на PostgreSQL

В случае, если это не первая установка и у нас уже есть база, ее нужно перенести на новый сервер. Рассмотрим 2 варианта — база была на другом сервере PostgreSQL и универсальный (файловый вариант или другая СУБД).

С PostgreSQL на PostgreSQL

В данном случае процесс переноса заключается в создании дампа (backup) и его восстановления на новом сервере (restore). Необходимо учесть, что для корректного переноса данных, версии 1С должны совпадать.

Есть несколько инструментов по созданию резервных копий PostgreSQL и их восстановлению. Их описание выходит за рамки данной статьи — подробнее читайте инструкцию Резервное копирование PostgreSQL.

Универсальный способ миграции на PostgreSQL

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

Выбираем путь для сохранения файла. Ждем окончания выгрузки и переносим полученный файл на компьютер с толстым клиентом 1С (если для нового сервера мы используем другой компьютер с 1С).

Открываем конфигуратор для созданной в PostgreSQL базы — кликаем Администрирование — Загрузить информационную базу:

… и выбираем выгруженный ранее файл. Дожидаемся его загрузки — система потребует перезапустить 1С — соглашаемся. Ждем новой загрузки. После можно пользоваться базой 1С на новом сервере.

Веб-публикации

Сервер 1С поддерживает возможность веб-публикаций баз 1С. Это дает возможность открывать программу в браузере или мобильном приложении. В Linux данные публикации осуществляются с помощью Apache.

Установка и запуск Apache

Первым делом, устанавливаем веб-сервер apache:

apt-get install apache2

Разрешаем автозапуск веб-сервера и стартуем сам сервис:

systemctl enable apache2

systemctl start apache2

Открываем браузер и переходим по адресу http://<IP-адрес сервера 1С> — мы должны увидеть стартовую страницу Apache:

Публикация 1С на веб-сервере

Публикация базы выполняется с помощью скрипта webinst, который устанавливается с сервером. Для простоты, мы опубликуем базу в корневую директорию /var/www/html, но при желании, можно настроить виртуальные домены.

И так, создадим каталог, в который опубликуем нашу базу:

mkdir /var/www/html/test

Переходим в каталог с установленным 1С:

cd /opt/1C/v8.3/x86_64/

Заускаем скрипт для публикации базы:

./webinst -apache24 -wsdir test -dir /var/www/html/test -connstr «Srvr=192.168.1.11;Ref=test;» -confPath /etc/apache2/apache2.conf

* где apache24 — версия установленного apache; test — имя нашей базы, которую мы создали ранее; /var/www/html/test — путь до каталога на сервере, в котором будет опубликована база; 192.168.1.11 — IP-адрес сервера 1С; Ref=test — имя базы в СУБД; /etc/apache2/apache2.conf — путь до конфигурационного файла apache.

Мы должны увидеть: