Установка платформы 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, необходимо, чтобы у него был доступ к скрипту, когда добавите его в планировщик.