Настройка PostgreSQL в Debian/Ubuntu для сервера 1С 8.1

Последние несколько дней имел дело с настройкой Postgresql в Ubuntu 8.04 для сервера 1C 8.1. Серверная часть 1С расположена на Windows 2008, а постгрес было решено вынести на отдельный линуксовый сервер и связать все это чудо локальной сетью. Собственно, как выяснилось, для корректной работы 1С с нашим сервером, требуется специальная сборка Postgresql, которая содержит необходимые патчи. В общей сложности установка 1C-ного постгреса такая же как и обычного, но я столкнулся с многими косяками и нюансами в процессе данной операции, о которых и намерен рассказать в данной статье. В интернете я нашел 2 варианта установки: 1. взять патчи с официального сайта 1С, взять исходники постгреса, наложить патчи, скомпилить и установкить; 2. взять готовые пакеты сервера, собранные со всеми необходимыми патчами на сайте компании Ethersoft и установить их. В 1-м случае идем за исходниками сюда и за патчами сюда. Качаем, распаковываем, применяем патчи, компилим и устанавливаем. Я терпеть не могу собирать что-либо из исходников, т.к. это отнимает кучу времени и нервов (гентушники меня сейчас тихо ненавидят :))), поэтому я выбираю вариант 2-й (компилить из исходников я все же пробовал, но ничего хорошего из этого не получилось) В случае с готовыми пакетами идем сюда и выбираем пакетики на свой вкус и для своего дистрибутива. Я настраивал Ubuntu 8.04 (x86-64) поэтому взял эти — ftp://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/x86_64/Ubuntu/8.04/ Качаем в отдельную папку и устанавливаем командой:

$ dpkg -i *.deb

Если у вас все установилось корректно, то вы счастливый человек :) у меня же данные пакеты посыпались ошибками и установились настолько криво, насколько это возможно, и всему виной предыдущая инсталяция постгреса, которая при удалении не забрала с собой в ад все свои файлы. В итоге, при установке патченной версии, я получил ошибки записи некоторых файлов и создания некоторых sym-линков. Сказать по правде, сначала я не обратил на это внимания, т.к. сервер стартанул и с виду вполне нормально работал (об этом расскажу ниже). Итак, считаем что пакеты поставились корректно. Теперь установим дополнительные библиотеки, для работы PostgreSQL:

$ apt-get install libxslt1.1

и запустим наш сервер БД:

$ /etc/init.d/postgresql start

сервер выдаст сообщение об успешной инициализации БД и успешном запуске, если нет — значит он установлен криво и о том как его выровнять расскажу позже, а сейчас считаем что на данном этапе все работает. Зададим пароль администратору PostgreSQL:

$ sudo su postgres -c psql postgres
postgres=# ALTER USER postgres WITH PASSWORD 'password';
postgres=# \q

Вместо password пишем свой пароль. На этой команде я получил ошибку. Что-то типа:

psql: could not connect to server: No such file or directory

Вызвано это тем, что наш сервер хранит свой сокет в папке /tmp вместо дефолтной /var/run/postgresql. Для решения этой проблемы я сделал символическую ссылку. Можно явно задать сокет с помощью опции -h при коннекте к БД, но я посчитал, что ссылка более универсально решит эту проблему. В общем:

$ ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

После этого проблем с подключением к БД из консоли не должно возникнуть. Далее настраиваем наш сервер для работы в сети и по желанию phpPgAdmin. О том, как это делается, я рассказывал здесь. Считаем что настроили :) Лезем на сервер с виндой и пытаемся подключиться и создать базу. Что бы линуксовый сервер был доступен по имени, пропишем в файл C:\WINDOWS\system32\drivers\etc\hosts строку:

192.168.1.5       PSQLSERVER
где 192.168.1.5 - ip сервера с PostgreSQL.

если вам очень повезло, то настройка PostgreSQL для сервера 1С законченна, но для меня это было лишь половина пути :) Сначала я получил ошибку:

could not access file '$libdir/fastrun' No such file or directory.

при этом сервер постгрес выглядел вполне рабочим и в лог писал что-то вроде:

. . .
NOTICE:  there is no transaction in progress
ERROR:  type mvarchar does not exist
STATEMENT:    CREATE OR REPLACE FUNCTION isfulleq_mvarchar(mvarchar, mvarchar)
  RETURNS bool AS '$libdir/mchar'
  LANGUAGE C CALLED ON NULL INPUT IMMUTABLE;
. . .
NOTICE:  there is no transaction in progress
ERROR:  could not access file "$libdir/fasttrun": No such file or directory
STATEMENT:    CREATE OR REPLACE FUNCTION fasttruncate(text)
  RETURNS void AS '$libdir/fasttrun'
  LANGUAGE C RETURNS NULL ON NULL INPUT IMMUTABLE;
 
NOTICE:  there is no transaction in progress
. . .

