Установка 1с 8.3 postgresql windows. Устанавливаем PostgreSQL. Подключение внешнего источника данных
Рассматривая установку сервера 1С:Предприятие на платформе Linux нельзя обойти вниманием вторую важную компоненту - систему управления базами данных, наиболее популярной из которых для данной платформы является PostgresSQL. В наших прошлых материалах мы использовали сборки от компании Ethersoft, это было связано с тем, что 1С предоставляла готовые пакеты только для RPM-совместимых систем, теперь ситуация изменилась и можно свободно скачать официальные пакеты для Ubuntu Server/Debian.
Прежде чем продолжать, напомним, что сервер СУБД является независимой частью клиент-серверной системы 1С:Предприятие и никак не связан по настройкам и зависимостям с самим сервером 1С, т.е. вы можете установить PostgreSQL как на одну физическую машину с сервером 1С, так и на разные.
Второе важное замечание, мы не видим смысла использовать 32-разрядную версию Postgres, разве что в учебно-ознакомительных целях, при этом нет никакого требования на совпадение разрядности сервера 1С и сервера СУБД, это значит, что вы можете успешно совмещать 32-разрядный сервер 1С и 64-разрядный Postgres, в том числе и на одном физическом сервере. Про установку 32-разрядного сервера на 64-разрядную платформу мы рассказывали в одной из .
В нашем примере будет использоваться сервер под управлением Ubuntu Server 14.04 или Debian 8, все незначительные отличия между системами будут оговариваться отдельно.
Откуда получить дистрибутив Postgres для работы с 1С:Предприятием? С официального сайта, напомним, что стандартная версия PostgreSQL с 1С работать не будет, требуется специальная сборка с патчами от компании. На странице загрузки представлено довольно много версий, для всех платформ и разрядностей. Нас интересует только версия DEB для систем x86-64 , архив с дополнительными модулями не потребуется.
Скачаем данный архив и разместим его в удобном месте на сервере, скажем в домашней папке. Но прежде чем приступать к установке следует подготовить систему.
Сначала сгенерируем и установим необходимые локали, это особенно важно, если система была установлена с языком отличным от русского.
В Ubuntu Server выполните:
locale-gen en_USlocale-gen ru_RU
затем установите язык по умолчанию:
update -locale LANG=ru_RU.UTF8и завершите настройку:
Dpkg-reconfigure locales
В Debian немного проще:
Dpkg-reconfigure locales
Данная команда вызывает псевдографическую утилиту при помощи которой следует выбрать локали en_US ISO-8859-1 , en_US.UTF-8 и ru_RU.UTF-8
По умолчанию выбираем ru_RU.UTF-8
Для применения изменений обе системы потребуется перезагрузить.
Правильно настроив региональные параметры перейдем к зависимостям. Нам потребуются пакет ssl-cert и библиотеки libxslt и libicu , с первыми двумя все просто:
Apt-get install libxslt1.1 ssl-cert
Cd ~ dpkg -i libicu48_4.8.1.1-3_amd64.deb
Теперь можно переходить к установке непосредственно PostgreSQL, архив с которой также должен находиться в вашей домашней папке, распакуем его:
Tar -xvf postgresql-9.4.2-1.1C_amd64_deb.tar.bz2
Если сервер 1С или сборку от Ethersoft можно было просто установить в автоматическом режиме, то здесь такой фокус не пройдет, нужно строго соблюдать очередность установки пакетов, в противном случае возникнут нарушенные зависимости, автоматическое разрешение которых приведет к замене некоторых пакетов от 1С пакетами из репозитория, что сделает установленный экземпляр неработоспособным.
Требуемая последовательность установки такова:
Dpkg -i libpq5_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-client-common_154.1.1C_all.deb
dpkg -i postgresql-common_154.1.1C_all.deb
dpkg -i postgresql-client-9.4_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-9.4_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-contrib-9.4_9.4.2-1.1C_amd64.deb
После установки требуется произвести некоторые настройки, в частности установить пароль суперпользователю СУБД postgres, для этого откроем /etc/postgresql/9.4/main/pg_hba.conf и найдем в нем строку:
Local all postgres peer
и приведем ее к виду:
Local all postgres trust
Перезапустим службу:
Service postgresql restart
Теперь установим пароль командой:
Psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD "password""
где password - желаемый пароль и еще раз перезапустим PostgreSQL.
На этом настройку сервера СУБД можно считать законченной. Но остается один момент, для того, чтобы к нему можно было обращаться по сетевому имени, следует добавить соответствующую A-запись на DNS-сервер предприятия или запись в файл hosts тех ПК, которые будут работать с данным сервером. Напомним, что с сервером СУБД работает исключительно сервер 1С и если вы добавляете записи в файл hosts, то делать это нужно прямо на сервере 1С, а не на клиентских ПК.
Также к серверу СУБД, в отличие от сервера 1С, можно обращаться по IP-адресу, а если PostgreSQL и сервер 1С находятся на одной машине, то в качестве имени сервера правильным будет использовать localhost .
Как видим, сложной установку PostgreSQL-1C назвать нельзя, однако от вас потребуется определенная внимательность и строгое выполнение последовательности установки пакетов.
Теги:
СУБД PostgreSQL весьма популярна среди пользователей, и причина тому — достойное качество при полной бесплатности. Высокая популярность привела к тому, что задачи на тему прямого доступа к базе PostgreSQL из 1С встречаются достаточно часто. Именно о том, как этот доступ организовать и поговорим ниже.
Подготовка
В начале нужно сказать, что все испытания проводились на ОС Windows 7 (64-bit) и Windows 10 (64-bit), а подключения производились к серверу PostgreSQL (64-bit) 9.4.2-1.1C.
Первое, что нам потребуется это установленный драйвер psqlODBC. Установить его можно либо при помощи приложения Stack Builder (которое устанавливается вместе с PostgreSQL):
Либо посетив страничку , на которой представлено множество версий нашего драйвера:
Важно! Устанавливать нужно именно psqlODBC (32 bit).
С драйвером psqlODBC (64 bit) мне не удалось подключиться к базе данных ни одним способом, ни в одной ОС. Весьма вероятно, что причина этого в моих кривых руках, но что есть, то и пишу.
Так или иначе, после установки правильной версии драйвера у нас есть несколько способов получения данных.
Подключение внешнего источника данных
Подключение базы PostgreSQL в качестве внешнего источника данных является простым и наглядным. Создаем новый внешний источник данных и добавить новую таблицу:
Затем указываем строку подключения примерно такова вида:
Driver={PostgreSQL Unicode};Server=host ;Port=port ;Database=db_name ;Uid=user ;Pwd=password ;STMT=utf8
И в результате получаем список таблиц:
Отмечу, что при создании внешнего источника данных у меня не получилось использовать пользовательские источники данных, о которых ниже.
Подключение при помощи ADODB
Подключение к базе PostgreSQL и выполнение различных запросов при помощи библиотеки ADOdb выглядит приблизительно так:
&НаКлиенте Процедура ЗапросКPostgreSQL(Команда) АДОСоединение = Новый COMОбъект("ADODB.CONNECTION"); АДОСоединение.Provider = "MSDASQL.1"; АДОСоединение.ConnectionString = "Driver={PostgreSQL Unicode};Server=localhost;Port=5432;Database=test;Uid=postgres;Pwd=123456;STMT=utf8"; Попытка АДОСоединение.Open(); Исключение Возврат; КонецПопытки; АДОНаборЗаписей = Новый COMОбъект("ADODB.RecordSet"); АДОКоманда = Новый COMОбъект("ADODB.Command"); Попытка АДОКоманда.ActiveConnection = АДОСоединение; АДОКоманда.CommandText = "SELECT * FROM ""table"";"; АДОНаборЗаписей = АДОКоманда.Execute(); Исключение Возврат; КонецПопытки; КонецПроцедуры
&НаКлиенте Процедура ЗапросКPostgreSQL(Команда) АДОСоединение= Новый COMОбъект("ADODB.CONNECTION" ) ; АДОСоединение. Provider= "MSDASQL.1" ; АДОСоединение. ConnectionString= "Driver={PostgreSQL Unicode};Server=localhost;Port=5432;Database=test;Uid=postgres;Pwd=123456;STMT=utf8" ; Попытка АДОСоединение. Open() ; Исключение Возврат; КонецПопытки; АДОНаборЗаписей= Новый COMОбъект("ADODB.RecordSet" ) ; АДОКоманда= Новый COMОбъект("ADODB.Command" ) ; Попытка АДОКоманда. ActiveConnection= АДОСоединение; АДОКоманда. CommandText= "SELECT * FROM " "table" ";" ; АДОНаборЗаписей= АДОКоманда. Execute() ; Исключение Возврат; КонецПопытки; КонецПроцедуры |
При этом есть возможность использовать пользовательский источник данных, который нужно сначала создать. Сделать это можно при помощи приложения ODBC Data Sources (32 бита), которое находится в панели управления (а в Windows 10 в папке «Администрирование» на панели управления). Важно использовать именно 32-х битную версию, так как каждая версия видит только «свои» драйверы. Если же, по какой-либо причине, на панели управления нет этого приложения, то его можно запустить напрямую, оно находится по адресу \Windows\SysWOW64\odbcad32.exe.
В этой инструкции мы расскажем (и покажем) как настроить связку 1С:Предприятие 8.3 и PostgreSQL 9.4.2 с момента установки обоих сервисов, вплоть до создания информационной базы. Про тюнинг данной связки можно прочитать в .
Этапы, которые нам предстоит пройти:
- Установка Сервера 1С:Предприятие (64-bit) для Windows
- Установка PostgreSQL 9.4.2-1.1С
- Создание Информационной базы данных.
Подробнее под катом!
Этап 0. Вводные данные.
Имя сервера — 1CServer
Имя учётной записи сервера — Администратор
Пароль учётной записи — 123456Ab
Имя учётной записи 1С на сервере — USR1CV8
Пароль учётной записи 1С на сервере — 123456Cd
Имя учётной записи PostgreSQL на сервере — postgres
Пароль учётной записи PostgreSQL на сервере — 123456Ef
Имя суперюзера PostgreSQL — postgres
Пароль суперюзера PostgreSQL — 1234
Имя тестовой базы данных — testdb
Этап 1. Установка Сервера 1С:Предприятие (64-bit) для Windows
Этап 2. Установка PostgreSQL и pgAdmin.
Этап 3. Создание информационной базы 1С.
- Перед выполнением следующих операций, отключите IPv6 на Вашем сетевом интерфейсе: Центр управления сетями и общим доступом > Подключение по локальной сети > Свойства > Снимите галочку с Протокол Интернета версии 6 (TCP/IPv6) .
- Запускаем клиентское 1С:Предприятие и добавляем новую базу данных.
- Создание новой информационной базы > Создание информационной базы без конфигурации (для примера, у Вас может быть любая конфигурация) > На сервере 1С:Предприятие >
- Заполняем все поля в соответствии с нашим примером (Этап 0):
Кластер серверов 1С:Предприятие: 1CServer
Имя информационной базы в кластере: testbd
Защищённое соединение: Выключено
Тип СУБД: PostgreSQL
Сервер баз данных: 1CServer
Имя базы данных: testbd
Пользователь базы данных: postgres
Пароль пользователя: 1234 - Далее, далее. Запускаем созданную базу в режиме предприятия — всё работает!
Ещё раз напоминаем, что PostgreSQL можно неплохо разогнать. Подробности в
Как только размер файловой базы данных 1С:Предприятие одного из наших клиентов достиг размера в 32Гб (да, 32Гб), в следствии чего всё постепенно начало тормозить, а потом и встало намертво, наши клиенты попросили нас решить эту проблемы. SSD Enterprise класса ненадолго подсластил пилюлю, но через некоторое время всё вернулось в исходную точку. Ну что ж, тут и к бабке не ходи - переходим на SQL версию БД.
Поскольку мы ярые пользователи Windows, доступно нам только два варианта СУБД - это MSSql и PostgreSQL. Первый хорош до безумия, но стоимость не порадовала. А ещё больше не порадовала новость о дополнительных лицензиях 1С для работы с MSSQL. Поэтому PostgreSQL.
Подробная инструкция с видео доступна . В этой статье мы пройдёмся по ключевым моментам.
Не забываем про резервное копирование баз данных 1С!
Исходные данные:
- ОС Windows Server 2008R2,
- Intel Core i7-2600K 3.40GHz,
- 32Gb RAM,
- Intel SSD DC3700 100Gb (только под БД, ОС на отдельном SSD),
- от 10 до 20 пользователей в БД ежедневно,
- обмен с 5 узлами распределённой БД в фоне.
Зловеще, не правда ли? Приступим.
1. Установка PostgreSQL и pgAdmin.
Никаких откровений по поводу того, откуда качать PostgreSQL не будет — это наш любимый сайт https://releases.1c.ru , раздел «Технологические дистрибутивы». Скачиваем, ставим. Не забываем установить MICROSOFT VISUAL C++ 2010 RUNTIME LIBRARIES WITH SERVICE PACK 1, который идёт в архиве с дистрибутивом. Сами попались на это: не установили, испытали много боли.
Инициализируем кластер базы данных (галочка). А вот здесь задаём параметры учётной записи для PostgreSQL! Важно: у Вас должна быть запущена служба «Secondary Logon» (или на локализированных ОС: «Вторичный вход в систему» ). Кодировка UTF8 — это тоже важно!
pgAdmin в этой сборке староват. Идём на https://www.postgresql.org/ftp/pgadmin3/release/ . На момент написания статьи самая свежая версия 1.22.1. Качаем её, ставим. Заходим.
На процессе установки оснастки «Администрирование серверов 1С Предприятия» не будем останавливаться. Это совсем другая тема. Да и сложного там ничего нет.
Создаём SQL БД в этой оснастке, проверяем в pgAdmin — БД там появиться, если всё указано верно.
2. Тюнинг PostgreSQL 9.4.2.
- pg_hba.conf
- postgresql.conf
- pgpass.conf
которые лежат здесь:
C:\Program Files\PostgreSQL\9.4.2-1.1C\data |
Если Вы ошибётесь хоть в одной букве, после обновления конфигурации PostgreSQL не запуститься. Выяснить что же стало причиной будет сложно, даже смотря в журналы Windows. Поэтому не меняйте много параметров сразу и делайте резервные копии.
Для правки конфига есть удобный инструмент, доступный прямо из главного окна pgAdmin. Вот он:
Что мы здесь меняем:
- shared_buffers — Количество памяти, выделенной PgSQL для совместного кеша страниц. Эта память разделяется между всеми процессами PgSQL. Делим доступную ОЗУ на 4. В нашем случае это 8Gb.
- effective_cache_size — Оценка размера кэша файловой системы. Считается так: ОЗУ — shared_buffers. В нашем случае это 32Gb — 8Gb = 24Gb. Но лично я оставляю этот параметр ещё ниже, где-то 20Gb — всё-таки ОЗУ нужна не только для PostgreSQL.
- random_page_cost = 1.5 — 2.0 для RAID, 1.1 — 1.3 для SSD. Стоимость чтения рандомной страницы (по-умолчанию 4). Чем меньше seek time дисковой системы тем меньше (но > 1.0) должен быть этот параметр. Излишне большое значение параметра увеличивает склонность PgSQL к выбору планов с сканированием всей таблицы (PgSQL считает, что дешевле последовательно читать всю таблицу, чем рандомно индекс). И это плохо.
- temp_buffers = 256Mb. Максимальное количество страниц для временных таблиц. То есть это верхний лимит размера временных таблиц в каждой сессии.
- work_mem — Считается так: ОЗУ / 32..64 — в нашем случае получается 1Gb. Лимит памяти для обработки одного запроса. Эта память индивидуальна для каждой сессии. Теоретически, максимально потребная память равна max_connections * work_mem, на практике такого не встречается потому что большая часть сессий почти всегда висит в ожидании.
- bgwrite_delay — 20ms. Время сна между циклами записи на диск фонового процесса записи. Данный процесс ответственен за синхронизацию страниц, расположенных в shared_buffers с диском. Слишком большое значение этого параметра приведет к возрастанию нагрузки на checkpoint процесс и процессы, обслуживающие сессии (backend). Малое значение приведет к полной загрузке одного из ядер.
- synchronous_commit — off. ОПАСНО! Выключение синхронизации с диском в момент коммита. Создает риск потери последних нескольких транзакций (в течении 0.5-1 секунды), но гарантирует целостность базы данных, в цепочке коммитов гарантированно отсутствуют пропуски. Но значительно увеличивает производительность.
Это далеко не всё, что удалось узнать из Интернета и статей на https://its.1c.ru . НО! Даже этих настроек хватит, чтобы видимо ускорить работу 1С:Предприятие на PostgreSQL.
В этом конкретном случае после перехода на PostgreSQL пользователи стали жаловаться, что 1С начала тормозить ещё сильнее, чем в файловом варианте. Но после этого тюнинга база «полетела». Теперь все наслаждаются быстрой работой. Однако есть и свои минусы в виде блокировок. Останавливаться на это мы не планируем, будем копать дальше и выкладывать полезные изменения конфигурации PostgreSQL сюда.
Обновил на одном из серверов Debian до 9.2 Stretch, следовательно необходима установка сервера 1С и PostgreSQL, свежих версий.
Задача
Есть сервер с Debian 9.2 Stretch на борту, дистрибутивы сервера 1С:Предприятие 8.3.10.2580 и PosgreSQL 9.6. Необходимо установить и настроить для совместной работы сервер 1С:Предприятие 8.3.10.2580 и PosgreSQL 9.6.
Решение
Самым первым делом устанавливаем локализацию, сервер 1С работает с локализацией ru_RU.UTF8, и PostgreSQL создает кластер с локализацией по умолчанию.
# locale-gen en_US # locale-gen ru_RU # update-locale LANG=ru_RU.UTF8 # dpkg-reconfigure locales
По последней команды откроется псевдо-графический интерфейс в котором необходимо проверить правильность выбранных вариантов и ответить утвердительно, на самим деле можно обойтись последней командой и настроить все в ней. Для применения изменений необходимо перезагрузить систему.
Установка сервера 1С:Предприятие
Предварительно установим необходимые пакеты
# apt-get install imagemagick ttf-mscorefonts-instal
С установкой cсервера, как правило проблем нет, просто последовательно устанавливаем пакеты
# dpkg -i 1c-enterprise83-common_8.3.10-2580_amd64.deb # dpkg -i 1c-enterprise83-server_8.3.10-2580_amd64.deb # dpkg -i 1c-enterprise83-ws_8.3.10-2580_amd64.deb
Если вдруг пакеты не встали то воспользуемся командой
# apt-get -f install
в итоге станет все хорошо, если хорошо не стало, то читаем выхлоп и правим зависимости. У меня проблем не возникло.
На этом этапе уже можно добавить сервер в консоль серверов и он должен быть виден.
Для запуска, перезапуска, остановки службы сервера 1С:Предприятие можно воспользоваться командами:
# /etc/init.d/srv1cv83 start # /etc/init.d/srv1cv83 restart # /etc/init.d/srv1cv83 stop
Если необходимо установить драйвер HASP, то прочитать как это делается можно в статье .
Установка PostgreSQL
С PostgreSQL не все так просто, до этого стояла версия 9.4 распространяемая фирмой 1С, в дистрибутиве были все пакеты, а для избежания поломок обновлением версии фиксировал средствами apt. А вот в 9.6 пакеты не все, часть пакетов необходимо устанавливать из родного репозитория с понижением версии PostgreSQL и зависимых компонент до необходимой.
Этот путь мне не очень понравился, в интернетах и на партнерке наткнулся на PostgreSQL распространяемый компанией Postgres Professional , решил ставить его. У указанной компании есть свои продукты под названием Postgre Pro для корпоративных клиентов, но для моих нужд достаточно PostgreSQL, распространяется он под лицензией .
Согласно инструкции подключаем репозиторий, добавляем ключ и устанавливаем PostgreSQL
# sh -c "echo "deb http://1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list" # wget --quiet -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | apt-key add - && apt-get update # apt-get install postgresql-pro-1c-9.6
При установке автоматически создается кластер main , необходимо только произвести некоторые настройки. Для возможности подключения открываем файл /etc/postgresql/9.6/main/pg_hba.conf
# nano /etc/postgresql/9.6/main/pg_hba.conf
находим строку
Local all postgres peer
и изменяем на peer на trust
# psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD "Password ""
вместо Password пишем необходимый пароль.
Остается перезапустить службу, и можно подключиться к серверу PostgreSQL средствами pgAdmin.
Для запуска, перезапуска, остановки службы сервера PostgreSQL можно воспользоваться командами:
# /etc/init.d/postgresql start # /etc/init.d/postgresql restart # /etc/init.d/postgresql stop
Если Вы все сделали и сервер так и не заработал, то первым делом необходимо проверить локализацию. Если установлена не та локализация, то необходимо пересоздать кластер, команды и результат выполнения ниже
# pg_dropcluster --stop 9.6 main Redirecting stop request to systemctl # pg_createcluster --locale ru_RU.UTF-8 9.6 main Creating new cluster 9.6/main ... config /etc/postgresql/9.6/main data /var/lib/postgresql/9.6/main locale ru_RU.UTF-8 socket /var/run/postgresql port 5432
Проверка результата
Теперь можно зайти в консоль серверов добавить ИБ и проверить работу.
Популярное
- Как настроить тачпад на ноутбуке
- Автомобильный держатель для телефона на присоске с беспроводной быстрой зарядкой InnoZone Описание принципа работы Onetto Charging Easy Flex Wireless
- Бесплатный украинский VPN
- PDF Creator — программа для создания файлов PDF Больше информации о PDF24 Creator
- Ремонт блока питания для ноутбука Как сделать регулируемым блок питания для ноутбука
- Все возможности Paint для создания и редактирования изображений Сохранение изображения впервые
- Оптимизация MySQL запросов Sql несколько запросов в одном
- Как настроить розничные продажи
- Калибровка экрана и сенсора на Андроид: настройки и приложения Возможные проблемы с калибровкой
- Пособие по работе с Joomla CMS для начинающих