Установка 1с ubuntu postgresql: Три круга ада или разворачиваем сервер 1С Ubuntu + PostgreSQL с поддержкой веб-клиента (Apache) — Разработка на vc.ru

Содержание

Установка 1С + PostgreSQL на Ubuntu Server

Популярность 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.

  1. Очистка базы данных с помощью vacuumdb.
  2. Перестроение индексов с помощью 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С сервера на Ubuntu. Настройка серверной 1С на Linux

Обновлено: Опубликовано:

Можно значительно сократить затраты на программное обеспечение, установив сервер 1С на Linux. В данной инструкции мы рассмотрим процесс настройки сервера 1C 8.3 на Ubuntu 18.04 или 20.04 с сервером баз данных (не файловый вариант). В качестве СУБД мы будем использовать PostgreSQL (на примере версий 10, 12 и 13).

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

Подготовка сервера к работе
    Имя сервера
    Настройка сетевого экрана
Установка и запуск PostgreQL
    Подготовка сервера к установке
    Установка и настройка PostgreSQL Pro для 1С
    Использование СУБД версии 10
    Использование СУБД версии 12
После установки PostgreSQL
    Пароль
    Запуск
    Запрет обновлений PostgreSQL
Установка и запуск сервера 1С
Настройка сервера и подключение к базе
Установка и запуск  HASP Licence manager

Перенос базы со старой 1С
Публикация на веб-сервере
Обновление сервера 1С

Подготовка системы

Задаем имя сервера

Чтобы сервер 1С мог запуститься без ошибки, необходимо ему задать корректное имя:

hostnamectl set-hostname server1C. dmosk.ru

Если данное имя не зарегистрировано в DNS, прописываем соответствие в файле hosts:

vi /etc/hosts

192.168.1.11     server1C.dmosk.ru

Настройка брандмауэра

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

  • 1540 и 1541 для сервера 1С.
  • 1560 — запросы к базе данных.

По умолчанию, в Ubuntu действует разрешающая политика и настройка брандмауэра не требуется. В противном случае, вводим команды:

iptables -I INPUT 1 -p tcp —dport 1540:1541 -j ACCEPT

iptables -I INPUT 1 -p tcp —dport 1560 -j ACCEPT

И сохраняем правила с помощью iptables-persistent:

apt-get install iptables-persistent

netfilter-persistent save

Установка PostgreSQL

Как было сказано выше, мы задействуем СУБД PostgreSQL. Для 1С требуется специальная сборка postgresql, которая может быть установлена из специального дистрибутива или от поставщика 1С. Рассмотрим установку версий Postgres Pro 13, а также обычные версии PostgreSQL 10 и 12.

Подготовка к установке СУБД

Настраиваем локаль, введя команду:

dpkg-reconfigure locales

В открывшемся окне выбираем локаль ru_RU.UTF-8 UTF-8:

Нажимаем OK. В следующем окне также выбираем ru_RU.UTF-8:

… и нажимаем OK.

* Если мы устанавливали русскую версию Linux, возможно, данные настройки уже будут выставлены. Так или иначе, стоит в этом убедиться.

Дальшейшие наши действия зависят от выбранной версии PostgreSQL.

PostgreSQL Pro для 1С

Для работы 1С рекомендуется установить специальный выпуск PostgreSQL Pro. Она также может быть загружена и установлена бесплатно.

Переходим на страницу 1c.postgres.ru — проходим 3 шага мастера, выбрав нужную версию Postgresql и Ubuntu:

После заполняем форму для получения инструкции по установке СУБД:

На указанную почту придет инструкция по установке PostgreSQL.

Пример установки PostgreSQL Pro 13. Скачиваем скрипт для установки репозитория:

curl -o pgpro-repo-add.sh https://repo.postgrespro.ru/pg1c-13/keys/pgpro-repo-add.sh

Устанавливаем gnupg2:

apt-get install gnupg2

* без данного пакета при попытке установить репозиторий мы получим ошибку:
E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation
Error adding key.

Запускаем скачанный скрипт:

sh apt-repo-add.sh

Запускаем установку СУБД:

apt-get install postgrespro-1c-13

Разрешаем автозапуск:

systemctl enable postgrespro-1c-13

Остановим сервис:

systemctl stop postgrespro-1c-13

Удаляем содержимое каталога data:

