Эта статья про установку сервера 1С на ubuntu в качестве тестовой системы, с последующим возможным переводом на нее баз данных компании. Будут приведены сравнения производительности двух тестовых баз Гилева на одном гипервизоре Proxmox, но в разных операционках:
- Windows Server 2019 Standart + MSSQL 2019 Standart + 1C 8.3.18.1957
- Ubuntu server 22.04LTS + PosgreSQL + pqAdmin + 1C 8.3.22.1709
Перед прочтением рекомендую заварить себе чайку и приготовить что-нибудь вкусненькое, поехали.
Содержание
- Рекомендации от автора по подготовке сервера
- Параметры сервера
- Параметры виртуальной машины
- Установка Ubuntu server 22.04LTS
- Подготовка после установки
- Установка 1С
- Установка HASP
- Установка PostgreSQL
- Установка pqAdmin
- Установка консоли управления сервером 1С
- Подключение и создание баз
- Запуск диагностической базы Gilev для замера производительности и сравнение с таблицей значений на Windows сервере.
- Настройка резервного копирования баз
- Процедура восстановления базы из бэкапа
- Регулярное обслуживание баз 1С
- Публикация базы 1с на ВЭБ сервере
- Вывод
Рекомендации от автора по подготовке сервера
Само по себе решение в плане настроек достаточно не простое и существуют варианты когда сервер 1С может просто не заработать и придётся изобретать велосипед, ища и накатывая сначала работоспособную платформу, а поверх неё уже ту что нам нужно.
Но мы с вами ребята упертые и добьёмся своего. Настоятельно рекомендую ставить на гипервизоре(хотя многие из вас по старинке ставят на голое железо без прослоек, в надежде выжать всё из платформы - поверьте мне максимум, что вы потеряете это 10℅ производительности), что реально облегчит вам жизнь, чем именно спросите вы, перечислю:
1) Cнятие бэкапа целиком виртуальной машины без остановки её работы.
2) Клонирование и дедупликация дисков на другой гипервизор в кластере.
3) Можно делать Snapshotы и быстро откатывать систему.
4) Для бэкапов можно использовать абсолютно любой nas или облако при этом не нужно дополнительное ПО.
В качестве гипервизора автор использует Proxmox.
Параметры сервера
Дисковая подсистема raid1 m. 2 SSD 1TB.
Параметры виртуальной машины
Почему так мало памяти спросите вы меня, а для теста Гилева больше и не нужно.
Установка ОС
Кратко в скриншотах пробежимся по этапу установки системы
- Выбор языка
- Обновляем установщик
- Раскладку выбираем Русскую
- Выбираем стандартный установочный образ
- Настраиваем статический адрес
- Прокси не нужен
- Зеркало оставляем по умолчанию
- Настройка диска, выбираем расширенную настройку
- Выбираем free space и нажимаем Enter
Если у вас два диска и более можете создать софтовый raid, выбрав пункт "Create software RAID (md)"
- Выбираем добавить GPT партицию
- Не пишем объем а нажимаем Create, система по умолчанию использует все пространство.
- У вас должно получиться следующее
Предупреждение перед форматированием, выбираем продолжить
- Создание учетной записи в системе и задание имени сервера
- Выбираем установить SSH сервер
- На этом шаге ничего выбирать не нужно
- Ждем окончание установки
Все установка завершена, можно перезагружать машинку.
Обновление системы и установка ПО
Для начала повышаем права пользователя:
sudo -s
Обновление зависимостей пакетной базы и репозитория:
apt update
Обновление системы:
apt upgrade -y
Для работы нам потребуется, net-tools, mc, wget:
apt install -y net-tools mc wget
Установка 1С
Подготовительные мероприятия по установке дополнительных компонентов.
Установим libenchant1c2a, без этого компонента 1с не установится.
добавим репозиторий universe:
nano /etc/apt/sources.list
deb http://cz.archive.ubuntu.com/ubuntu focal main universe
CTRL+O , CTRL+X
Обновление зависимостей пакетной базы и репозитория:
apt update
Установка libenchant1c2a:
apt install libenchant1c2a
Установка набора программ для чтение и редактирования
apt install imagemagick
Установим диспетчер драйверов для ODBC
apt install unixodbc
Установим libgsf-1-114
apt install libgsf-1-114
Установим шрифты mscorefonts:
apt install ttf-mscorefonts-installer fontconfig
Проверим удачно ли прошла установка шрифтов:
fc-cache -f -v
Для корректной работы сервера 1С на Ubuntu необходимо настроить кодировку локали на ru_RU.UTF-8 UTF-8:
dpkg-reconfigure locales
Выбираем в списке нашу кодировку.
Создаем временную папку под скачиваемые архивы ПО:
mkdir /soft
Переходим в эту папку:
cd /soft
Права на папку:
chmod 777 /soft
Рекомендация: В тестовых целях использовать 32-битный дистрибутив, он со слов разработчиков свободно работает без серверной лицензии до 5-ти пользователей, но 1с-ники опять, что-то намудрили в платформе и у меня всё прекрасно работает на 64-х битной. Хотя к концу написания статьи сервер все таки стал ругаться на лицензию.
Скачиваем дистрибутив с сайта https://releases.1c.ru/ и с помощью winscp копируем на Сервер в папочку soft.
Распаковываем наш архив:
tar -xzvf server64_8_3_22_1709.tar.gz
Устанавливаем необходимые нам пакеты 1С сервера:
./setup-full-8.3.22.1709-x86_64.run --mode unattended --enable-components server,ws,server_admin
Мы устанавливаем кластер серверов 1С, сервер администрирования кластера и модули расширения веб-сервера в пакетном режиме.
- mode unattended - включает пакетный режим
- enable-components - служит для указания компонентов
- additional_admin_functions - установка утилиты административной консоли.
- client_full - установить толстый клиент.
- client_thin - установить тонкий клиент (без возможности работы с файловым вариантом информационной базы).
- client_thin_fib - установить тонкий клиент, который позволяет работать с любым вариантом информационной базы.
- config_storage_server - установить сервер хранилища конфигураций.
- integrity_monitoring - установить утилиту контроля целостности
- liberica_jre - установить Java Runtime Environment (JRE).
- server - установить кластер серверов
- server_admin - установить консоль администрирования кластера серверов.
- ws - требуется установить модули расширения веб-сервера
1C c версии 8.3.21 стала использовать systemd-сценарий запуска кластера серверов и сервера администрирования и находится в папке с платформой:
/opt/1cv8/x86_64/8.3.22.1709/srv1cv8-8.3.22.1709@.service
Установить его можно командой:
systemctl link /opt/1cv8/x86_64/8.3.22.1709/srv1cv8-8.3.22.1709@.service
Запускаем сервер 1С
systemctl start srv1cv8-8.3.22.1709@default.service
Добавляем в автозапуск
systemctl enable srv1cv8-8.3.22.1709@default.service
Проверяем работу сервера 1С:
systemctl status srv1cv8-8.3.22.1709@default.service
Проверяем, слушают ли системные процессы tcp порты:
netstat -tulnp
Сервер 1С успешно установлен и запущен.
Установка HASP
Вставляем usb ключ в сервер и настраиваем проброс в виртуальную машину. И посмотрим определился ли он в системе:
sudo lsusb | grep -i hasp
У вас будет устройство, где в имени присутствует Alladin или HASP dongle.
Загрузите пакеты вот из этого репозитория:
https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/22.04/
wget https://download.etersoft.ru/pub/Etersoft/HASP/stable/x86_64/Ubuntu/22.04/haspd_8.23-eter3ubuntu_amd64.deb
Установим пакет и парочку дополнительных, от которых они зависят:
apt install make libc6-i386
dpkg -i haspd*.deb
Запускаем сервис haspd и проверяем, запустился ли он и слушает tcp порты:
systemctl start haspd
netstat -tulnp | grep hasp
Добавим его в автозагрузку:
systemctl enable haspd
На этом настройка hasp завершена.
Установка PostgreSQL
Есть два варианта где можно взять адаптированный дистрибутив PostgreSQL для 1С:
- 1-й вариант скачать с официального сайта 1С https://releases.1c.ru/: https://releases.1c.ru/version_file?nick=AddCompPostgre&ver=14.5-3.1C&path=AddCompPostgre%5c14_5_3_1C%5cpostgresql_14.5_3.1C_amd64_deb.tar.bz2
- 2-й вариант скачать с сайта компании PostgresPRO https://1c.postgres.ru/, указав под какую платформу вам нужен и контактные данные. На почту моментально придет письмо с информацией о том как установить
Ниже опишу оба варианта установки:
1-й вариант.
Скачиваем наш архив:
Распаковываем архив:
tar -zxvf postgresql_14.5_3.1C_amd64_deb.tar.bz2
Устанавливаем пакет:
dpkg -i postgresql*.deb
2-й вариант.
Запустите скрипт для добавления ключа репозитория:
wget https://repo.postgrespro.ru/1c-15/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh
Устанавливаем PostgreSQL:
apt-get install postgrespro-1c-15
По просьбам трудящихся, чтобы вызывать бинарные файлы PostgreSQL без указания пути создадим необходимые символические ссылки:
/opt/pgpro/1c-15/bin/pg-wrapper links update
Стартуем службу:
service postgrespro-1c-15 start
Проверяем статус:
service postgrespro-1c-15 status
Зададим пароль пользователя postgres:
su postgres
psql -U postgres -c "alter user postgres with password 'Ваш_пароль';"
ALTER ROLE
Выходим:
exit
Установка закончена
Установка pqAdmin
pgAdmin4 – это веб-консоль администрирования и разработки с открытым исходным кодом для PostgreSQL и связанных с ней систем управления базами данных. Разработан на Python и jQuery, он поддерживает все функции, найденные в PostgreSQL. Можно использовать pgAdmin для разных целей – от написания базовых SQL-запросов до мониторинга ваших баз данных и настройки расширенных архитектур баз данных.
Перед установкой необходимо добавить репозиторий, для этого установим публичный ключ:
wget https://www.pgadmin.org/static/packages_pgadmin_org.pub
apt-key add packages_pgadmin_org.pub
Добавим в файл pgadmin4.list ссылку на репозиторий:
echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list
Обновим список зависимостей и пакетных баз:
apt update
Устанавливаем pgadmin4
apt install pgadmin4
Запустим начальную настройку:
/usr/pgadmin4/bin/setup-web.sh
Система попросит вас указать свой email и пароль для регистрации в системе для входа:
Creating configuration database…
NOTE: Configuring authentication for SERVER mode.
Enter the email address and password to use for the initial pgAdmin user account:
Email address: admin@company.ru
Password:
Retype password:
pgAdmin 4 - Application Initialisation
Creating storage and log directories…
We can now configure the Apache Web server for you. This involves enabling the wsgi module and configuring the pgAdmin 4 application to mount at /pgadmin4. Do you wish to continue (y/n)? y
The Apache web server is running and must be restarted for the pgAdmin 4 installation to complete. Continue (y/n)? y
Apache successfully restarted. You can now start using pgAdmin 4 in web mode at http://127.0.0.1/pgadmin4
Установка завершена и консоль pgadmin доступна по адресу:
http://Адрес сервера/pgadmin4
Можно управлять нашим Postgesql подключившись к нему
Установка консоли управления сервером 1С
Для того, чтобы установить консоль администратора необходимо скачать и установить технологическую платформу:
При установке выбрать пункт Администрирование сервера:
После установки, заходим в Меню пуск раскрыв папку с программой 1С:Предприятие увидим Регистрация утилиты администрирования серверов, правой кнопкой мышки выбираем дополнительно и перейти к расположению файла
Открывается место расположение файла, выбираем Регистрация утилиты администрирования серверов правой кнопкой Запуск от имени администратора
Произойдет регистрация DLL, можно запускать консоль администратора, она там же в Меню пуск.
Подключение и создание баз
Правой кнопкой по Central 1C:Enterprise 8.3 servers создать Центральный сервер, указываем имя сервера и нажимаем ок
Все можно управлять нашим сервером 1с
Запуск диагностической базы Gilev для замера производительности и сравнение с таблицей значений на Windows сервере.
У меня заранее подготовлен dt-шник с диагностической базой Гилева.
С помощью консоли администрирования 1с создаём базу и с помощью клиентской платформы входим в неё в режиме конфигуратор, делаем загрузку информационной базы.
Запускаем тест Гилева на Windows сервере с 1С и нажимаем кнопочку выполнить тест:
Запускаем тест Гилева на Linux сервере с 1С и нажимаем кнопочку выполнить тест:
Диагностика сообщит нам, что будет выполнен однопоточный тест на определение производительности нашего сервера и выведена сравнительная диаграмма.
Судя по тестам реализация сервера на Linux + PostgreSQL не уступает связке Windows + MSSQL в производительности(без тюнинга).
Настройка резервного копирования баз
Ниже покажу как делать резервное копирование и восстановление средствами PostgreSQL. Для этого создам скрипт:
nano /scripts/Backup_PostgreSQL
Наполняем его содержимым, добавляя комментарии:
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
#Остановка службы 1С
systemctl stop srv1cv8-8.3.22.1709@default.service
#Выгрузка дампа Наша_база в локальную папку
pg_dump -Upostgres -w -Ft -b -EUTF8 -v -f "/Backup/dumps/Наша_база_`date '+%d.%m.%y'`.psql" "Наша_база"
#Сжатие дампа Наша_база в локальной папке
bzip2 "/Backup/dumps/Наша_база_`date '+%d.%m.%y'`.psql"
#Запуск Службы 1С
systemctl start srv1cv8-8.3.22.1709@default.service
#Копирование сжатого дампа в каталог NFS сервера
cp "/Backup/dumps/Наша_база_`date '+%d.%m.%y'`.psql.bz2" "/NFS_Backup/"
# удаление дампа из локальной папки
rm -f "/Backup/dumps/Наша_база_`/bin/date '+%d.%m.%y'`.psql.bz2"
Где:
/Backup/dumps — это папка на сервере для выгрузки дампов баз.
/NFS_Backup — это каталог с примонтированным сетевым диском на NFS сервере, куда собственно и складываются ежедневные бэкапы баз.
Делаю скрипт исполняемым:
chmod +x /scripts/Backup_PostgreSQL
Добавляем правило в планировщик заданий Cron:
nano /etc/crontab ---- Онлайн конфигуратор Crontab https://crontab.guru/
Добавляю в самом низу строчку:
0 22 * * 1-5 root /scripts/Backup_PostgreSQL
Это строка означит, что скрипт, будет запускаться с правами root каждый день с понедельника по пятницу в 22:00.
Процедура восстановления базы из бэкапа:
Переходим в каталог с архивом:
cd /Каталог_с_бэкапом
Распаковываем архив:
bunzip2 Наша_база_21.11.22.psql.bz2
Получаем файл дамп базы Наша_база_21.11.22.psql
В консоли провожу смену пользователя на posgres:
su postgres
Подключаюсь к нашему серверу баз данных использую учетную запись postgres:
psql
Удаляю ту базу, бэкап которой я хочу восстановить:
DROP DATABASE "Наша_база";
Cоздаю пустую базу с таким же именем:
CREATE DATABASE "Наша_база";
Отключаемся от сервера баз данных:
\q
Выходим из под пользователя postgres:
exit
Заливаем дамп Наша_база_17.11.22.psql в базу zup:
pg_restore -Upostgres -d "Наша_база" -w -v "Наша_база_17.11.22.psql"
Всё.
Регулярное обслуживание баз 1С
Рекомендую еженедельно по выходным или ночью выполнять регламентные операции по обслуживанию баз данных 1С на сервере с PostgreSQL, операции:
- Очистка базы данных с помощью vacuumdb.
- Перестроение индексов с помощью reindexdb.
Операции выполняется штатными средствами postgresql, но нужно учитывать, что операции достаточно ресурсоемкие и в зависимости от размера баз данных может занять достаточно долго по времени.
1-я процедура: Чистка базы данных 1С средствами PostgreSQL
sudo -u postgres /usr/bin/vacuumdb --full --analyze --username postgres --dbname Название_базы
2-я процедура: Перестройка индексов
sudo -u postgres /usr/bin/reindexdb --username postgres --dbname Название_базы
Для автоматизации выполнения регламентных заданий в неурочное время настроим планировщик заданий Cron:
nano /etc/crontab --- онлайн конфигуратор crontab https://crontab.guru/
#Задание настроено по субботам в 0:30
30 0 * * 6 sudo -u postgres /usr/bin/vacuumdb --full --analyze --username postgres --dbname Название_базы
#Задание настроено по субботам в 2:30
30 2 * * 6 sudo -u postgres /usr/bin/reindexdb --username postgres --dbname Название_базы
Если баз несколько, добавьте задания для каждой или объедините все команды в один bash скрипт и добавьте его в cron, вместо кучи отдельных заданий.
Публикация базы 1с на ВЭБ сервере
Я стараюсь не публиковать базы на вэб сервере, но вам продемонстрирую Процедуру. Если вы не установили pgAdmin, то вэб сервер Apache у вас не инсталлирован, исправим это:
apt install apache2
Создаем директорию в корне веб сервера, где будет храниться конфигурация публикуемой базы:
mkdir -p /var/www/Название_базы
chown -R www-data:www-data /var/www/Название_базы
Публикуем базу 1С:
/opt/1cv8/x86_64/8.3.22.1709/webinst -publish -apache24 -wsdir Название_базы -dir /var/www/Название_базы -connstr "Srvr=Имя_сервера;Ref=Название_базы;" -confpath /etc/apache2/apache2.conf
Перезапускаем веб сервер и добавляем в автозагрузку:
systemctl restart apache2
systemctl enable apache2
Открываем в браузере http://ip_адрес/Название_базы/ Вы должны попасть в свою опубликованную базу 1С. Подключаться к ней можно как через браузер, так и платформу. В платформе при добавлении базы надо указать, что она на веб севере и ввести путь к нему.
Не забывайте про клиентские лицензии, они должны быть установлены на сервер, где выполнена публикация баз.
Вывод
Насколько видно из тестов в виртуальной среде производительность сборки сервера 1С на Linux заслуживает внимания и позволяет существенно сэкономить средства на внедрении или часть из них вложить в более производительный сервер.