Установка сервера 1С + PostgreSQL на Linux Ubuntu

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

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

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

Подготовка системы

Задаем имя сервера

Чтобы сервер 1С мог запуститься без ошибки, необходимо ему задать корректное имя:

hostnamectl set-hostname server1C.dmosk.ru

Если данное имя не зарегистрировано в DNS, прописываем соответствие в файле hosts:

vi /etc/hosts

192.168.1.11     server1C.dmosk.ru

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

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

  • 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

И сохраняем правила с помощью iptables-persistent:

apt install iptables-persistent

netfilter-persistent save

Установка PostgreSQL

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

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

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

dpkg-reconfigure locales

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

Настройка локали в Ubuntu

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

Настройка локали в Ubuntu

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

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

Дальшейшие наши действия зависят от выбранной версии PostgreSQL.

PostgreSQL Pro для 1С

Для работы 1С рекомендуется установить специальный выпуск PostgreSQL Pro. Она также может быть загружена и установлена бесплатно.

Устанавливаем gnupg2:

apt install gnupg2

* без данного пакета при попытке установить репозиторий мы получим ошибку:
E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
Error adding key.

Переходим на страницу 1c.postgres.ru — проходим 3 шага мастера:

Мастер для скачивания Postgresql Pro для 1С

Выбираем нужную версию Postgresql и Ubuntu.

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

Заполняем форму для получения Postgresql

На указанную почту придет инструкция по установке PostgreSQL.

Пример установки PostgreSQL Pro 15. Скачиваем скрипт для установки репозитория и запускаем его:

curl -sLO https://repo.postgrespro.ru/1c/1c-15/keys/pgpro-repo-add.sh

sh ./pgpro-repo-add.sh

Запускаем установку СУБД:

apt install postgrespro-1c-15

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

systemctl enable postgrespro-1c-15

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

systemctl stop postgrespro-1c-15

Удаляем содержимое каталога data:

