vak: (Default)
[personal profile] vak
Запишу для себя, чтобы не забыть. Вдруг еще когда придется этого зверя оживлять.

Устанавливаем систему управления предприятием. Имеется полтора десятка рабочих мест, требующих доступа к 1С: бухгалтерия, отдел продаж, производство, логистика, склады, начальство и т.п. Всё это под Windows, с перспективой перехода на Линукс. Центральный сервер на Линуксе, поскольку сисадминская служба (со мной во главе) не приемлет Микрософт. Решение: ставим на сервере PostgreSQL. Одну из пользовательских машин переводим на круглосуточный режим работы и на ней устанавливаем т.н. сервер 1С:Предприятие, служащий "мостом" между пользователями и СУБД. На ней же - два USB-ключа доступа, один для всех пользовательских копий 1С, второй - для серверной части.

Установка под Windows особых затруднений не вызвала. Сначала ставим 1С:Предприятие 8.1.10 вкупе с сервером, затем конфигурацию, затем HASP licence manager, втыкаем USB-ключи.

СУБД PostgreSQL потребовала некоторых усилий.

  • Скачиваем дистрибутив с сайта 1С (http://v8.1c.ru/overview/postgres_patches_notes.htm), а именно файл postgresql-8.2.4-6.1C.src.rpm
  • Распаковываем командой "rpm2cpio < *.src.rpm | cpio -iv"
  • Разворачиваем тексты командой "tar xvjf postgresql-8.2.4.tar.bz2"
  • Прикладываем патчи:
    cd postgresql-8.2.4
    patch -p1 < ../rpm-pgsql.patch
    patch -p1 < ../postgresql-logging.patch
    patch -p1 < ../postgresql-test.patch
    patch -p1 < ../postgresql-perl-rpath.patch
    patch -p0 < ../1c_FULL_82-0.18.patch
    patch -p1 < ../postgresql-1c-8.2.patch
    patch -p1 < ../applock-1c-8.2.4.patch
  • Устанавливаем flex: http://flex.sourceforge.net/
  • Устанавливаем bison: http://ftp.gnu.org/gnu/bison/
  • Устанавливаем libreadline: http://ftp.gnu.org/gnu/readline/
  • Устанавливаем libicu: http://icu-project.org/
  • Компилируем и устанавливаем PostgreSQL:
    cd postgresql-8.2.4
    ./configure
    make
    sudo make install
  • Компилируем и устанавливаем дополнительные пакеты для PostgreSQL:
    cd postgresql-8.2.4/contrib
    make
    sudo make install
  • Увеличиваем размер разделяемой памяти в ядре Линукса командой "sysctl -w kernel.shmmax=256000000"
  • Дополняем таблицу разделяемых библиотек командой "/sbin/ldconfig /usr/local/pgsql/lib"
  • Инициализируем хранилище данных:
    su
    adduser postgres
    mkdir /usr/local/pgsql/data
    chown postgres /usr/local/pgsql/data
    su - postgres
    export LANG=ru_RU.utf-8
    /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
    /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &
    /usr/local/pgsql/bin/createdb test
    /usr/local/pgsql/bin/psql test
  • Разрешаем доступ к СУБД по сети. В файл /usr/local/pgsql/data/pg_hba.conf добавляем строки:
    host    all         all         127.0.0.1/32          trust
    host    all         all         xxx.xxx.xxx.0/24      trust
    (Здесь xxx.xxx.xxx.0/24 - адрес и маска локальной сети)
  • Редактируем файл postgresql.init, полученный при распаковке postgresql-8.2.4-6.1C.src.rpm, устанавливаем правильные значения для PGVERSION, PGENGINE, PGDATA, PGLOG, а также:
    export LANG=ru_RU.utf-8
    sysctl -w kernel.shmmax=256000000
  • Копируем postgresql.init в /etc/init.d/postgres, правим в нём строчку "# chkconfig: 345 97 10", для проверки останавливаем сервер PostgreSQL:
    /etc/init.d/postgres stop
  • Добавляем новый сервис в систему командой "chkconfig --add postgres"
  • Для проверки можно перезагрузить весь сервер командой "reboot", или просто запустим СУБД:
    /etc/init.d/postgres start
  • Создаём пользователя и базы для 1С:
    sudo -u postgres /usr/local/pgsql/bin/createuser -s myuser
    sudo -u postgres /usr/local/pgsql/bin/createdb demo
    sudo -u postgres /usr/local/pgsql/bin/createdb enterprise
Теперь возвращаемся к клиентскому компьютеру, запускаем 1С:Предприятие и создаём новые базы: одну демонстрационную, вторую рабочую.
  • Тип расположения информационной базы: на сервере 1С:Предприятия
  • Имя сервера (кластера): IP-адрес локального компьютера
  • Имя базы на сервере: соответственно Demo и Enterprise
  • Тип СУБД: PostgreSQL
  • Имя сервера СУБД: IP-адрес Линукс-сервера
  • Название базы: соответственно demo и enterprise
  • Пользователь: myuser
  • Пароль: пустой
На создание каждой из баз уходило около пятнадцати минут. Интересно, что демонстрационная база занимает 486 мегабайт на сервере PostgreSQL, а пустая рабочая - 240 мегабайт.

Какая все таки версия?

Date: 2008-04-11 13:42 (UTC)
From: [identity profile] mifologist.livejournal.com
Какая все таки версия postgresql? Вы пишите скачиваем postgresql-8.1.5-17.1C.src.rpm а дальше речь идет о 8.2.4

я брал 8.2.4 - все вроде получилось, но при создании БД выходит ошибка.
type "mvarchar" does not exist at character 31 , такое же я получил и пробуя ставить из RPM

Date: 2008-04-14 06:57 (UTC)
From: [identity profile] mifologist.livejournal.com
Упс, вот про это я не знал. И пока не знаю, спасибо, попробую.

Date: 2008-07-02 08:26 (UTC)
From: [identity profile] m-a-x-i.livejournal.com
и как в итоге? У меня тоже пишет: type "mvarchar" does not exist at character 31
пока не поборол =(

зыж pgsql 8.2.4

Date: 2008-07-21 14:51 (UTC)
From: [identity profile] bodun.livejournal.com
1 - из contrib не стоит модуль mchar
2 - в базе не установлен тип mchar-mvarchar contrib/mchar/mchar.sql.in или что из него получается