Сервер 1С с БД Postgres на Linux
Привет, Хабр! К сожалению, с российского рынка уходят такие компании как Microsoft, SE. Но жизнь на этом не заканчивается и необходимо закрывать ниши, которые лишились привычных инструментов.
В этой статье я покажу, как настроить сервер 1С, базой данных Postgres и веб сервером Apache на одном компьютере с операционной системой Ubuntu Server 22.04 LTS. Если вы пользуетесь другим Debian-подобным или Red Hat-подобным дистрибутивом , то процесс установки ОС будет похожим, однако каждый дистрибутив имеет свои особенности.
Создаем загрузочную флешку
- Приходим на сайт https://ubuntu.com/download/server и скачиваем LTS релиз.
- Далее необходимо создать загрузочную флешку с помощью которой вы будете устанавливать ОС. Сделать это можно с помощью программы Rufus. Скачать её можно с сайта https://rufus.ie/ru/.
- После этого в биос необходимо выбрать загрузочную флешку.
Установка Ubuntu Server
На этом установка ОС завершена.
Подключение по SSH
Установка БД Postgres
Для начала необходимо установить русскую локаль.
sudo apt-get install locales # Запускаем утилиту sudo dpkg-reconfigure locales # Выбираем ru_RU.UTF-8 (392 номер) # Назначаем его в качестве главного sudo reboot
Заходим на https://1c.postgres.ru/, проходим регистрацию и получаем на почту инструкцию по установке.
# Добавляем репозитории wget https://repo.postgrespro.ru/1c-15/keys/pgpro-repo-add.sh sudo sh pgpro-repo-add.sh # Устанавливаем Postgres sudo apt-get install postgrespro-1c-15
Далее необходимо настроить службу.
# Удаляем базу по умолчанию sudo rm -rf /var/lib/pgpro/1c-15/data # Настраиваем Postgres /opt/pgpro/1c-15/bin/pg-setup initdb --tune=1c --locale=ru_RU.UTF-8 # Проверка статуса службы Postgres, подсказки должны быть на русском языке systemctl status postgrespro-1c-15
PostgreSQL+1C на Ubuntu Linux
Если установлена английская версия Ubuntu, то требуется переконфигурировать локали с помощью команды:
$ sudo dpkg-reconfigure locales
- Добавить репозиторий последней актуальной версии PSQL (на момент написания данной инструкции таковой является 15.4)
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' $ wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/null
$ sudo apt update && sudo apt upgrade
$ tar -xvf postgresql_15.1_4.1C_amd64_deb.tar.bz2 $ cd postgresql_15.1_4.1C_amd64_deb && sudo apt install ./* -y
$ sudo nano /etc/postgresql/15/main/postgresql.conf
Раскомментируем эту строчку и присваиваем ей следующее значение:
autovacuum = on autovacuum_max_workers = x # (где x — половина от количества ядер ЦП на сервере СУБД) autovacuum_vacuum_cost_delay = x # (x — пропорционально количеству количеству воркеров, т.е. если кол-во воркеров, например, 6 – увеличиваем значение по умолчанию в два раза) autovacuum_vacuum_scale_factor = 10 autovacuum_analyze_scale_factor = 0.5
Создаём отдельную директорию (например, /var/lib/postgesqldb ) и монтируем раздел нашего SSD-диска (в нашем случае — это /dev/sda2).
$ sudo systemctl stop postgresql $ sudo mkdir -p /var/lib/postgesqldb && sudo chown postgres:postgres /var/lib/postgresqldb && sudo mount /dev/sda2 /var/lib/postgresqldb
Находим строчку data_directory и заменяем значение на ‘/var/lib/postgesqldb’. После чего инициализируем там кластер PSQL:
И заодно добавим в fstab директорию для хранения баз, чтобы она не размонтировалась при следующем перезапуске. Для этого нужно зайти в blkid и найти UUID раздела.
И добавляем следующую строчку:
UUID=xxxx-xxxx-xxxxxx-xxx /var/lib/postgresqldb auto rw,user,auto 0 0
(Где иксы заменяем на UUID раздела, который нашли в blkid).
$ sudo nano /etc/postgresql/15/main/pg_hba.conf
host all all 192.168.89.0/24 md5
При необходимости открыть доступ к базе извне, вместо all all указываем базу данных и пользователя соответственно, а подсеть заменяем на 0.0.0.0/0.
$ sudo systemctl restart postgresql.service && sudo systemctl status postgresql.service
Если всё настроено правильно, то будет следующий вывод:
Рисунок 1 — Проверка работы службы PostgreSQL
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'postgrespwd';"
Вместо postgrespwd можем указать свой пароль.
Установка сервера 1С
- Скачиваем нужную нам версию сервера 1С на портале ИТС.
- Распаковываем с помощью tar архив и запускаем файл .run:
sudo ./setup-full-8.3.21.1393-x86_64.run
$ sudo useradd usr1cv8 -mp ‘password’
$ sudo nano /etc/systemd/system/1CServer.service [Unit] Description=1C Server agent After=network.target [Service] Restart=Always User=usr1cv8 ExecStart=/opt/1cv8/x86_64/8.3.21.1393/ragent [Install] WantedBy=multi-user.target
$ sudo systemctl daemon-reload $ sudo systemctl start 1CServer && sudo systemctl status 1CServer
Если всё настроено корректно, получим примерно такой вывод:
Рисунок 2 — Проверка работы службы 1C
Убедившись, что всё работает, устанавливаем службу:
$ sudo systemctl enable 1CServer
Подключение базы 1С
Создать базу 1С можно и в терминале Linux через команду, однако, для удобства, мы воспользуемся оснасткой администрирования сервера 1С, установленной на соседнюю машину на ОС Windows Server.
- Перед тем как присоединять базу, если компьютеры не объединены в домен Active Directory, рекомендуется внести имя сервера СУБД и его IP-адрес в «C:\Windows\System32\drivers\etc\hosts», иначе возможно получение ошибки “Этот хост неизвестен” в 1С.
- Не пытайтесь создать пустую базу в PSQL, а затем подключить её в оснастке 1С! Для PostgreSQL базы 1С не являются нормальными, поэтому все базы создаются средствами 1С, как описано ниже.
- Заходим в оснастку администрирования и добавляем Центральный Сервер 1С. В имени сервера вводим имя или IP-адрес сервера СУБД, на котором устанавливали 1С.
- Далее заходим в кластер и добавляем базу: Правой кнопкой мыши нажать на “Информационные базы (Далее ИБ)” > “Создать” > “ИБ”. Заполняем поля:
Рисунок 3 — Параметры информационной базы
Мы добавили ИБ для запуска, можно заходить в конфигуратор и загружать имеющую конфигурацию. Итак, структура готова к работе в 1С.
Нужна помощь? Администрирование linux-серверов и PostgreSQL мы осуществляем в рамках услуги администрирование серверов.
Поднимаем сервер 1С на UBUNTU и PostgreSQL за 20 минут
Рассматривать, как установить UBUNTU на сервер, тут нет никакого смысла, поэтому начнем непосредственно с установки нужных компонент для Postgresql и 1С сервер.
1. Первым делом на сервер под управлением OS UBUNTU я установил удаленный доступ через SSH. Сделать это очень легко, просто в терминале вводим команду sudo apt install openssh-server и затем добавим эту службу в автозагрузку командой sudo systemctl enable sshd.
Теперь мы можем удаленно подключиться к серверу через SSH клиент, например, такой, как PUTTY. Еще я использовал удобный файловый менеджер WinSCP, чтобы загрузить на сервер необходимые дистрибутивы с компьютера под управлением OS windows.
2. Скачиваем все необходимые дистрибутивы с официального сайта 1С, а именно дистрибутив патченной postgresql в моем случае(10.5) и дистрибутив Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем нужной версии.
Затем предварительно распаковав архивы, при помощи файлового менеджера перекачиваем их на наш сервер с Linux.
3. Приступим к установке Postgresql. Первым делом выполняем команду sudo apt update и затем sudo apt upgrade. Тем самым мы обновляем систему до актуального состояния.
Далее необходимо установить локаль системы, это необходимо для корректной работы Postgresql с базами 1С. Для этого выполним команду sudo dpkg-reconfigure locales .
Затем в открывшемся списке наводим курсор на локаль ru_RU.UTF-8 UTF-8 и нажимаем пробел. Далее наводим курсор на ОК и нажимаем ВВОД.
Теперь можем приступить к установке вспомогательных компонент для субд.
Первым делом нужно установить компоненту libssl1.0.
Для этого выполняем команды по очереди:
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5_amd64.deb
dpkg -i ./libssl1.0.0_1.0.2n-1ubuntu5_amd64.deb
Затем нужно установить компоненту libicu55, Для этого выполняем команды:
wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb
sudo dpkg -i libicu55_55.1-7_amd64.deb
Теперь еще установим компоненту postgresql-common при помощи команды sudo apt install postgresql-common.
4. Приступим к установке непосредственно субд. Для этого нужно перейти в директорию куда мы скинули распакованные архивы с дистрибутивами при помощи команды cd / в этой директории должно быть 3 файла, установим их строго в заданной последовательности (библиотека,клиент,сервер).
sudo dpkg -i libpq5_10.3-2.1C_amd64.deb
sudo dpkg -i postgresql-client-10_10.3-2.1C_amd64.deb
sudo dpkg -i postgresql-10_10.3-2.1C_amd64.deb
В результате должно появиться что-то подобное
Если видим такое сообщение, значит, все делали правильно и радуемся. Мы установили postgresql.
5. Теперь приступим к настройке Postgresql.
Установим пароль пользователя postgres. Для этого выполним команду sudo nano /etc/postgresql/10/main/pg_hba.conf.
Листаем файл вниз и находим строчку
local all postgres peer
local all postgres trust
Затем нажимаем Ctrl+X затем ставим Y и нажимаем ввод.
Кроме этого можно открыть файл sudo nano /etc/postgresql/10/main/postgresql.conf и проверяем в нем строку:
listen_addresses = ‘*’ это значит что субд будет обрабатывать запросы со всех ip адресов.
Затем также нажимаем Ctrl+X затем ставим Y и нажимаем ввод.
После необходимо перезапустить службу postgresql командой sudo service postgresql restart
Теперь у нас есть возможность поменять пароль суперпользователя postgres:
Выполним команду psql -U postgres -d template1 -c «ALTER USER postgres PASSWORD ‘Пароль'»
Затем снова открываем файл sudo nano/etc/postgresql/10/main/pg_hba.conf и меняем в нем строку:
local all postgres trust
local all postgres md5
В заключении еще раз перезапускаем сервер: sudo service postgresql restart
На этом настройка Postgresql закончена приступим к установке сервера 1С.
6. Установим необходимые компоненты:
sudo apt-get install imagemagick
sudo apt-get install unixodbc
sudo apt-get install ttf-mscorefonts-installer
sudo apt-get install libgsf-1-114
sudo apt-get update
7. Теперь переходим в директорию куда загрузили распакованный архив дистрибутива 1С сервера cd /
Там обычно 6 файлов, нужно их установить в строгой последовательности
sudo dpkg -i 1c-enterprise83-common_8.3.14-1694_amd64.deb
sudo dpkg -i 1c-enterprise83-common-nls_8.3.14-1694_amd64.deb
sudo dpkg -i 1c-enterprise83-server_8.3.14-1694_amd64.deb
sudo dpkg -i 1c-enterprise83-server-nls_8.3.14-1694_amd64.deb
sudo dpkg -i 1c-enterprise83-ws_8.3.14-1694_amd64.deb
sudo dpkg -i 1c-enterprise83-ws-nls_8.3.14-1694_amd64.deb
Пакеты с приставкой «-nls» нужны для поддержки дополнительных языков и не являются обязательными к установке. Пакеты с приставкой «-ws» нужны для работы веб-клиента и также не являются обязательными, но если на нашем сервере планируется еще развернуть и веб сервер , тогда ставить их обязательно.
Теперь можем запустить сервер sudo service srv1cv83 start.
Проверяем что сервер запустился командой sudo service srv1cv83 status.
На этом установка завершена. Пробуем подключаться и создавать базу!
Если необходимо опубликовать базу на Веб сервере тогда делаем следующее:
Установим дистрибутив веб сервера apache : sudo apt-get install apache2
Откроем файл с настройками веб сервера: sudo nano /etc/apache2/ports.conf
Исправляем строку Listen 80 на Listen
Затем также нажимаем Ctrl+X затем ставим Y и нажимаем ввод.
Переходим в директорию установленной платформы: cd /opt/1C/v8.3/x86_64/
sudo ./webinst -publish -apache24 -wsdir -dir /var/www/ -connstr “Srvr=” -confpath /etc/apache2/apache2.conf
ИМЯ ПУБЛИКАЦИИ – на произвольное имя публикации
ИМЯ СЕРВЕРА – на адрес сервера 1С:Предприятие
ИМЯ БАЗЫ – на имя базы, совпадающим с именем базы зарегистрированной в кластере
Затем перезапускаем службу веб сервера: sudo service apache2 restart
Теперь все готово. Надеюсь, кому-то эта статья поможет сэкономить время и нервы на поисках всего этого в сети.