Причина данной гадости в том, что не хватает библиотек PostgreSQL. В моем случае из-за того, что постгрес установлен криво т.к. старая версия из репозитариев не удалилась полностью, а новая установилась сверху. В итоге у меня получилась каша из 2-х разных постгресов, одни файлы от старого, другие от нового, пути, библиотеки, символьные ссылки и т.п. все это мешалось и путалось между собой. В общем было решено удалить все файлы постгреса, которые я только нашел поиском и руками. В папках:

/etc/init.d
/var/lib
/usr/lib
/usr/bin
/usr/share

После этого попробовал опять установить пакеты с помощью

$ dpkg -i *.deb

но они все же не устанавливались корректно, поэтому распаковал каждый пакет, скопировал файлы в системные папки и выполнил скрипты. На этом проблема с нехваткой библиотек решилась и возникла проблема с локализацией, т.к. на сервере Ubuntu не была установленна украинская локаль. Устанавливаем:

$ apt-get install language-pack-uk language-pack-ru
$ locale-gen uk_UA.UTF-8
$ locale-gen ru_RU.UTF-8
$ dpkg-reconfigure locales

На этом настала мне радость и всемирное блаженство :) т.к. база создалась безо всяких матюков :) Цель этой статьи не столько описать последовательность действий при настройке PostgreSQL, как описать все мои грабли и косяки, а так же их причину и способ устранения, что бы не сталкиваться с этим в будущем и, возможно, помочь кому-то избежать ошибок :)

Настройка PostgreSQL в Debian/Ubuntu для сервера 1С 8.1: 14 комментариев

  1. Denix

    Увлекательно — но вот у меня лично тоже с косяками от предыдущего Постгриса траблы. Не расскажешь подробней как бороться и чистить систему от них ?

  2. KennethJEM

    дешевый алкоголь спб
    Еще одно кафе. Там радостно говорят, что привезут алкоголь мне в любой час (доставка – 300 рублей), но оплатить его надо заранее. В часы работы дирекции, то есть до 20.00. А если я его закажу сейчас, т.е. вечером, и даже оплачу – через «Яндекс-деньги» – раньше чем к утру его не доставят.

    Директор заведения, до которого я дозвонилась на следующий день, заявил, что такое правило – заказа алкоголя вечером, доставка в любое время, он действительно ввел летом, но повышения спроса это не вызвало. А сейчас торговля алкоголем посредством интернет-систем запрещена, а закон нарушать он не будет. Сотрудник, который предлагал купить бутылку через «Яндекс», просто не владел ситуацией. «А что б вы мне сказали, если б транзакция уже была проведена?» — возмутилась я. «Предложил бы взамен дисконтную карту».
    купить алкоголь в спб
    Кстати, для юридических лиц штраф за продажу алкоголя в ночное время оставляет 40 — 50 тысяч рублей. Плюс еще 30 — 40 тысяч, если покупателю не был выдан чек. И конфискация товара.

    водка в канистрах в санкт петербурге купить
    Кто трезво мыслит, без бутылки не останется.
    водка в канистрах в санкт петербурге купить — Алкоголь в канистрах в спб.

    Некоторые петербургские магазины идут навстречу постоянным покупателям. Так, один известный петербуржец, просивший не называть его имени, рассказал, что поздним вечером часто заезжает в один и тот же супермаркет премиум-класса.

  3. quest bars cheap

    Do you have a spam issue on this site; I also am a blogger, and I was wanting
    to know your situation; many of us have developed some nice methods
    and we are looking to exchange solutions with other folks, be sure to shoot me an e-mail if interested.

  4. Алексей

    Перезвоните мне пожалуйста по номеру 8 (812) 200-40-89 Алексей, для связи со мной нажмите кнопку 1. На заставку не обращайте внимания, Атс подвисла.

  5. Алексей

    Перезвоните мне пожалуйста по номеру 8 (812) 200-42-35 Алексей, для связи со мной нажмите кнопку 1. На заставку не обращайте внимания, Атс подвисла.

  6. Алексей

    Перезвоните мне пожалуйста по номеру 8 (812) 200-40-97 Алексей, для связи со мной нажмите кнопку 1. На заставку не обращайте внимания, Атс подвисла.

  7. Алексей

    Перезвоните мне пожалуйста по номеру 8 (812) 200-42-68 Алексей, для связи со мной нажмите кнопку 1. На заставку не обращайте внимания, Атс подвисла.

  8. sling tv

    Definitely believe that that you said. Your favorite justification seemed to be at the net the easiest thing to consider of.
    I say to you, I certainly get annoyed whilst people think about worries
    that they plainly do not recognize about. You controlled to hit the
    nail upon the highest and also outlined out the whole thing with no need side effect , people could take a signal.
    Will probably be back to get more. Thanks

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Не робот ли ты часом? * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.