rm -rf /var/lib/pgpro/1c-15/data/*

* в противном случае, при попытке инициализировать базу мы получим ошибку Data directory /var/lib/pgpro/1c-15/data is not empty!

Инициализируем базу:

/opt/pgpro/1c-15/bin/pg-setup initdb --tune=1c --locale=ru_RU.UTF-8

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

systemctl start postgrespro-1c-15

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

Устанавим пакет libssl:

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb

* если команда вернет ошибку, точное название для новой версии libssl смотрим, перейдя по ссылке.

dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.4_amd64.deb

Устанавливаем libllvm6.0:

apt install libllvm6.0

Распаковываем архив с postgresql:

tar jxvf postgresql_12.*.1C_amd64_deb.tar.bz2

Устанавливаем по очереди

dpkg -i postgresql-12.*.1C_amd64_deb/libpq5_12.*.1C_amd64.deb

dpkg -i postgresql-12.*.1C_amd64_deb/postgresql-client-12_12.*.1C_amd64.deb

dpkg -i postgresql-12.*.1C_amd64_deb/postgresql-12_12.*.1C_amd64.deb

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

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

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

Действия после установки postgres

Если мы установили PostgreSQL Pro версию, выполним только первую настройку (пароль).

Пароль для пользователя postgres

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

sudo -u postgres psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD 'password'"; history -d $((HISTCMD-1))

* данную команду мы запускаем под пользователем postgres; мы задаем пароль password для postgresql-пользователя postgres. Дополнительная команда history -d $((HISTCMD-1)) удалить из истории строку с паролем.

Остальные настройки выполняем для PostgreSQL не Pro версии.

Автозапуск

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

systemctl enable postgresql --now

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

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

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

dpkg -l | grep postgresql

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

ii  postgresql-12            12.10-4.1C ...
ii  postgresql-client-12     12.10-4.1C ...
...

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

dpkg -l | grep 12.10-4.1C | awk -F' ' '{print $2}' | xargs apt-mark hold

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

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

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

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

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

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

apt install imagemagick unixodbc ttf-mscorefonts-installer

* где:

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

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

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

mkdir 1c_install

Распаковываем архив в созданный каталог:

Распаковываем архив командой:

tar -zxf 8.3.25.1336.tar.gz -C 1c_install/

* где 8.3.25.1336 — версия 1С. В архиве пакеты deb (для Linux на основе Debian) для 64-х разрядной системы.

В зависимости от скачанного архива, команда будет отличаться. Например, для zip:

unzip deb64*.zip -d 1c_install/

Выполняем установку новой версии пакетов:

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

dpkg -i 1c_install/1c-enterprise*.deb

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

find /opt -name srv1cv8*

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

/opt/1cv8/x86_64/8.3.25.1336/srv1cv8-8.3.25.1336@.service

Копируем найденный юнит-файл в каталог /etc/systemd/system:

cp /opt/1cv8/x86_64/8.3.25.1336/srv1cv8-8.3.25.1336@.service /etc/systemd/system/srv1cv83.service

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

systemctl enable srv1cv83

systemctl start srv1cv83

Необходимо убедиться, что сервис запустился:

systemctl status srv1cv83

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

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

Выбираем компонент Администрирование сервера 1С:Предприятие

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

Запуск регистрации утилиты администрирования серверов

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

Запуск регистрации утилиты администрирование серверов 1С Предприятия

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

Подключаемся к серверу 1С в консоли управления сервером 1С

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

Прописываем настройки для подключения к серверу 1С

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

Создание новой информационной базы

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

Заполняем настройки для создания информационной базы

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

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

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

Ошибка «Этот хост неизвестен»

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

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

Добавляем существующую базу в 1С

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

Задаем настройки при создании новой информационной базы в 1С

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

HASP Licence manager

Если в сервер вставлен аппаратный ключ, необходимо установить HASP Licence manager, чтобы лицензии могли получать компьютеры по сети.

Проверяем, что наш сервер видит ключ:

lsusb | grep -i hasp

Мы должны увидеть что-то на подобие:

Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle

Устанавливаем необходимые пакеты:

apt install make libc6-i386

* где:

  • make — утилите, которая в нашем случае используется для компиляция исходного кода.
  • libc6-i386 — набор стандартных библиотек для С и математических вычислений.

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

mkdir /tmp/hasp ; cd /tmp/hasp

Переходим на страницу загрузки HASP для Ubuntu. Выбираем необходимую версию и копируем ссылки на 2 файла — haspd-modules_... и haspd_...

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

wget https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/22.04/haspd-modules_7.90-eter2ubuntu_amd64.deb

wget https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/22.04/haspd_7.90-eter2ubuntu_amd64.deb

* в моем примере загрузка выполнялась для Ubuntu 22.04.

Выполним установку скачанных пакетов командой:

dpkg -i haspd*.deb

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

systemctl enable haspd

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

systemctl start haspd

Проверяем, что он корректно стартовал и работает:

systemctl status haspd

Готово — наши компьютеры в локальной сети смогут получить лицензию.

Миграция базы на 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 install apache2

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

systemctl enable apache2

systemctl start apache2

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

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

netfilter-persistent save

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

Стартовая страница Apache

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

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

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

DBNAME=test

SERVER1C=192.168.1.11

* в нашем примере будет публиковаться база с именем test, которая находится на сервере с IP-адресом 192.168.1.11.

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

mkdir -p /var/www/html/$DBNAME

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

cd /opt/1cv8/x86_64/8.3.16.1148/

* где 8.3.16.1148 — версия установленной платформы.

Если мы не знаем, в каком каталоге находится рабочий экземпляр 1С, выполняем команду:

systemctl status srv1cv83

Мы увидим статус службы, а также пути до исполняемых файлов, например:

/opt/1cv8/x86_64/8.3.16.1148/ragent

Получается, что в нашем примере, рабочий каталог будет /opt/1cv8/x86_64/8.3.16.1148.

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

./webinst -apache24 -wsdir $DBNAME -dir /var/www/html/$DBNAME -connstr "Srvr=${SERVER1C};Ref=${DBNAME};" -confPath /etc/apache2/apache2.conf

* где:

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

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

Publication successful

... или:

Публикация выполнена

Перезапускаем апач:

systemctl restart apache2

Открываем браузер и переходим по адресу http://<IP-адрес сервера 1С>/test/, где test — каталог в каталоге /var/www/html, куда мы опубликовали базу.

Если мы хотим опубликовать другую базу, то находясь в каталоге 1С, вводим:

DBNAME=test2

mkdir -p /var/www/html/$DBNAME

./webinst -apache24 -wsdir $DBNAME -dir /var/www/html/$DBNAME -connstr "Srvr=${SERVER1C};Ref=${DBNAME};" -confPath /etc/apache2/apache2.conf

systemctl restart apache2

Обновление сервера 1С

Подготовимся к обновлению — скачаем новую версию дистрибутива сервера DEB нужной разрядности (как правило, 64 бит). Копируем архив на сервер.

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

export VER1C=8.3.25.1336

* в моем примере будет установлена версия 8.3.25.1336.

Остановим сервис 1С:

systemctl stop srv1cv83

Далее процедура обновления напоминает установку приложения.

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

mkdir 1c_update

распаковываем архив в созданный каталог:

tar -zxf deb64*.tar.gz -C 1c_update/

В зависимости от скачанного архива, команда будет отличаться. Например, для zip:

unzip deb64*.zip

Данная команда распакует все файлы в текущий каталог. Для удобства, переместим их в созданную папку:

mv 1c-enterprise*.deb 1c_update/

Выполняем установку новой версии пакетов:

dpkg -i 1c_update/1c-enterprise*.deb

Сервис 1С запускается с помощью systemd и название файла заканчивается на @.service, например.

Чтобы найти все файлы для запуска 1С через systemd, выполним команду:

find /opt -name srv1cv8*

В моем случае было несколько путей, в том числе, для установленной нами версии 8.3.25.1336:

/opt/1cv8/x86_64/8.3.25.1336/srv1cv8-8.3.25.1336@.service

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

Следующие несколько команд зависят от того, какой у нас файл.

а) Если для systemd.

Копируем юнит-файл в каталог /etc/systemd/system:

cp /opt/1cv8/x86_64/${VER1C}/srv1cv8-${VER1C}@.service /etc/systemd/system/srv1cv83.service

Перечитываем systemd-файл. Разрешаем автозапуск:

systemctl enable srv1cv83

б) Если старого типа (для init.d).

Удаляем симлинк, который ведет на старую версию файла:

rm -f /etc/init.d/srv1cv83

Создаем новый (путь до которого мы нашли командой find):

ln -s /opt/1cv8/x86_64/${VER1C}/srv1cv83 /etc/init.d/srv1cv83

Готово. Мы настроили сервис. Можно перейти к его запуску.

Следующие команды как для init.d, так и systemd.

Обновляем информацию о сервисе:

systemctl daemon-reload

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

systemctl start srv1cv83

Убедиться, что сервис запустился можно командой:

systemctl status srv1cv83

Также рекомендую удалить каталог с распакованными файлами, чтобы они нам не помешали при следующем обновлении:

rm -rf 1c_update 

# 1С # Ubuntu # Базы данных # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет