Установка платформы 1С на сервер Ubuntu 20.04 – ПЛАНЕТА ИТ
Найти:
Установка платформы 1С на сервер Ubuntu 20.04

Для этого нам надо установить дополнительные пакеты в систему, которые находятся в разделах системного репозитория contrib и non-free. Их нужно добавить в конфиг репозиториев Ubuntu.

Для этого редактируем файл /etc/apt/sources.list и приводим его примерно к следующему виду:

deb http://mirror.yandex.ru/ubuntu focal multiverse
deb http://mirror.yandex.ru/ubuntu focal-updates multiverse
deb http://mirror.yandex.ru/ubuntu focal-backports main restricted universe multiverse
deb http://mirror.yandex.ru/ubuntu focal-security main restricted
deb http://mirror.yandex.ru/ubuntu focal-security universe
deb http://mirror.yandex.ru/ubuntu focal-security multiverse

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

# apt update

Устанавливаем нужные для работы 1С в linux пакеты. Начнем со шрифтов mscorefonts.

# apt install ttf-mscorefonts-installer

Подключим репозиторий от Debian 10 для установки пакета libenchant1c2a, который нужен для установки сервера 1С. Без него получите ошибку примерно следующего содержания:

Не удалось установить пакеты, требуемые для работы. Чтобы установка платформы «1С:Предприятие» завершилась успешно, необходимо самостоятельно установить отсутствующие пакеты с помощью пакетного менеджера операционной системы и заново запустить установку платформы. Отсутствующие пакеты приведены ниже и их можно скопировать в буфер обмена:
libenchant1c2a gstreamer1.0-plugins-bad libegl1-mesa

# echo "deb http://mirror.yandex.ru/debian buster main" > /etc/apt/sources.list.d/buster.list
# apt update
# apt install imagemagick unixodbc sudo curl libenchant1c2a

Следующий важный этап подготовки к установке сервера 1С — настройка локали.

# dpkg-reconfigure locales

Нам нужно выбрать ru_RU.UTF-8 UTF-8. Так же убедитесь на всякий случай, что en_US.UTF-8 тоже выбрана. В дефолте так и должно быть, но я сталкивался с ситуациями, когда эту локаль тоже приходилось добавлять.

По умолчанию выбираем ее же — ru_RU. После того, как вы разлогинитесь из системы и зайдёте снова, у вас в консоли будет русский язык. Немного непривычно с ним работать, но придется потерпеть это неудобство. Не забудьте перезайти. Если этого не сделать, то в процессе создания базы 1С получите ошибку.

Скачиваем дистрибутив сервера с портала 1С. Для этого логинимся под действующей учетной записью на https://releases.1c.ru и скачиваем файл Технологическая платформа 1С:Предприятия (64-bit) для Linux или 32-bit

Распаковываем архив и начинаем установку платформы

# chmod +x setup-full-8.3.22.1851-x86_64.run
# ./setup-full-8.3.22.1851-x86_64.run --mode unattended --enable-components server,ws

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