rm -rf /var/lib/pgpro/1c-13/data/*

* в противном случае, при попытке инициализировать базу мы получим ошибку Data directory /var/lib/pgpro/1c-13/data is not empty!

Инициализируем базу:

/opt/pgpro/1c-13/bin/pg-setup initdb —tune=1c —locale=ru_RU. UTF-8

Запускаем сервис postgrespro:

systemctl start postgrespro-1c-13

Установка PostgreSQL 10 от 1С

Сначала устанавливаем компоненты, необходимые для установки СУБД из пакетов.

wget http://archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu55_55.1-7_amd64.deb

dpkg -i libicu55_55.1-7_amd64.deb

libicu55 — Unicode-компоненты для интернационализации.

Теперь устанавливаем postgresql-common:

apt-get install postgresql-common

postgresql-common позволяет одновременную установку нескольких версий PostgreSQL.

Устанавим пакет libssl:

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1.0/libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb

* если команда вернет ошибку, точное название для новой версии libssl смотрим, перейдя по ссылке.

dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.4_amd64.deb

Переходим к установки самой СУБД. 10-я версия PostgreSQL может быть установлена из дистрибутива, полученного от 1С (в личном кабинете или от поставщика).  Архив с дистрибутивом postgresql, в свою очередь, содержит архивы под различные операционные системы — нам нужен файл с окончанием в названии …amd64_deb.tar.bz2

* в данном примере взят файл для 64-х разрядной версии операционной системы. Пакет deb (для систем на базе Debian).

Копируем данный файл на сервер (например, с помощью программы WinSCP) и распаковываем его:

tar jxvf PostgreSQL_10.*.1C_postgresql_10.*.1C_amd64_deb.tar.bz2

Выполним установку пакетов из папки …amd64_deb…:

dpkg -i postgresql-10.*.1C_amd64_deb/*.deb

Инициализируем СУБД:

sudo -u postgres /usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main —locale=ru_RU.UTF-8

* при инициализации для нас важно задать русскую локаль. В противном случае мы можем получить ошибку «Порядок сортировки не поддерживается базой данных».

Установка PostgreSQL 12 от 1С

Устанавим пакет libssl:

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl1. 0/libssl1.0.0_1.0.2n-1ubuntu5.6_amd64.deb

* если команда вернет ошибку, точное название для новой версии libssl смотрим, перейдя по ссылке.

dpkg -i libssl1.0.0_1.0.2n-1ubuntu5.4_amd64.deb

Устанавливаем libllvm6.0:

apt-get install libllvm6.0

Распаковываем архив с postgresql:

tar jxvf postgresql_12.*.1C_amd64_deb.tar.bz2

Устанавливаем по очереди

dpkg -i postgresql-12.*.1C_amd64_deb/libpq5_12.*.1C_amd64.deb

dpkg -i postgresql-12.*.1C_amd64_deb/postgresql-client-12_12.*.1C_amd64.deb

dpkg -i postgresql-12.*.1C_amd64_deb/postgresql-12_12.*.1C_amd64.deb

Инициализируем СУБД:

sudo -u postgres /usr/lib/postgresql/12/bin/initdb -D /var/lib/postgresql/12/main —locale=ru_RU.UTF-8

* при инициализации для нас важно задать русскую локаль. В противном случае мы можем получить ошибку «Порядок сортировки не поддерживается базой данных».

Действия после установки postgres

Если мы установили PostgreSQL Pro версию, выполним только первую настройку (пароль).

Пароль для пользователя postgres

Задаем пароль для пользователя postgres:

sudo -u postgres psql -U postgres -d template1 -c «ALTER USER postgres PASSWORD ‘password'»; history -d $((HISTCMD-1))

* данную команду мы запускаем под пользователем postgres; мы задаем пароль password для postgresql-пользователя postgres. Дополнительная команда history -d $((HISTCMD-1)) удалить из истории строку с паролем.

Остальные настройки выполняем для PostgreSQL не Pro версии.

Автозапуск

Разрешаем автозапуск сервиса баз данных и стартуем его:

systemctl enable postgresql —now

Блокировка обновлений PostgreSQL

Так как для 1С устанавливается специальная сборка СУБД, необходимо запретить ее обновление. В противном случае будет установлен обычныйpostgresql, что приведет к потери работоспособности сервера.

Смотрим версию установленного сервера баз данных:

dpkg -l | grep postgresql

Пример ответа:

ii  postgresql-10            10. 10-4.1C …
ii  postgresql-client-10     10.10-4.1C …

И так, у нас установлена версия 10.10-4.1C. Вводим:

dpkg -l | grep 10.10-4.1C | awk -F’ ‘ ‘{print $2}’ | xargs apt-mark hold

* где 10.10-4.1C — версия установленного PostgreSQL. Команда apt-mark hold блокируем установку обновлений для пакетов версии 10.10-4.1C.

Также добавим:

apt-mark hold postgresql-common postgresql-client-common

Установка сервера 1С

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

И так, выполним установку следующих пакетов:

apt-get install imagemagick unixodbc ttf-mscorefonts-installer

* где:

  • imagemagick — набор программ для чтения и редактирования графических файлов.
  • unixodbc — диспетчер драйверов для ODBC.
  • ttf-mscorefonts-installer — набор шрифтов Microsoft.

В процессе установки система запросит принять лицензионное соглашение — выбираем Yes.

Копируем на сервер архив с дистрибутивом для 1С, который был загружен с сайта 1С или получен от поставщика. Распаковываем архив командой:

tar zxvf 8.3.16.1148_deb64.tar.gz

* где 8.3.16.1148_deb64.tar.gz — имя архива с 1С версии 8.3.16. В архиве пакеты deb (для Linux на основе Debian) для 64-х разрядной системы.

Устанавливаем все пакеты, которые находились в архиве командой:

dpkg -i 1c-enterprise*.deb

Разрешаем автозапуск сервиса 1С и стартуем его:

systemctl enable srv1cv83

systemctl start srv1cv83

Если мы получим ошибку «srv1cv83.service not found», находим исполняемый файл srv1cv83:

find /opt -name srv1cv83

В моем случае он был по пути:

/opt/1cv8/x86_64/8.3.16.1148/srv1cv83

Делаем симлинк в каталоге /etc/init. d на найденный файл:

ln -s /opt/1cv8/x86_64/8.3.16.1148/srv1cv83 /etc/init.d/srv1cv83

Снова разрешаем и запускаем сервис:

systemctl enable srv1cv83

systemctl start srv1cv83

Необходимо убедиться, что сервис запустился:

systemctl status srv1cv83

Настройка кластера и клиента

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

Устанавливаем клиента 1С. После установки в меню пуск находим ссылку Регистрация утилиты администрирования серверов (версия) и запускаем ее от имени администратора:

Теперь запускаем утилиту Администрирование серверов 1С Предприятия:

В открывшемся окне кликаем правой кнопкой мыши по Central 1C:Enterprise 8.3 servers — выбираем СоздатьЦентральный сервер 1С:Предприятие 8. 3:

Пишем имя сервера 1С или его IP-адрес:

… и нажимаем OK. В панели управления появится подключение — переходим в раздел КластерыЛокальный кластер — кликаем правой кнопкой по Информационные базы — выбираем СоздатьИнформационная база:

Заполняем параметры для создания новой базы:

* в данном примере нами были заполнены:

  • Имя — задаем произвольное имя для подключения к базе.
  • Сервер баз данных — имя или IP-адрес базы. Задаем localhost, так как в нашем случае сервер 1С и сервер баз данных находятся на одном сервере.
  • Тип СУБД — выбираем PostgreSQL.
  • База данных — имя базы данных.
  • Пользователь сервера БД — пользователь, под которым будет выполняться подключение к базе. В нашем примере postgres.
  • Пароль пользователя БД — пароль для базы, который мы задали после установки СУБД.
  • Создать базу данных в случае ее отсутствия — ставим галочку, чтобы база была создана.

Если мы получим ошибку Этот хост неизвестен:

… необходимо убедиться, что имя сервера разрешается в IP-адрес. Для этого необходимо его добавить в локальную DNS или файл hosts.

База должна создастся. Теперь запускаем 1С клиент и добавляем новую базу — при добавлении выбираем Добавление в список существующей информационной базы:

Указываем произвольное имя информационной базы, а также выбираем тип расположения базы На сервере 1С:Предприятия:

Нажимаем Далее и Готово. Запускаем конфигуратор, загружаем базу и пользуемся.

HASP Licence manager

Если в сервер вставлен аппаратный ключ, необходимо установить HASP Licence manager, чтобы лицензии могли получать компьютеры по сети.

Проверяем, что наш сервер видит ключ:

lsusb | grep -i hasp

Мы должны увидеть что-то на подобие:

Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle

Устанавливаем необходимые пакеты:

apt-get install make libc6-i386

* где:

  • make — утилите, которая в нашем случае используется для компиляция исходного кода.
  • libc6-i386 — набор стандартных библиотек для С и математических вычислений.

Создадим каталог для загрузки пакетов и перейдем в него:

mkdir /tmp/hasp ; cd /tmp/hasp

Переходим на страницу загрузки HASP для Ubuntu. Выбираем необходимую версию и копируем ссылки на 2 файла — haspd-modules_… и haspd_…

На момент обновления инструкции на сайте не было пакетов для Ubuntu 20, однако, для данной версии подходят пакеты под Ubuntu 18.

С помощью скопированных ссылок загружаем на сервер два файла:

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

* в моем примере загрузка выполнялась для Ubuntu 18.04.

Выполним установку скачанных пакетов командой:

dpkg -i haspd*.deb

Разрешим автозапуск сервиса haspd:

systemctl enable haspd

Запускаем его:

systemctl start haspd

Проверяем, что он корректно стартовал и работает:

systemctl status haspd

Готово — наши компьютеры в локальной сети смогут получить лицензию.

Миграция базы на PostgreSQL

В случае, если это не первая установка и у нас уже есть база, ее нужно перенести на новый сервер. Рассмотрим 2 варианта — база была на другом сервере PostgreSQL и универсальный (файловый вариант или другая СУБД).

С PostgreSQL на PostgreSQL

В данном случае процесс переноса заключается в создании дампа (backup) и его восстановления на новом сервере (restore). Необходимо учесть, что для корректного переноса данных, версии 1С должны совпадать.

Есть несколько инструментов по созданию резервных копий PostgreSQL и их восстановлению. Их описание выходит за рамки данной статьи — подробнее читайте инструкцию Резервное копирование PostgreSQL.

Универсальный способ миграции на PostgreSQL

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

Выбираем путь для сохранения файла. Ждем окончания выгрузки и переносим полученный файл на компьютер с толстым клиентом 1С (если для нового сервера мы используем другой компьютер с 1С).

Открываем конфигуратор для созданной в PostgreSQL базы — кликаем АдминистрированиеЗагрузить информационную базу:

… и выбираем выгруженный ранее файл. Дожидаемся его загрузки — система потребует перезапустить 1С — соглашаемся. Ждем новой загрузки. После можно пользоваться базой 1С на новом сервере.

Веб-публикации

Сервер 1С поддерживает возможность веб-публикаций баз 1С. Это дает возможность открывать программу в браузере или мобильном приложении. В Linux данные публикации осуществляются с помощью Apache.

Установка и запуск Apache

Первым делом, устанавливаем веб-сервер apache:

apt-get install apache2

Разрешаем автозапуск веб-сервера и стартуем сам сервис:

systemctl enable apache2

systemctl start apache2

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

iptables -I INPUT -p tcp —dport 80 -j ACCEPT

netfilter-persistent save

Открываем браузер и переходим по адресу http://<IP-адрес сервера 1С> — мы должны увидеть стартовую страницу Apache:

Публикация 1С на веб-сервере

Публикация базы выполняется с помощью скрипта webinst, который устанавливается с сервером. Для простоты, мы опубликуем базу в корневую директорию /var/www/html, но при желании, можно настроить виртуальные домены.

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

DBNAME=test

И так, создадим каталог, в который опубликуем нашу базу:

mkdir /var/www/html/$DBNAME

Переходим в каталог с установленным 1С:

cd /opt/1C/v8.3/x86_64/

… или:

cd /opt/1cv8/x86_64/8.3.16.1148/

* где 8.3.16.1148 — версия установленной платформы.

Заускаем скрипт для публикации базы:

./webinst -apache24 -wsdir $DBNAME -dir /var/www/html/$DBNAME -connstr «Srvr=192.168.1.11;Ref=$DBNAME;» -confPath /etc/apache2/apache2.conf

* где apache24 — версия установленного apache; $DBNAME — имя нашей базы, которую мы создали ранее; /var/www/html/$DBNAME — путь до каталога на сервере, в котором будет опубликована база; 192.168.1.11 — IP-адрес сервера 1С; Ref=$DBNAME — имя базы в СУБД; /etc/apache2/apache2.conf — путь до конфигурационного файла apache.

Мы должны увидеть:

Publication successful

… или:

Публикация выполнена

Перезапускаем апач:

systemctl restart apache2

Открываем браузер и переходим по адресу http://<IP-адрес сервера 1С>/test/, где test — каталог в каталоге /var/www/html, куда мы опубликовали базу.

Обновление сервера 1С

Подготовимся к обновлению — скачаем новую версию дистрибутива сервера DEB нужной разрядности (как правило, 64 бит). Копируем архив на сервер.

Остановим сервис 1С:

systemctl stop srv1cv83

Далее процедура обновления напоминает установку приложения.

Переходим в каталог, в который перекинули архив и создаем новый каталог, куда распакуем его:

mkdir 1c_update

распаковываем архив в созданный каталог:

tar zxf deb64_8_3_19_1726.tar.gz -C 1c_update/

* в моем примере будет выполняться обновление до версии 8.3.19.1726.

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

dpkg -i 1c_update/1c-enterprise*. deb

Сервис 1С запускается с помощью файла /etc/init.d/srv1cv83, который является симлинком. Нам нужно удалить старый симлинк и создать новый.

Чтобы найти все файлы srv1cv83, выполним команду:

find /opt -name srv1cv83

В моем случае было несколько путей, в том числе, для установленной нами версии 8.3.19.1726:

/opt/1cv8/x86_64/8.3.19.1726/srv1cv83

Удаляем симлинк, который ведет на старую версию файла:

rm -f /etc/init.d/srv1cv83

Создаем новый (путь до которого мы нашли командой find):

ln -s /opt/1cv8/x86_64/8.3.19.1726/srv1cv83 /etc/init.d/srv1cv83

Обновляем информацию в systemd:

systemctl daemon-reload

Запускаем сервис:

systemctl start srv1cv83

Убедиться, что сервис запустился можно командой:

systemctl status srv1cv83

Также рекомендую удалить каталог с распакованными файлами, чтобы они нам не помешали при следующем обновлении:

rm -rf 1c_update 

ubuntu — Кажется, установка postgresql-15 не удалась

Заранее извиняюсь, если это глупый вопрос — я разработчик, а не системный администратор.

После запуска обновления/обновления apt-get на моей виртуальной машине Ubuntu (Oracle VirtualBox) я не могу подключить свою базу данных postgresql к сети. Я считаю, что это может быть связано с тем, что postgresql-15 был обновлен с бета-3 до бета-4.

Это настоящая неприятность для меня, потому что это испортило нашу среду разработки. (Я предполагаю, что когда мы будем готовы к выпуску 15, он будет полностью доступен, и мне бы очень хотелось иметь возможность использовать объединить инструкций в моем коде)

Я стер postgresql с хоста и теперь пытаюсь выполнить новую установку, следуя этим инструкциям.

На шаге 3. sudo -u postgres psql Я получаю следующую ошибку: psql: ошибка: подключение к серверу через сокет "/var/run/postgresql/.s.PGSQL.5432" не удалось: нет такого файла или directory Сервер работает локально и принимает соединения через этот сокет?

что, по сути, является проблемой, с которой я столкнулся после неудачного обновления (несмотря на то, что я запускал systemctl start postgresql )

Может ли кто-нибудь посоветовать, что мне нужно сделать, чтобы запустить postgres-15 (предпочтительно бета-4)?


 Huh@ububtuvm:~$ статус systemctl postgresql
● postgresql. service — СУБД PostgreSQL.
     Загружено: загружено (/lib/systemd/system/postgresql.service; отключено; поставщик p>
     Активен: активен (закрыт) с 18 сентября 2022 г., 10:47:19 UTC; 31мин назад
    Процесс: 2349 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Основной PID: 2349 (код=выход, статус=0/УСПЕХ)
        Процессор: 905us
18 сентября, 10:47:19 ububtuvm systemd[1]: Запуск СУБД PostgreSQL...
18 сентября, 10:47:19 ububtuvm systemd[1]: Завершена работа над СУБД PostgreSQL.
Hugh@ububtuvm:~$ journalctl -xeu postgresql.service
░░ Тема: Начато выполнение задания остановки для модуля postgresql.service.
░░ Определено: systemd
░░ Поддержка: http://www.ubuntu.com/support
░░
░░ Начато выполнение стоп-задания для модуля postgresql.service.
░░
░░ Идентификатор задания — 1675.
18 сентября, 10:47:19 ububtuvm systemd[1]: Запуск СУБД PostgreSQL...
░░ Тема: Начато выполнение стартового задания для модуля postgresql.service.
░░ Определено: systemd
░░ Поддержка: http://www.ubuntu.com/support
░░
░░ Начато выполнение стартового задания для модуля postgresql. service.
░░
░░ Идентификатор задания — 1675.
18 сен 10:47:19ububtuvm systemd[1]: Завершенная СУБД PostgreSQL.
░░ Тема: Стартовое задание для модуля postgresql.service успешно завершено
░░ Определено: systemd
░░ Поддержка: http://www.ubuntu.com/support
░░
░░ Стартовое задание для модуля postgresql.service успешно завершено.
░░
░░ Идентификатор задания — 1675.
 

 root@ubuntuvm:/home/hugh# cat /usr/lib/systemd/system/postgresql.service
# postgresql.service — это метамодуль для управления всеми кластерами PostgreSQL на
# система сразу. Концептуально этот юнит больше похож на systemd target,
# но мы используем сервис, так как цели не могут быть перезагружены.
#
# Единицей, которая фактически управляет кластерами PostgreSQL, является [email protected],
# создается как [email protected] для отдельных кластеров.
[Единица]
Описание=СУБД PostgreSQL
[Услуга]
Тип = ваншот
ExecStart=/bin/true
ExecReload=/bin/true
Остаться после выхода = вкл.
[Установить]
WantedBy=многопользовательская. цель
 

(устанавливается с помощью apt install)


Я нашел это, которое содержит следующие абзацы.

После обновления с альфа- или бета-версии я получаю сообщение об ошибке
CATALOG_VERSION После обновления с альфа- или бета-пакета я получаю
ошибка вида:

Кластер базы данных был инициализирован с CATALOG_VERSION_NO X, но
сервер был скомпилирован с CATALOG_VERSION_NO Y. Это связано с тем, что
Формат данных PostgreSQL может меняться между альфа-версиями и
иногда даже между бета-версиями, если есть действительно неотложная
нуждаться.

Если вам нужно получить доступ к старым данным, вам нужно будет использовать пакет
версии, которую вы использовали ранее, и используйте pg_dump или pg_upgrade.
необходимые двоичные файлы должны были быть сохранены в /var/tmp/postgresql*.
Или поищите старые пакеты в вашем
/var/кэш/apt/архивы.

Я все еще борюсь, хотя я еще нигде не нашел предыдущую версию.

конфигурация — расположение файлов postgresql.

conf и pg_hba.conf на сервере Ubuntu

спросил

Изменено
2 года, 6 месяцев назад

Просмотрено
125 тысяч раз

Где находятся файлы postgresql.conf и pg_hba.conf на сервере Linux с установленным PostgreSQL 8.4 из репозиториев Ubuntu?

  • postgresql
  • конфигурация

3

Поиск «pg_hba.conf ubuntu» в Google дает вам

https://help.ubuntu.com/community/PostgreSQL

, который показывает расположение файлов.

В документации указано следующее:

Проверка подлинности клиента контролируется
конфигурационный файл, который
традиционно называется pg_hba.conf и
хранится в кластере базы данных
каталог данных. (HBA означает
аутентификация на основе хоста.) По умолчанию
Файл pg_hba.conf устанавливается, когда
каталог данных инициализируется
initdb. Есть возможность разместить
файл конфигурации аутентификации
однако в другом месте; см. hba_file
параметр конфигурации.

Обратите внимание, что он говорит, что хранится в каталоге данных кластера базы данных и что его можно разместить в другом месте с помощью параметра конфигурации. Официальная документация не может указать вам на конкретную папку, потому что фактическое местоположение зависит от того, как производитель ОС и администратор машины настроили PostgreSQL. Помните, что PostgreSQL поддерживает множество различных операционных систем (и дистрибутивов Linux).

Как показывает Neutrino, если вы можете получить доступ к своему серверу через psql, вы можете указать ему показать расположение файла.

Кроме того, два совета:

  1. locate помогут вам найти файлы, имя которых вы знаете, но не место их расположения
  2. Дистрибутивы на основе Debian размещают в /usr/share/doc документацию о том, как они настраивают различные пакеты по умолчанию, я уверен, что вы найдете в /usr/share/doc/postgresql-8. 4 (или, может быть, просто postgresql) информацию о файлы конфигурации. Очень полезно читать, если они изменили какое-то стандартное поведение.

3

Откройте командную строку.

 > psql -U постгрес
=# показать hba_file;
=# показать config_file
 

Когда они меняют названия настроек конфига, или вы хотите увидеть что-то другое.

 =# показать все;
 

0

Возможно

 /etc/postgresql/9.*/main
 

http://www.postgresql.org/docs/current/static/runtime-config-file-locations.html

Как сказал Виньо, расположение зависит от дистрибутива. Чтобы добавить к его ответу:

Ваше программное обеспечение для управления пакетами сообщит вам, где находятся файлы, установленные каждым пакетом (например: dpkg -L postgresql ).

Вы также можете заглянуть внутрь сценария запуска службы (обычно /etc/init.