Для CentOS/Fedora на сайте 1с есть почти готовый к использованию src.rpm, который при наличии некоторой сноровки без большого можно труда собрать и установить. Что же касается остальных систем – для них есть три пача 1c_FULL_90-0.19.patch, postgresql-1c-9.0.1.patch, applock-1c-9.0.1.patch и совершенно непонятно что же с ними делать. На какой PostgreSQL я не пытался их наложить без внесения имений в исходники он либо не собирается, либо не работает с 1с.

В данной статье описывается сборка и установка PostgreSQL-9.0.1 для работы с сервером 1С Предприятия 8, используемая операционная система Ubuntu 10.10 x64.

1. Сборка PostgreSQL 9.0.1

Накладывание кривоватых пачей и перерывание файлов в поисках заветных строк не самое интересное занятие, поэтому выкладываю уже исправленные исходники PostgreSQL 9.0.1 для 1С.

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

root@pgsrv# apt-get install libreadline-dev libicu-dev patch zlib1g-dev

Переходим в директорию /usr/local/src, скачиваем и распаковываем исходники:

root@pgsrv# cd /usr/local/src
root@pgsrv# wget http://www.alsigned.ru/?dl_name=postgresql-9.0.1-1C.tar.gz -O postgresql-9.0.1.tar.gz
root@pgsrv# tar xzvf postgresql-9.0.1.tar.gz

Переходим в каталог с исходниками, конфигурируем, собираем и устанавливаем:

root@pgsrv# cd postgresql-9.0.1
root@pgsrv# ./configure --disable-integer-datetimes --prefix=/usr
root@pgsrv# make && make install

Переходим в каталог contrib, собираем и устанавливаем:

root@pgsrv# cd contrib
root@pgsrv# make && make install

2. Настройка PostgreSQL 9.0

Создаем пользователя и группу postgres:

root@pgsrv# groupadd -r postgres
root@pgsrv# useradd -g postgres -r -d /var/lib/pgsql -s /bin/bash postgres

Создаем директорию для PostgreSQL

root@pgsrv# mkdir /var/lib/pgsql
root@pgsrv# chown postgres:postgres /var/lib/pgsql

Генерируем локали en_US и ru_RU.UTF-8 необходимые для работы PostgreSQL с 1с:

root@pgsrv# locale-gen en_US ru_RU.UTF-8

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

root@pgsrv# su postgres
postgres@pgsrv$ initdb -D /var/lib/pgsql/data --locale=ru_RU.UTF-8
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
 
The database cluster will be initialized with locale ru_RU.UTF-8.
The default database encoding has accordingly been set to UTF8.
The default text search configuration will be set to "russian".
 
. . . . .
. . . . .
 
Success. You can now start the database server using:
 
postgres -D /var/lib/pgsql/data
or
pg_ctl -D /var/lib/pgsql/data -l logfile start

Запускаем PostgreSQL:

postgres@pgsrv$ pg_ctl -D /var/lib/pgsql/data start
server starting

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

postgres@pgsrv$ psql -U postgres -c "alter user postgres with password '123456';"
postgres@pgsrv$ exit

Делаем скрипт для запуска-остановки, для этого создаем файл /etc/init.d/postgresql следующего содержания.

#!/bin/sh
#  Скрипт запуска/остановки PostgreSQL-9.0-1C
 
DATADIR=/var/lib/pgsql/data
PGCTL=/usr/bin/pg_ctl
PGUSER=postgres
 
case $1 in
start)
sudo -u $PGUSER -H $PGCTL -D $DATADIR start
;;
stop)
sudo -u $PGUSER -H $PGCTL -D $DATADIR stop
;;
restart)
sudo -u $PGUSER -H $PGCTL -D $DATADIR stop
sudo -u $PGUSER -H $PGCTL -D $DATADIR start
;;
*)
echo start|stop|restart
return 1;
;;
esac

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

root@pgsrv# chmod u+x /etc/init.d/postgresql
root@pgsrv# update-rc.d postgresql defaults

3. Заключение

Я не большой любитель систем на базе Debian/Ubuntu, но иногда можно сделать исключение – хотя бы ради расширения кругозора. По крайней мере я не сожалею о потраченном на написание этой статьи времени и вполне уверен что она принесет пользу не только мне.