ИдентификаторОписание
additional_admin_functionsУстановить утилиту административной консоли (см. здесь).
client_fullУстановить толстый клиент и возможность работы в конфигураторе.
client_thinУстановить тонкий клиент (без возможности работы с файловым вариантом информационной базы).
client_thin_fibУстановить тонкий клиент, который позволяет работать с любым вариантом информационной базы.
config_storage_serverУстановить сервер хранилища конфигураций.
integrity_monitoringУстановить утилиту контроля целостности (см. здесь).
liberica_jreУстановить Java Runtime Environment (JRE).
serverУстановить кластер серверов «1С:Предприятия».
server_adminУстановить сервер администрирования кластера серверов «1С:Предприятия» ((см. здесь).
wsУстановить модули расширения веб-сервера.
Установить интерфейс приложения на языке, соответствующего указанному идентификатору:
arАрабский
azАзербайджанский
bgБолгарский
deНемецкий
elГреческий
esИспанский
frФранцузский
huВенгерский
hyАрмянский
itИтальянский
kaГрузинский
kkКазахский
ltЛитовский
lvЛатышский
plПольский
roРумынский
ruРусский
tkТуркменский
trТурецкий
ukУкраинский
viВьетнамский
zhКитайский

Регистрируем unit systemd для управления службой 1С:

# systemctl link /opt/1cv8/x86_64/8.3.22.1851/srv1cv8-8.3.22.1851@.service

Запускаем Сервер 1С и сразу добавляем в автозагрузку:

# systemctl start srv1cv8-8.3.22.1851@.default
# systemctl enable srv1cv8-8.3.22.1851@.service

Проверим, все ли службы запустились:

# netstat -tulnp | grep "rphost\|ragent\|rmngr"

Если у вас включен Firewall на сервере, не забудьте открыть указанные порты.

На этом установка самого Сервера 1С закончена. Переходим к установке и настройке базы PostgreSQL для него.

Установка PostgreSQL

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

  • От самой 1С.
  • От компании PostgreSQL Pro

Я использую от Postgresql Pro. Эта компания активно участвует в разработке самого движка БД, так что компетенций у нее достаточно. Есть мнение, что эти сборки лучше, чем от 1С. К тому же в последних версиях, я заметил, что эти сборки автоматически настраивают конфиг postgresql под параметры памяти и процессоров вашего сервера. Не нужно это делать потом вручную.

Загрузить PostgreSQL Pro для 1С можно по ссылке — https://1c.postgres.ru Для этого ответьте на 3 вопроса установщика и в конце укажите вашу почту. На указанный адрес придёт инструкция по установке. Собственно инструкция по установке выглядит так:

Используйте инструкции для установки postgreSQL для 1с. Обратите внимание, что команды должны выполняться от пользователя с правами суперпользователя.

wget https://repo.postgrespro.ru/1c/1c-17/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh


Если наш продукт единственный Postgres на вашей машине и вы хотите
сразу получить готовую к употреблению базу:

apt-get install postgrespro-1c-17

Если у вас уже установлен другой Postgres и вы хотите чтобы он
продолжал работать параллельно (в том числе и для апгрейда с более
старой major-версии):

apt-get install postgrespro-1c-17-contrib
/opt/pgpro/1c-17/bin/pg-setup initdb
/opt/pgpro/1c-17/bin/pg-setup service enable
/opt/pgpro/1c-17/bin/pg-setup service start

База данных запустилась автоматически, добавляем её в автозагрузку:

# systemctl enable postgrespro-1c-17

Проверяем статус сервиса

# systemctl status postgrespro-1c-17

Настройка PostgreSQL для работы с 1С

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

# sudo -u postgres /usr/bin/psql -U postgres -c "alter user postgres with password 'postgres';"

Внесём некоторые изменения в конфигурацию postgresql. Она находится в файле /var/lib/pgpro/1c-17/data/postgresql.conf. Изменения некритичные и носят рекомендательный характер. Можете их не менять, если не хочется разбираться. 1С будет нормально работать и без них. Обратите внимание, что в этой сборке postgresql рекомендованные настройки, зависящие от ресурсов сервера, указаны в самом конце конфигурационного файла. Я предлагаю добавить или изменить следующие настройки:

# если сервер 1С установлен на этой же машине, то слушаем только localhost
listen_addresses = 'localhost'
# увеличиваем значение одновременных подключений
max_connections = 150

Перезапускаем postgresql

# systemctl restart postgrespro-1c-17

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

Установка и настройка HASP Licence manager

Для того, чтобы компьютеры могли получать лицензии по сети от сервера, куда вставлен usb ключ, на него надо установить и запустить HASP Licence manager. Для начала вставьте ключ в сервер или пробросьте в виртуальную машину гипервизора (proxmox умеет это делать) и проверьте, видит ли его система:

# lsusb | grep -i hasp

Вы должны увидеть устройство с именем наподобие Aladdin Knowledge Systems HASP copy protection dongle. Если его нет, то разбирайтесь с подключением и пробросом usb портов, если у вас это виртуальная машина. Одним из вариантов проброса hasp ключа по сети является использование usbipd-win.

Дальше идем на страницу https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/, выбираем свою версию системы и скачиваем файл:

Устанавливаем пакет haspd, но перед этим установим пару пакетов — make и libc6-i386, если они у вас отсутствуют:

# apt install make libc6-i386
# dpkg -i haspd_8.53-eter1ubuntu_amd64.deb

Если получите ошибку:
/etc/init.d/haspd: 24: SourceIfNotEmpty: not found
То у вас скорее всего пакет с ошибкой в systemd unit. Исправить ошибку очень просто. Открываем файл /etc/init.d/haspd и в 24 строке добавляем пропущенное равно = в указанном параметре. Должно быть вот так:

SourceIfNotEmpty=/etc/sysconfig/haspd

После этого перечитываем настройки systemd и запускаем службу haspd и добавляем в автозагрузку:

# systemctl daemon-reload

# systemctl start haspd
# systemctl enable haspd

Проверяем, запустился ли hasp:

# netstat -tulnp | grep hasp
tcp        0      0 0.0.0.0:1947            0.0.0.0:*               LISTEN      1330/hasplmd        
tcp6       0      0 :::1947                 :::*                    LISTEN      1330/hasplmd        
udp        0      0 0.0.0.0:1947            0.0.0.0:*                           1330/hasplmd        
udp6       0      0 :::1947                 :::*                                1330/hasplmd        

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

Резервное копирование баз 1С на postgresql

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

# sudo -u postgres psql -U postgres -l

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

# sudo -u postgres /usr/bin/pg_dump -U postgres buh30 | pigz > /mnt/backup/buh30.sql.gz

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

-- PostgreSQL database dump

а в конце:

-- PostgreSQL database dump complete

В будущем эта информация нам понадобится для мониторинга создания бэкапов и получения уведомления, если дамп не завершился корректно.

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

#!/bin/bash

BASES=("buh30" "zup31")
#BASES=`sudo -u postgres /usr/bin/psql -U postgres -l | grep "_buh\|_zup" | awk '{print $1}'`
DATA=`date +"%Y-%m-%d_%H-%M"`
LOGS=/var/lib/pgpro/service_logs
BACKUPDIR=/var/lib/pgpro/backup

for i in ${BASES[@]};
    do
    echo "`date +"%Y-%m-%d_%H-%M-%S"` Start backup $i" >> $LOGS/$DATA.log
    sudo -u postgres /usr/bin/pg_dump -U postgres $i | pigz > $BACKUPDIR/$DATA-$i.sql.gz
    echo "`date +"%Y-%m-%d_%H-%M-%S"` End backup $i" >> $LOGS/$DATA.log
    done

В скрипте предложены 2 варианта указания списка баз для бэкапа:

  • Последовательное перечисление.
  • Бэкап всех баз, что имеют в своем названии _zup или _buh.

Я обычно ставлю некоторые метки в именах баз, чтобы потом было проще формировать списки для бэкапа. Например, все тестовые базы можно помечать в имени _test — company_buh30_test и потом исключать из списка бэкапа все базы с дополнением _test в названии. Либо просто все рабочие базы сразу именовать с приставкой _buh или _zup и по этому признаку их выводить в список.

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

# mkdir -p /var/lib/pgpro/service_logs
# mkdir -p /var/lib/pgpro/backup

И еще важно учесть, что так как в скрипте мы запускаем команды от системного пользователя postgres, необходимо, чтобы у него был доступ к скрипту, когда добавите его в планировщик.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие статьи