Для 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С….
@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
Обязательно протестю, после того, как поиграюсь с CentOS+1С
Alsigned, тебе однозначный респект.
А вы не пробовали самостоятельно настроить PostgreSQL для работы с сервером 1С:Предприятие и собрать deb-пакеты дистрибутива на будущее? Очень хотелось бы увидеть данную статью. Если не собираетесь делать сами, может ресурсы посоветуете, на которых вышеуказанная ситуация рассмотрена. А то гугл по настройке связки PostgreSQL и сервер 1С:Предприятие 8 фактически выдает ссылки только на ваш блог. Заранее спасибо!..
@Nigelist
Настроить PostgreSQL для работы с сервером 1с Предприятия 8.2 я пробовал – работает и очень даже не плохо
Для Fedora/CentOS у меня уже есть собранные с учетом всех особенностей rpm-пакеты в репозитории, для их установки достаточно сделать всего пару действий типа yum install и initdb.
Собирать и тестировать PostgreSQL под большое количество разнобоких линуксов дело не самое простое. Поэтому в статье «Установка 1С 8.2 и Postgresql 9.0 на Linux» я предлагал помочь мне в развитии подобного репозитория, но не смотря на более чем 15 000 просмотров, не появилось ни одного желающего.
Видимо людям это не нужно. А хорошая была идея…
Alsigned, я готов помочь, чем могу. Единственное временное препятствие, временное отсутствие знаний…
Которые я и хочу приобрести…
Сам уже писал статейку на linuxforum.ru, о использовании дистрибутива Etersofta… Но их продукты платные. Да и собирают их они на устаревших дистрибутивах, как и разработчики 1С. Их дистрибутивы нестабильны, требуют пакеты которые использовались в более старых пакетах. Вот и хотелось бы полностью разобраться в этом вопросе.
В общем хочу разобраться с настройкой PostgreSQL 9 для 1С, без их (1С) патчей. Можно даже на примере стандартного PostgreSQL, входящего в поставку большинства дистрибутивов.
@Nigelist
В плане Etersoft я согласен – у них очень много мелких недостатков. Но у них есть еще услуги внедрения и в этом случае они делают все как надо, и честно говоря цену дают достаточно низкую.
Пачи 1с подходят только к конкретным версиям PostgreSQL 9.0.1/8.4.1/8.3.8 для остальных версий придется самому копаться в исходниках и пачить все вручную.
PS: По поводу репозитория пиши в аську на странице о блоге, но скажу сразу есть у меня несколько причин недолюбливать debian и ubuntu
Alsigned, если можно сделать самому почему нет? Да интересно мне. А по поводу патчей 1С, именно процесс ручной оптимизации постгреса под нужды сервера 1С меня очень интересует…
Я тоже готов помочь
Еще было бы хорошо заново пересобрать установочные пакеты сервера 1С, с соблюдением всех зависимостей для того или иного дистрибутива Linux.
@Nigelist
Я пока не встречал исходники сервера 1c Предриятия, поэтому процесс пересборки пакетов превращается в распакуй готовый пакет, препиши установочный скрипт и запакуй обратно. Здесь следует озадачится вопросом насколько это легально? Не будет ли 1с против внесения изменений и распространения сервера 1с предприятия, который является закрытым для скачивания.
Перечисли список дистрибутивов Linux для которых требуется пересборка сервера 1с предприятия?
Здравствуйте, сделал всё по инструкции – всё равно типичная ошибка на тип mvarchar при создании инфобазы..
((
P.S. Перерыл уже весь гугл – какие сброки postgresql только не ставил – не алё.
@ennor
Привет.
Ошибка mvarchar появляется при неправильно установленном postgresql-contrib.
1. Если до сборки postgresql из исходников устанавливались какие-либо версии из репозитория – нужно удалить все что от них осталось.
2. Проверить установку libicu и наличие библиотек libicuuc, libicui18n и libicudata – все они необходимы для правильной работы contrib.
3. Проверить наличие ошибок во время make && make install при сборке contrib.
4. Можно еще неправильно сделать initdb, тогда нужно удалить /var/lib/initdb/data и проделать инициализацию базы заново.
Вроде все.
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С:Предприятие так, чтобы необходимые пакеты докачивались по мере установки. Как это происходит при установке какого либо пакета из репозиториев.
Alsigned, если у вас нет времени и желания возиться с Ubuntu/Debian. То может ссылки на статьи по этой тематике знаете и поделитесь?
@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: От себя лично желаю тебе успехов в это нелегком труде.
Alsigned, та с ttf2pt1 уже разобрался нашел альтернативный пакет в действующем репозитории. Ну да ладно, буду дальше копать.
слушайте, а разница в скорости то вообще есть между postgres 8 и 9?
@Seerg
Привет, разницы в скорости между PostgreSQL 8.4 и 9.0 фактически нет, по тесту Гилева попугаев получается приближенно одинаково. Но с PostgreSQL 9.0 база проводится быстрей процентов на 5.
Спасибо за статью! Все получилось!
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
@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
где на вашем сайте найти эти файлы??? все пересмотрел
@Alexey
Порядок правильный.
Исходники лежат здесь http://www.alsigned.ru/?dl_name=postgresql-9.0.1-1C.tar.gz, в статье это ссылка «исходники PostgreSQL 9.0.1 для 1С»
Ну просто достала эта ошибка – Ошибка СУБД «Ошибка СУБД: DATABASE не пригоден для использования»
как написано http://www.alsigned.ru/?p=1129
пишут что не правильно пропатчен!!!
Уже 2 раз сервер с нуля переустанавливаю и ни как!!!
Помогите кто знает, делал всё по описанию
Привет, @Alexey
Какая ОС?
В большинстве случаев ошибка «Ошибка СУБД: DATABASE не пригоден для использования» говорит о не правильно проведенной инициализации БД, отсутствии необходимой локали или не пропаченном PostgreSQL. Кроме того есть «Ошибка СУБД type «mvarchar» not exist at character 31.» связанная с отсутствием lib-icu, которая может перерастать в «Ошибка СУБД: DATABASE не пригоден для использования».
Для начала нужно удалить все из каталога /usr/pgsql/data и преинициализировать БД, плюс внимательно посмотреть на все что напишет initdb – возможно здесь и кроется проблема
Большое спасибо за статью, сделал ссылку с форума 1clinux.org
Продублировал на всякий случай файл на том же форуме исходники PostgreSQL 9.0.1 для 1С.
Ссылка статическая: http://1clinux.org/pub/postgresql-9.0.1-1C.tar.gz
Alsigned, а есть статья, посвященная установке 1С под centos? Желательно как раз через yum install… Хоть и на Ubuntu вроде сервер поднял, но centos мне больше по душе… Сам не настолько хорошо знаю линукс, чтобы собирать пакеты вручную:(
@Виктор
Статьи по установке 1c + PostgreSQL на CentOS нет, потому что она мало чем отличается от установки на Fedora http://www.alsigned.ru/?p=1129.
@Alsigned
А репозиторий-то есть? Хочется именно сделать пару действий…
Добрый день!
Сразу оговорюсь, что сравнительно недавно осваиваю 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 очей.
«На ощупь» реальный сервер работает намного быстрее виртуалки, потестить на реальной базе, пока нет возможности.
Я в замешательстве. Подскажите, в чём может быть причина такой низкой производительности? Или же тест Гилева не актуален?
Спасибо, и надеюсь на оперативный ответ.
Привет.
Тест Гилева не всегда дает стопроцентный результат. Показатель в 5 попугаев говорит о явно недостаточной производительности, на таком железе должно получаться 10-15.
Проблема может быть в двух местах:
1. CPU Core i3 3.2 ГГц – они бывают разными, можно купить сервер с i3, а работать он будет как со старым Dual Core
2. HDD 3x500Gb – в большинстве случаев на производительности 1с сказывается низкая скорость файловой системы. Какой RAID-контроллер? Диски SATA или SAS?
Спасибо, что сразу ответили!
Собственно сервер для небольшой совсем компании, и представляет из себя обычный компьютер с хорошим охлаждением. Пользователей совсем мало 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 попугаев.
Ещё раз, спасибо, за оперативный ответ, и очень надеюсь на дальнейшую помощь.
Да, ещё один момент. Тест идёт очень долго. Точно не засекал, но минут двадцать.
Ещё один момент упустил.
Харды все Seagate 500 GB SATA-III Barracuda 7200.12 16MB
На мой взгляд причина низкой производительности на тестах в процессоре, i3-550 не очень-то быстрый. Нужно потестировать и посмотреть что загружено во время теста, если одно из ядер процессора загружается на 100% причина в нем.