36 Коммент. : “Сборка 1c PostgreSQL 9.0 на Ubuntu 10 x64”

  1. Спасибо за статью!

    Будь другом, опиши пожалуйста подробно процесс получения патчей, исходников постгре и накладывания патчей на исходники.
    Весь день убил, пока не понял что стандартный постгре не подходит для сервера 1С….

  2. Alsigned пишет:

    @Alexey
    Как показывает практика при большом количестве действий описанных в статье, люди торопятся и пропускают одну-две незначительные детали или путают одну букву в слове, отсюда возникает куча ошибок. Именно поэтому я решил выложить уже пропаченные исходники, а не писать длинную историю…

    Кратко опишу последовательность:
    Берем PostgreSQL 9.0.1 из архива ftp://ftp-archives.postgresql.org/pub/source/v9.0.1/postgresql-9.0.1.tar.gz
    Пачи для PostgreSQL лежат на сайте 1с http://v8.1c.ru/overview/postgres_patches_notes.htm
    patch -p0 < 1c_FULL_90-0.19.patch
    patch -p1 < postgresql-1c-9.0.patch
    patch -p0 < applock-1c-8.4.0.patch
    Дальше берем из исходников с моего сайта следующие файлы и кладем их на соответствующие места:
    /src/backend/parser/gram.c
    /src/backend/parser/gram.h
    /src/interfaces/ecpg/preproc/preproc.c
    /src/interfaces/ecpg/preproc/preproc.h
    /src/interfaces/ecpg/preproc/preproc.y

    Если есть желание можно сравнить изменения в файлах при помощи diff, и выпустить к PostgreSQL-1С последний 4-ый и окончательный super-1c-9.0.patch :)

  3. Обязательно протестю, после того, как поиграюсь с CentOS+1С
    Alsigned, тебе однозначный респект.

  4. А вы не пробовали самостоятельно настроить PostgreSQL для работы с сервером 1С:Предприятие и собрать deb-пакеты дистрибутива на будущее? Очень хотелось бы увидеть данную статью. Если не собираетесь делать сами, может ресурсы посоветуете, на которых вышеуказанная ситуация рассмотрена. А то гугл по настройке связки PostgreSQL и сервер 1С:Предприятие 8 фактически выдает ссылки только на ваш блог. Заранее спасибо!..

  5. Alsigned пишет:

    @Nigelist
    Настроить PostgreSQL для работы с сервером 1с Предприятия 8.2 я пробовал – работает и очень даже не плохо ;)

    Для Fedora/CentOS у меня уже есть собранные с учетом всех особенностей rpm-пакеты в репозитории, для их установки достаточно сделать всего пару действий типа yum install и initdb.

    Собирать и тестировать PostgreSQL под большое количество разнобоких линуксов дело не самое простое. Поэтому в статье «Установка 1С 8.2 и Postgresql 9.0 на Linux» я предлагал помочь мне в развитии подобного репозитория, но не смотря на более чем 15 000 просмотров, не появилось ни одного желающего.
    Видимо людям это не нужно. А хорошая была идея… ;)

  6. Alsigned, я готов помочь, чем могу. Единственное временное препятствие, временное отсутствие знаний… :) Которые я и хочу приобрести…

    Сам уже писал статейку на linuxforum.ru, о использовании дистрибутива Etersofta… Но их продукты платные. Да и собирают их они на устаревших дистрибутивах, как и разработчики 1С. Их дистрибутивы нестабильны, требуют пакеты которые использовались в более старых пакетах. Вот и хотелось бы полностью разобраться в этом вопросе.

    В общем хочу разобраться с настройкой PostgreSQL 9 для 1С, без их (1С) патчей. Можно даже на примере стандартного PostgreSQL, входящего в поставку большинства дистрибутивов.

  7. Alsigned пишет:

    @Nigelist
    В плане Etersoft я согласен – у них очень много мелких недостатков. Но у них есть еще услуги внедрения и в этом случае они делают все как надо, и честно говоря цену дают достаточно низкую.

    Пачи 1с подходят только к конкретным версиям PostgreSQL 9.0.1/8.4.1/8.3.8 для остальных версий придется самому копаться в исходниках и пачить все вручную.

    PS: По поводу репозитория пиши в аську на странице о блоге, но скажу сразу есть у меня несколько причин недолюбливать debian и ubuntu ;)

  8. Alsigned, если можно сделать самому почему нет? Да интересно мне. А по поводу патчей 1С, именно процесс ручной оптимизации постгреса под нужды сервера 1С меня очень интересует…

  9. mboy пишет:

    Я тоже готов помочь

  10. Еще было бы хорошо заново пересобрать установочные пакеты сервера 1С, с соблюдением всех зависимостей для того или иного дистрибутива Linux.

  11. Alsigned пишет:

    @Nigelist
    Я пока не встречал исходники сервера 1c Предриятия, поэтому процесс пересборки пакетов превращается в распакуй готовый пакет, препиши установочный скрипт и запакуй обратно. Здесь следует озадачится вопросом насколько это легально? Не будет ли 1с против внесения изменений и распространения сервера 1с предприятия, который является закрытым для скачивания.

    Перечисли список дистрибутивов Linux для которых требуется пересборка сервера 1с предприятия?

  12. ennor пишет:

    Здравствуйте, сделал всё по инструкции – всё равно типичная ошибка на тип mvarchar при создании инфобазы.. :( ((

    P.S. Перерыл уже весь гугл – какие сброки postgresql только не ставил – не алё.

  13. Alsigned пишет:

    @ennor
    Привет.

    Ошибка mvarchar появляется при неправильно установленном postgresql-contrib.

    1. Если до сборки postgresql из исходников устанавливались какие-либо версии из репозитория – нужно удалить все что от них осталось.
    2. Проверить установку libicu и наличие библиотек libicuuc, libicui18n и libicudata – все они необходимы для правильной работы contrib.
    3. Проверить наличие ошибок во время make && make install при сборке contrib.
    4. Можно еще неправильно сделать initdb, тогда нужно удалить /var/lib/initdb/data и проделать инициализацию базы заново.

    Вроде все. ;)

  14. Alsigned, по поводу необходимой пересборки пакетов сервера 1С:Предприятия. Например: Имеется Ubuntu server 10.04.2 LTS, установлены Postgres@Etersoft 8.4.4 и сервер 1С:Предприятие 8.2. В комплект поставки входит утилита config_server, она предназначена проверить, все ли пакеты необходимые для корректной работы сервера 1С установлены. В общем она запрашивает непонятные пакеты ttf2afm или ttf2pt1, а они в репозитории Ubuntu 10.04 не входят. Последний раз ttf2pt1 упоминался в репах Debian Lenny.

    В общем было бы здорово собрать и скомпилировать дистрибутивы postgres’a и сервера 1С:Предприятие так, чтобы необходимые пакеты докачивались по мере установки. Как это происходит при установке какого либо пакета из репозиториев.

  15. Alsigned, если у вас нет времени и желания возиться с Ubuntu/Debian. То может ссылки на статьи по этой тематике знаете и поделитесь?

  16. Alsigned пишет:

    @Nigelist
    Тема установки 1с на Linux начала терять для меня актуальность, сегодня есть более интересная и насущная область – обновление RH/CentOS до 6 версии и последующий переход с xen на kvm.

    Будет новая версия PostgreSQL на сайте 1с – будет статья и возможно не только под Cent/RHEL/Fedora, но увы сейчас на установку 1с под Debian или Ubuntu фактически нет заказов :( Как результат – себе я жизнь упростил на сколько это возможно, для интернет сообщества тоже не большой вклад сделал, думаю не мало 1с-ок установлено по моим статьям.

    Самой проблемы о которой я говорил ранее по сути нет – установка 1с для Linux доступна только специалистам в этой области или людям с желанием разобраться, и это на мой взгляд очень правильно. Если человек ставит Linux по статье «Установка Linux со скриншотами», а потом 1с и postgresql через apt-get или yum и после этого у него возникает проблема, как ты думаешь что он будет делать?
    1. Наберет в консоли shutdown -r now
    2. Напишет по всем форумам рунета «У мне проблема – ошибка соединения с базой»
    3. Через 2 недели простоя … (здесь могут быть варианты) ;)

    Поэтому есть идея предложить людям немножко заморочиться, что бы была возможность определиться, что им больше нужно 1с Linux или что-то другое.
    Пакеты ttf2afm и ttf2pt1 нужны в основном для работы Web-клиента, сервер 1с Предприятия 8.2 корректно работает и без них. Если вдруг они нужны – набираем в Яндексе «ttf2pt1″ и вот результат на первой странице http://es.archive.ubuntu.com/ubuntu/pool/universe/t/ttf2pt1/.

    PS: От себя лично желаю тебе успехов в это нелегком труде.

  17. Alsigned, та с ttf2pt1 уже разобрался нашел альтернативный пакет в действующем репозитории. Ну да ладно, буду дальше копать.

  18. Seerg пишет:

    слушайте, а разница в скорости то вообще есть между postgres 8 и 9?

  19. @Seerg
    Привет, разницы в скорости между PostgreSQL 8.4 и 9.0 фактически нет, по тесту Гилева попугаев получается приближенно одинаково. Но с PostgreSQL 9.0 база проводится быстрей процентов на 5. ;)

  20. Александр пишет:

    Спасибо за статью! Все получилось!

  21. Alexey пишет:

    Alsigned Нужна ваша помощь!

    по порядку, после скачивания и распаковки Postgresql и патчей – как их установить????

    Пачи для PostgreSQL лежат на сайте 1с http://v8.1c.ru/overview/postgres_patches_notes.htm
    patch -p0 < 1c_FULL_90-0.19.patch
    patch -p1 < postgresql-1c-9.0.patch
    patch -p0 < applock-1c-8.4.0.patch

  22. Alsigned пишет:

    @Alexey
    Привет. Спасибо за доверие ;)

    Чем не устраивает вариант установки предложенный в статье?

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

  23. Alexey пишет:

    Уважаемый Alsigned, извиняюсь немного не точно описал суть вопроса!

    порудок ввода команд в консоль:
    1. patch -p0 < 1c_FULL_90-0.19.patch
    2. patch -p1 < postgresql-1c-9.0.patch
    3. patch -p0 < applock-1c-8.4.0.patch

    Он точно таков? или возможно поменять их местами? (перепутал пункт 2 и 3 местами)

    Вы пишите: Дальше берем из исходников с моего сайта следующие файлы и кладем их на соответствующие места:
    /src/backend/parser/gram.c
    /src/backend/parser/gram.h
    /src/interfaces/ecpg/preproc/preproc.c
    /src/interfaces/ecpg/preproc/preproc.h
    /src/interfaces/ecpg/preproc/preproc.y

    где на вашем сайте найти эти файлы??? все пересмотрел :)

  24. Alsigned пишет:

    @Alexey
    Порядок правильный.

    Исходники лежат здесь http://www.alsigned.ru/?dl_name=postgresql-9.0.1-1C.tar.gz, в статье это ссылка «исходники PostgreSQL 9.0.1 для 1С» ;)

  25. Alexey пишет:

    Ну просто достала эта ошибка – Ошибка СУБД «Ошибка СУБД: DATABASE не пригоден для использования»
    как написано http://www.alsigned.ru/?p=1129
    пишут что не правильно пропатчен!!!

    Уже 2 раз сервер с нуля переустанавливаю и ни как!!!
    Помогите кто знает, делал всё по описанию

  26. Alsigned пишет:

    Привет, @Alexey

    Какая ОС?

    В большинстве случаев ошибка «Ошибка СУБД: DATABASE не пригоден для использования» говорит о не правильно проведенной инициализации БД, отсутствии необходимой локали или не пропаченном PostgreSQL. Кроме того есть «Ошибка СУБД type «mvarchar» not exist at character 31.» связанная с отсутствием lib-icu, которая может перерастать в «Ошибка СУБД: DATABASE не пригоден для использования».

    Для начала нужно удалить все из каталога /usr/pgsql/data и преинициализировать БД, плюс внимательно посмотреть на все что напишет initdb – возможно здесь и кроется проблема ;)

    [root@localhost ~]# su postgres
    bash-4.1$ /usr/pgsql/bin/initdb -D /var/lib/pgsql/data --locale=ru_RU.UTF-8
  27. Большое спасибо за статью, сделал ссылку с форума 1clinux.org
    Продублировал на всякий случай файл на том же форуме исходники PostgreSQL 9.0.1 для 1С.
    Ссылка статическая: http://1clinux.org/pub/postgresql-9.0.1-1C.tar.gz

  28. Виктор пишет:

    Alsigned :
    Для Fedora/CentOS у меня уже есть собранные с учетом всех особенностей rpm-пакеты в репозитории, для их установки достаточно сделать всего пару действий типа yum install и initdb.

    Alsigned, а есть статья, посвященная установке 1С под centos? Желательно как раз через yum install… Хоть и на Ubuntu вроде сервер поднял, но centos мне больше по душе… Сам не настолько хорошо знаю линукс, чтобы собирать пакеты вручную:(

  29. Alsigned пишет:

    @Виктор
    Статьи по установке 1c + PostgreSQL на CentOS нет, потому что она мало чем отличается от установки на Fedora http://www.alsigned.ru/?p=1129.

  30. Виктор пишет:

    @Alsigned

    А репозиторий-то есть? Хочется именно сделать пару действий…

  31. Den пишет:

    Добрый день!
    Сразу оговорюсь, что сравнительно недавно осваиваю Ubuntu Server. До этого работал на винде.
    Моя конфигурация:
    CPU Core i3 3.2 ГГц
    ОЗУ 4 ГГб
    HDD 3x500Gb
    ОС: Ubuntu 10.04 x64
    Платформа: 8.2.13.219

    Postgres ставил в точности по этой статье. Никаких ошибок не возникало. Единсвенный момент,к каталогу /var прикрутил отдельный хард.
    Запускаю тест Гилева (тест брал отсюда: http://gilev.ru/1c/tpc/tpc82.rar) – выдаёт 5 очей !!! Хотя перед сборкой реального сервера тестировал всё на виртуалбокс на ноуте (core i5 2.27/4GR RAM/Win7 Home Premium) тест выдавал 15 очей.
    «На ощупь» реальный сервер работает намного быстрее виртуалки, потестить на реальной базе, пока нет возможности.
    Я в замешательстве. Подскажите, в чём может быть причина такой низкой производительности? Или же тест Гилева не актуален?
    Спасибо, и надеюсь на оперативный ответ.

  32. Alsigned пишет:

    Привет.

    Тест Гилева не всегда дает стопроцентный результат. Показатель в 5 попугаев говорит о явно недостаточной производительности, на таком железе должно получаться 10-15.

    Проблема может быть в двух местах:
    1. CPU Core i3 3.2 ГГц – они бывают разными, можно купить сервер с i3, а работать он будет как со старым Dual Core ;)
    2. HDD 3x500Gb – в большинстве случаев на производительности 1с сказывается низкая скорость файловой системы. Какой RAID-контроллер? Диски SATA или SAS?

  33. Den пишет:

    Спасибо, что сразу ответили!
    Собственно сервер для небольшой совсем компании, и представляет из себя обычный компьютер с хорошим охлаждением. Пользователей совсем мало 2-3 и думаю, проблем с производительностью не будет. Меня просто вогнал в ступор результат теста.

    Процессор вот этот:
    Core i3-550 (http://ark.intel.com/products/48505)

    По-поводу RAID – то его нет. Т.е. я посчитал, что для такого количества пользователей и задач (стандартная конфигурация) он просто не нужен. Я решил (если изврат, сильно не кричите, а скажите как нужно, буду благодарен) сделать так:
    1 HDD (500 GB)
    – 485 GGb EXT4 монтируется в \
    – 15 GGb раздел подкачки
    2 HDD (500 GB)
    – 500GGb EXT4 монтируется в \var ‘на сайте Гилева есть некоторые рекомендации по установке, там написано, что базу лучше выносить на отдельный хард. Я так и сделал.
    3 HDD (500 GB)
    – 500 GGb EXT 4 монтируется в \backup ‘собственно на него планирую делать резервные кокпии базы и самой оси.

    До этого, я собирал сервера под UBUNTU для 1С с предыдущими версиями Postgres, но я тогда ещё не знал про тест Гилева. Позже собирал по различным хауту с целью саморазвития на виртуалке, тест показывал от 13 до 20 попугаев.
    Ещё раз, спасибо, за оперативный ответ, и очень надеюсь на дальнейшую помощь.

  34. Den пишет:

    Да, ещё один момент. Тест идёт очень долго. Точно не засекал, но минут двадцать.

  35. Den пишет:

    Ещё один момент упустил.
    Харды все Seagate 500 GB SATA-III Barracuda 7200.12 16MB

  36. Alsigned пишет:

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

Оставить комментарий