+7 495 230 03 03 8 800 222 50 03
DevOps

PostgreSQL+1C на Ubuntu Linux

Рассмотрим установку PostgreSQL+1С на Ubuntu — актуальная на 2023 год сборка.

В данной инструкции задействована ВМ с ОС Ubuntu Server 22.04 LTS. Рекомендованные минимальные характеристики для данных сервисов следующие: 6 ядер ЦП, 60 ГБ системный диск SSD и как минимум 12 ГБ ОЗУ. Однако, ресурсы следует рассчитывать из дальнейшего сценария использования и количества пользователей, работающих в базах.

Установка PostgreSQL

Если установлена английская версия Ubuntu, то требуется переконфигурировать локали с помощью команды:

$ sudo dpkg-reconfigure locales

И выбрать ru_RU.UTF-8 UTF-8 (по умолчанию число номер 392), а затем перезагрузить сервер.

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

  1. Добавить репозиторий последней актуальной версии 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
    
  2. Обновить пакеты:
    $ sudo apt update && sudo apt upgrade
    
  3. Скачать последнюю актуальную версию патченого PosgtreSQL с портала ИТС.
  4. Распаковать и установить скачанный архив вместе с зависимостями.
    $ tar -xvf postgresql_15.1_4.1C_amd64_deb.tar.bz2
    $ cd postgresql_15.1_4.1C_amd64_deb && sudo apt install ./* -y
    
  5. Настроить конфигурацию:
    $ sudo nano /etc/postgresql/15/main/postgresql.conf
    

    Раскомментируем эту строчку и присваиваем ей следующее значение:

    listen_address = ‘*’
    
  6. В конфигурации настроить autovacuum для предотвращения деградации базы Раскомментировать следующие строчки и предаём им следующие значения:
    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 
    
  7. Также хорошей практикой будет вынести базы на отдельный диск, для этого:

    Создаём отдельную директорию (например, /var/lib/postgesqldb ) и монтируем раздел нашего SSD-диска (в нашем случае — это /dev/sda2).

    Отключаем службу psql:

    $ 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:

    $ sudo -u postgres /
    

    И заодно добавим в fstab директорию для хранения баз, чтобы она не размонтировалась при следующем перезапуске. Для этого нужно зайти в blkid и найти UUID раздела.

    $ blkid
    

    Заходим в /etc/fstab:

    $ sudo nano /etc/fstab
    

    И добавляем следующую строчку:

    UUID=xxxx-xxxx-xxxxxx-xxx       /var/lib/postgresqldb     auto  rw,user,auto      0     0
    

    (Где иксы заменяем на UUID раздела, который нашли в blkid).

  8. Дополнительно, если планируется получать доступ к БД с другого компьютера, то следует разрешить подключения к базе в pg_hba.conf. В рассматриваемом нами случае планируется подключение к базам только из локальной сети, поэтому разрешим подключения ко всем базам от всех пользователей СУБД в подсети:
    $ 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.

  9. После проделанных настроек перезапускаем службу и проверяем, что она работает:
    $ sudo systemctl restart postgresql.service && sudo systemctl status postgresql.service
    

    Если всё настроено правильно, то будет следующий вывод:

    Проверка работы службы PostgreSQL

    Рисунок 1 — Проверка работы службы PostgreSQL

  10. Меняем пароль для пользователя postgres для подключения к базе:
    $ sudo -u postgres psql -U postgres -c "alter user postgres with password 'postgrespwd';"
    

    Вместо postgrespwd можем указать свой пароль.

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

  1. Скачиваем нужную нам версию сервера 1С на портале ИТС.
  2. Распаковываем с помощью tar архив и запускаем файл .run:
    sudo ./setup-full-8.3.21.1393-x86_64.run
    
  3. Дальше следуем указаниям в установщике, после успешной установки создаём сервис службы 1С. Для этого нужно убедиться, что создался пользователь usr1cv8, либо создать его самостоятельно:
    $ sudo cat /etc/passwd
    
  4. Если в списке есть пользователь, то продолжаем дальше, если нет, то создаём вручную:
    $ sudo useradd usr1cv8 -mp ‘password’
    
  5. Далее нужно найти директорию запускаемого файла ragent, в нашем случае это /opt/1cv8/x86_64/8.3.21.1393/ragent. Создаём сервис: нужно открыть файл в текстовом редакторе, записать содержание и сохранить файл:
    $ 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
    
    
  6. Затем обновляем список служб и проверим работает ли служба 1С:
    $ sudo systemctl daemon-reload
    $ sudo systemctl start 1CServer && sudo systemctl status 1CServer
    
    

    Если всё настроено корректно, получим примерно такой вывод:

    Проверка работы службы PostgreSQL

    Рисунок 2 — Проверка работы службы 1C

    Убедившись, что всё работает, устанавливаем службу:

    $ sudo systemctl enable 1CServer
    
    

Подключение базы 1С

Создать базу 1С можно и в терминале Linux через команду, однако, для удобства, мы воспользуемся оснасткой администрирования сервера 1С, установленной на соседнюю машину на ОС Windows Server.

  1. Перед тем как присоединять базу, если компьютеры не объединены в домен Active Directory, рекомендуется внести имя сервера СУБД и его IP-адрес в “C:WindowsSystem32driversetchosts”, иначе возможно получение ошибки “Этот хост неизвестен” в 1С.
  2. Не пытайтесь создать пустую базу в PSQL, а затем подключить её в оснастке 1С! Для PostgreSQL базы 1С не являются нормальными, поэтому все базы создаются средствами 1С, как описано ниже.
  1. Заходим в оснастку администрирования и добавляем Центральный Сервер 1С. В имени сервера вводим имя или IP-адрес сервера СУБД, на котором устанавливали 1С.
  2. Далее заходим в кластер и добавляем базу: Правой кнопкой мыши нажать на “Информационные базы (Далее ИБ)” > “Создать” > “ИБ”. Заполняем поля:
    Параметры информационной базы

    Рисунок 3 — Параметры информационной базы

Мы добавили ИБ для запуска, можно заходить в конфигуратор и загружать имеющую конфигурацию. Итак, структура готова к работе в 1С.

Нужна помощь? Администрирование linux-серверов и PostgreSQL мы осуществляем в рамках услуги администрирование серверов.

Дата публикации: 1 мая 2023
Не нашли ответа на свой вопрос?

Смотрите также

Обсуждение материала

Содержание

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.