Установка и настройка 1С на Ubuntu с PostgreSQL
Популярность Linux в качестве системы для работы пользовательских сервисов набирает обороты. Я расскажу, как установить и настроить сервер 1С на Ubuntu с использованием БД PostgreSQL. Традиционно подобные установки принято делать на Windows и MSSQL сервере в качестве БД. Но по стоимости получаются существенные затраты, которые можно уменьшить, не сильно потеряв в функционале.
Содержание
Все дальнейшие действия я буду выполнять в Ubuntu 20.04 LTS. Если у вас еще нет своего сервера, то воспользуйтесь моим руководством по установке ubuntu server. Почему я выбрал именно эту систему можно узнать в моей статье с обзором и сравнением ubuntu.
Установка 1С:Предприятие на Ubuntu
Свою настройку сервера 1С на Linux начнём с установки 1С:Предприятие. Установочные пакеты можно загрузить с сайта https://releases.1c.ru. Для этого у вас должна быть активна учётная запись. В принципе, файлы можно скачать где-то в интернете и без неё, но так как сервер 1С нужно регулярно обновлять, без своей учётной записи будет неудобно. Загрузить нужно файл Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем.
Скопируйте файл на Ubuntu Server. Но перед тем, как начать установку 1С, выполним некоторые подготовительные действия в системе. Нам нужно установить шрифты mscorefonts.
sudo apt install ttf-mscorefonts-installer fontconfig
Во время установки шрифтов, идёт обращение к различным внешним серверам для загрузки файлов. Бывает так, что какое-то соединение отваливается по таймауту и не понятно, выполнилась ли установка шрифтов корректно. В этом случае установку mscorefonts можно перезапустить, чтобы получить гарантированно положительный результат:
sudo apt reinstall ttf-mscorefonts-installer
Проверить, всё ли прошло удачно, можно следующей командой:
sudo fc-cache -f -v
Установим еще несколько пакетов, которые нам пригодятся в дальнейшем:
# sudo apt install imagemagick curl
Для корректной работы сервера 1С на Ubuntu необходимо настроить кодировку локали на ru_RU.UTF-8 UTF-8. Делается это с помощью утилиты dpkg-reconfigure.
# sudo dpkg-reconfigure locales
Её же указываем в качестве Default. Перезайдите в систему, чтобы применилась новая локаль. Проверить, применилась ли русская локаль, можно просто запустив Midnight Commander. Всё управление будет на русском языке.
Дальше будем устанавливать сам сервер 1С. Для этого распакуйте загруженный ранее пакет.
mkdir 1csrv && mv deb64_8_3_19_1264.tar.gz 1csrv && cd 1csrv tar -xzvf deb64_8_3_19_1264.tar.gz
У вас должен быть стандартный набор пакетов:
Устанавливаем необходимые нам пакеты 1С сервера:
sudo dpkg -i 1c-enterprise-8.3.19.1264-common_8.3.19-1264_amd64.deb 1c-enterprise-8.3.19.1264-server_8.3.19-1264_amd64.deb 1c-enterprise-8.3.19.1264-ws_8.3.19-1264_amd64.deb
На момент моей установки, актуальная версия 1с была 8.3.19.1264. Не забудьте заменить её на свою. Копируем вручную конфиг для управления службой srv1cv83. Почему-то никто не удосужился написать юнит для systemd, что выглядит странно.
sudo ln -s /opt/1cv8/x86_64/8.3.19.1264/srv1cv83 /etc/init.d/srv1cv83 sudo systemctl daemon-reload
Запускаем сервер 1С и добавляем его в автозагрузку.
sudo systemctl start srv1cv83 sudo systemctl enable srv1cv83
Убедимся, что сервис успешно запущен:
sudo systemctl status srv1cv83
На всякий случай можно проверить, слушает ли служба tcp порты.
sudo apt install net-tools sudo netstat -tulnp
На вид всё в порядке. Сервер 1С успешно установлен на Ubuntu, сконфигурирован и запущен. Готов принимать подключения от клиентов. Далее необходимо заняться настройкой firewall. Так как я не знаю, используете ли вы его и какой конкретно, то не буду давать команд на управление правилами или отключение. Эта тема выходит за рамки данной статьи. Если делаете тестовую установку, то firewall можно просто отключить.
Установка PostgreSQL для 1С
Для работы с 1С лучше всего себя зарекомендовала сборка от компании PostgreSQL Pro, поэтому будем ставить именно её. На момент написания статьи, актуальной была версия PostgreSQL 13. Версия БД для 1С отличается от дефолтного дистрибутива наличием некоторых патчей, специфичных именно для приложения 1С.
Начинаем установку postgresql в ubuntu server. Первым делом подключим репозиторий.
curl -o apt-repo-add.sh https://repo.postgrespro.ru/pg1c-13/keys/apt-repo-add.sh sudo sh apt-repo-add.sh
Устанавливаем PostgreSQL для 1С сервера:
sudo apt-get install postgrespro-1c-13
Запускаем службу БД и убеждаемся, что всё в порядке.
sudo systemctl start postgrespro-1c-13 sudo systemctl enable postgrespro-1c-13 sudo systemctl status postgrespro-1c-13
Базовая установка сервера баз данных для 1С завершена. Переходим к небольшой настройке PostgreSQL. Нам необходимо задать пароль пользователя, под которым будет подключаться сервер 1С к БД.
sudo -u postgres /usr/bin/psql -U postgres -c "alter user postgres with password 'parol';"
postgres | пользователь БД, которого будем использовать в консоли 1С |
parol | пароль пользователя postgres |
Имеет смысл перенести хранение временной статистики базы данных с жесткого диска в оперативную память (tmpfs ). Это снизит расход ресурса ssd и немного увеличит производительность. Данное действие не костыль и не грязный хак. Подобную рекомендацию можно увидеть в документации для postgres от команды postgresql pro.
sudo mkdir /var/lib/pgpro/stats_temp sudo chown postgres:postgres /var/lib/pgpro/stats_temp
Добавляем tmpfs диск в /etc/fstab.
tmpfs /var/lib/pgpro/stats_temp tmpfs size=256M,uid=postgres,gid=postgres 0 0
Пробуем подмонтировать этот диск.
sudo mount /var/lib/pgpro/stats_temp
Проверяем, что получилось:
sudo df -h | grep stats_temp tmpfs 256M 0 256M 0% /var/lib/pgpro/stats_temp
Всё в порядке, tmpfs диск подключен. Теперь надо изменить параметр в конфигурационном файле postgresql, который отвечает за настройку каталога для хранения временной статистики. Открываем файл /var/lib/pgpro/1c-13/data/postgresql.conf и вносим изменение:
stats_temp_directory = '/var/lib/pgpro/stats_temp'
Перезапускаем службу postgrespro-1c-13 для того, чтобы применить изменение.
sudo systemctl restart postgrespro-1c-13
Можно проверить директорию stats_temp, чтобы убедиться в том, что статистика теперь хранится там:
sudo ls -l /var/lib/pgpro/stats_temp total 12 -rw------- 1 postgres postgres 1244 сен 8 12:24 db_0.stat -rw------- 1 postgres postgres 2129 сен 8 12:24 db_13416.stat -rw------- 1 postgres postgres 1151 сен 8 12:24 global.stat
На этом настройка PostgreSQL для работы с 1С завершена. Можно переходить к созданию баз и тестирования всей связки.
Как создать базу 1С в Ubuntu?
Для создания базы данных можно воспользоваться консолью управления сервером 1С, которая входит в состав Технологический платформы. Последняя, в свою очередь, есть только под Windows. Вам нужно опять зайти на https://releases.1c.ru и скачать технологическую платформу той же версии, что и сервер.
В этой платформе нас будет интересовать компонент Администрирование сервера 1С. Проверьте, чтобы он точно был выбран.
После установки, зарегистрируйте оснастку управления, запустив консоль с правами администратора. Там нужно выполнить команду:
"C:\Program Files\1cv8\8.3.19.1264\bin\RegMSC.cmd"
Так же, чтобы без ошибок взаимодействовать с сервером 1С на Ubuntu, необходимо обращаться к нему по имени, а не ip адресу. Для этого либо создайте dns запись для ubuntu server, либо добавьте статическую запись в файл hosts вашей системы. В моем случае сервер называется ubuntu и имеет ip адрес 10.20.1.16. Добавляю в C:\Windows\System32\drivers\etc\hosts запись:
10.20.1.16 ubuntu
Убедитесь, что вы можете нормально пинговать этот сервер, обращаясь к нему по имени. После этого в меню Пуск запустите оснастку Администрирование серверов 1С Предприятия x86-64. Ярлык будет в папке 1С Предприятие 8 (x86-64). В оснастке подключите ваш сервер 1С по имени компьютера.
Теперь можно создать первую информационную базу 1С. Перейдите в соответствующий раздел и добавьте.
Всё, новая база 1С на linux сервере создана. Теперь можно взять любую платформу и подключиться. Для этого у вас должна быть соответствующая клиентская лицензия на рабочем месте.
На этом базовая настройка сервера 1С и базы данных Postgresql на Ubuntu Server закончена. Можно создавать базы и подключаться пользователям для работы. Далее я затрону еще несколько тем, которые могут быть актуальны для тех, кто будет использовать подобную связку.
Установка HASP Licence manager в Ubuntu
В последнее время преимущественно используются программные лицензии 1С. Аппаратные в основном остались там, где ключи приобретались в прошлом. Тем не менее, в рамках данной статьи имеет смысл рассмотреть установку и настройку HASP Licence manager на Ubuntu для поддержки лицензионных ключей 1С на USB токенах.
Первым делом воткните usb ключ в сервер или пробросьте в виртуальную машину, если сервер 1С работает на ней. И посмотрите, появился ли он в системе:
sudo lsusb | grep -i hasp
У вас будет устройство, где в имени присутствует упоминание Alladin или HASP dongle. Если его нет, то дальнейшие настройки не имеют смысла. По какой-то причине, система не видит воткнутый ключ. Надо с этим разбираться.
Загрузите пакеты вот из этого репозитория: https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/18.04/ Не обращайте внимания, что версия Ubuntu не совпадает. Это не критично.
wget https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/18.04/haspd-modules_7.90-eter2ubuntu_amd64.deb wget https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/18.04/haspd_7.90-eter2ubuntu_amd64.deb
Установите эти пакеты и парочку дополнительных, от которых они зависят.
sudo apt install make libc6-i386 sudo dpkg -i haspd*.deb
Запускаем сервис haspd и сразу проверяем, запустился ли он и слушает ли рабочие tcp порты.
sudo systemctl start haspd sudo netstat -tulnp | grep hasp
HASP заработал и готов обслуживать клиентов, выдавать лицензии. В завершении настройки, добавим его в автозагрузку системы:
sudo systemctl enable haspd
На этом настройка hasp в ubuntu завершена. Переходим к следующему разделу.
Настройка бэкапа баз 1С в Ubuntu
Рассмотрим важную часть работы с сервером 1С — бэкап баз. В общем случае его можно делать с помощью обычных sql дампов, которые можно снимать утилитой pg_dump, входящей в состав postgresql.
В предыдущем разделе мы создали тестовую базу данных basa1. Посмотрим, появилась ли она в списке баз postgresql:
sudo -u postgres psql -U postgres -l
Выполним бэкап этой базы 1С с помощью pg_dump. И сразу же сожмём его современным архиватором zstd, предварительно его установив.
sudo apt install zstd sudo mkdir /mnt/backup sudo -u postgres /usr/bin/pg_dump -U postgres basa1 | zstd > /mnt/backup/basa1.sql.zst
Для того, чтобы восстановить базу данных 1С из sql дампа, нужно воспользоваться стандартной процедурой загрузки данных в БД. Перед этим создадим еще одну базу, куда восстановим бэкап 1с.
sudo unzstd /mnt/backup/basa1.sql.zst sudo -u postgres /usr/bin/createdb --username postgres -T template0 basa1-restored sudo -u postgres /usr/bin/psql -U postgres basa1-restored < /mnt/backup/basa1.sql
Восстановление базы 1С из архива прошло успешно. Не забудьте настроить не только локальный бэкап баз 1С, но их их копирование на другое хранилище. Этот вопрос не будем разбирать в рамках данной статьи.
Регулярное обслуживание баз 1С
Рекомендуется регулярно выполнять как минимум две операции с базами 1С на сервере с PostgreSQL.
- Очистка базы данных с помощью vacuumdb.
- Перестроение индексов с помощью reindexdb.
Ничего сложного в данных операциях нет. Все выполняется штатными средствами postgresql в одну команду. Единственное, что нужно учесть — перестроение индексов ресурсоемкий процесс. Ко всему прочему он еще и длится долго. Так что выполнять операцию нужно только когда нет большой нагрузки на базу.
Чистка базы данных 1С средствами PostgreSQL:
sudo -u postgres /usr/bin/vacuumdb --full --analyze --username postgres --dbname basa1
Перестройка индексов:
sudo -u postgres /usr/bin/reindexdb --username postgres --dbname basa1
Для того, чтобы выполнять эти задания регулярно, добавьте их в crontab:
crontab -e
30 0 * * * sudo -u postgres /usr/bin/vacuumdb --full --analyze --username postgres --dbname basa1 30 1 * * * sudo -u postgres /usr/bin/reindexdb --username postgres --dbname baza1
Если баз несколько, добавьте задания для каждой или объедините все команды в один bash скрипт и добавьте его в cron, вместо кучи отдельных заданий.
Выгрузка баз 1С в dt из командной строки
Частенько бывает нужно сделать выгрузку базы 1С в dt файл. Это можно сделать прямо из консоли ubuntu server с помощью автономного сервера 1С. При этом даже пользователей не придётся выгонять из базы.
sudo /opt/1cv8/x86_64/8.3.19.1264/ibcmd infobase dump --db-server=localhost --dbms=postgresql --db-name=basa1 --db-user=postgres --db-pwd=parol /mnt/backup/basa1.dt
Так же через консоль можно загрузить данные в базу 1С из dt файла. К примеру, загрузим предыдущую выгрузку в новую базу — basa2:
sudo /opt/1cv8/x86_64/8.3.19.1264/ibcmd infobase create --db-server=localhost --dbms=postgresql --db-name=basa2 --db-user=postgres --db-pwd=parol --create-database --restore=/mnt/backup/basa1.dt
С помощью автономного сервера можно проверить базу 1С на ошибки. Опять же, прямо в консоли linux:
sudo /opt/1cv8/x86_64/8.3.19.1264/ibcmd infobase config check --db-server=localhost --dbms=postgresql --db-name=basa2 --db-user=postgres --db-pwd=parol
Все возможности автономного сервера можно посмотреть в руководстве администратора.
Публикация баз 1с в веб на Ubuntu
Завершая свою статью по настройке баз 1С в Ubuntu, покажу, как их опубликовать. Для этого нам надо установить web сервер Apache:
sudo apt install apache2
Создадим директорию веб сервера, где будет храниться конфигурация публикуемой базы:
sudo mkdir -p /var/www/basa1 sudo chown -R www-data:www-data /var/www/basa1
Публикуем базу 1С:
sudo /opt/1cv8/x86_64/8.3.19.1264/webinst -publish -apache24 -wsdir basa1 -dir /var/www/basa1 -connstr "Srvr=ubuntu;Ref=basa1;" -confpath /etc/apache2/apache2.conf
Перезапускаем веб сервер и добавляем в автозагрузку:
sudo systemctl restart apache2 sudo systemctl enable apache2
Открываем в браузере http://10.20.1.16/basa1/ Вы должны попасть в свою опубликованную базу 1С. Подключаться к ней можно как через браузер, так и платформу. В платформе при добавлении базы надо указать, что она на веб севере и ввести путь к нему.
Не забывайте про клиентские лицензии 1С на опубликованные базы. Они должны быть установлены на сервер, где выполнена публикация.
Заключение
Я подробно разобрал все этапы настройки сервера 1С на Ubuntu с использованием БД PostgreSQL. Получилось полностью законченное руководство для внедрения сервера в промышленную эксплуатацию. Да, конечно, при реальном использовании возникает масса дополнительных вопросов:
- Мониторинг работы сервера 1С и баз данных.
- Проверка бэкапов.
- Защита опубликованной базы и ограничения доступа к ней.
- Настройка доступа к базе 1С по https соединению.
Возможно со временем появится и эта информация. А пока прощаюсь. Жду ваших замечаний и комментариев.
Добрый день!
Делаю согласно статьи. Есть момент. Я скачал версию 1С «deb64_8_3_17_1851.tar» а убунта ubuntu-20.04.3-live-server-amd64
Там другие пути. Но подправил и вот что выходит в конце.
root@ubuntu:~# /opt/1c/v8.3/x86_64/webinst -publish -apache24 -wsdir basa1 -dir /var/www/1Cbase -connstr «Srvr=ubuntu;Ref=1Cbase;» -confpath /etc/apache2/apache2.conf
bash: /opt/1c/v8.3/x86_64/webinst: No such file or directory
root@ubuntu:~# grep -iRl «webinst» /opt
/opt/1C/v8.3/x86_64/webinst
/opt/1C/v8.3/x86_64/webinst_root.res
/opt/1C/v8.3/x86_64/webinst_ru.res
root@ubuntu:~#
Где я пропустил момент?
No such file or directory не может найти файл или директорию. C новыми версиями платформы директория установки поменялась /opt/1cv8/x86_64/8.3.1x.xxxx/
как сконфигурировать диски сервера БД, чтобы не терять в производительности. (разнести файлы на разные дисковые накопители, как это рекомендует msSql), или тут это не актуально.
Доброго времени суток. Не удаётся прикрутить репазиторий postgres «failed: name service not known»
Используйте инструкции для установки postgreSQL для 1с. Обратите внимание, что команды должны выполняться от пользователя с правами суперпользователя.
curl -o pgpro-repo-add.sh https://repo.postgrespro.ru/pg1c-14/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh
Если наш продукт единственный Postgres на вашей машине и вы хотите
сразу получить готовую к употреблению базу:
apt-get install postgrespro-1c-14
Если у вас уже установлен другой Postgres и вы хотите чтобы он
продолжал работать параллельно (в том числе и для апгрейда с более
старой major-версии):
apt-get install postgrespro-1c-14-contrib
/opt/pgpro/1c-14/bin/pg-setup initdb
/opt/pgpro/1c-14/bin/pg-setup service enable
/opt/pgpro/1c-14/bin/pg-setup service start
Вечер добрый.
Сервер на Ubuntu 22.04
Ставил с репозитория https://repo.postgrespro.ru/pg1c-14
После обновления с версии 14.2.1 на 14.3.1, терминал psql потерялся «psql: command not found»
Если ставить из общего репозитория тоже ругается на несоответствие версий.
Не подскажите, как корректно восстановить работу?
Спасибо за ваше время!
Ubuntu 20.04.4 — 🙂
Работает только с прямым указанием на каталог где находится, видимо после обновления сбились ассоциации, если я правильно выражаюсь.
sudo -u postgres /opt/pgpro/1c-14/bin/psql -U postgres -l
Добрый день. Как отключить запрос авторизации 1С при бэкапе с помощью ibcmd infobase dump? У вас про это не сказано, однако система просит ручной авторизации админа 1С, что не позволит включить команду в крон (