Со времен моей последней статьи по установке 1с прошло уже больше года, и за прошедшее время многое изменилось. Помнится установка отнимала немало усилий, сначала сборка PostgreSQL с установкой 1с-овских патчей, потом мелкие заморочки с запуском сервера 1с предприятия. Я даже сделал свой репозиторий с собранным PostgreSQL, который работает по сей день, но 1с понемногу пошла людям на встречу: сначала появился неплохо собранный src.rpm для RedHat/CentOS, а сейчас на сайте 1с лежат уже готовые сборки как для CentOS/Redhat, так и для Debian/Ubuntu. Посмотрим что у них получилось.

Задача простая – нужно поставить связку 1с Предпритие и PostgreSQL на Ubuntu Server 12.04 x64. Сколько помню, если сравнить Ubuntu Server и Debian, Ubuntu Server из-за более свежих версий пакетов был всегда более капризный по мелочам.

1. Ставим PostgreSQL

Прежде чем начать установку, нам понадобится провести ряд подготовительных процедур. PostgreSQL может установиться и без этого, но проще будет если сразу во время установки он создаст правильные конфиги и инициализирует базу данных в нужной кодировке.
Увеличиваем максимальный размер сегмента памяти до 64Мб.

root@ubsrv:~# echo "kernel.shmmax=67108864" >>/etc/sysctl.conf
root@ubsrv:~# sysctl -p

Генерируем русскую локаль и задаем переменную среды LANG, именно с ней будет работать скрипт инициализации базы данных.

root@ubsrv:~# locale-gen en_US ru_RU ru_RU.UTF-8
root@ubsrv:~# export LANG="ru_RU.UTF-8"

Устанавливаем необходимые зависимисти.

root@ubsrv:~# apt-get install libssl0.9.8 ssl-cert postgresql-common libossp-uuid16 libxslt1.1

Берем с сайта http://users.v8.1c.ru/ архив с PostgreSQL 9.1.2 для 64-битных DEB-систем, распаковываем и устанавливаем нужные компоненты. Нужных и не нужных компонентов в архиве много, для того что бы все заработало достаточно postgresql, postgresql-client и postgresql-contrib.

root@ubsrv:~# tar zxf postgresql_9_1_2_deb_x86_64_tar.gz
root@ubsrv:~/postgres# dpkg -i postgresql-9.1_9.1.2-1.1C_amd64.deb libpq5_9.1.2-1.1C_amd64.deb postgresql-client-9.1_9.1.2-1.1C_amd64.deb postgresql-contrib-9.1_9.1.2-1.1C_amd64.deb

После установки нужно еще немного подправить конфигурационный файл, как не странно будучи поставленным в пакете 1с он содержит не правильные настройки для обработки экранирующих символов, и при создании базы 1с выдает ошибки “syntax error at or near “SECOND” at character 127″ или “syntax error at or near “SECOND” at character 227″. Исправляем в файле /etc/postgresql/9.1/main/postgresql.conf следующие параметры.

backslash_quote = on
escape_string_warning = off
standard_conforming_strings = off

Перезапускаем сервис.

root@ubsrv:~# service postgresql restart

Меняем пароль для пользователя postgres – это тот пароль который мы будем задавать при создании базы данных.

root@ubsrv:~# su postgres
postgres@ubsrv:/root$ cd ~
postgres@ubsrv:~$ psql -U postgres -c "alter user postgres with password '123456';"
postgres@ubsrv:~$ exit

Отключаем обновление для пакетов 1с-овского PostgreSQL.

root@ubsrv:~# echo "libpq5" hold |  dpkg --set-selections
root@ubsrv:~# echo "postgresql-9.1" hold |  dpkg --set-selections
root@ubsrv:~# echo "postgresql-client-9.1" hold |  dpkg --set-selections
root@ubsrv:~# echo "postgresql-contrib-9.1" hold |  dpkg --set-selections

2. Установка сервера 1с Предприятия

Начнем с файла /etc/hosts, для того чтобы 1с-ка правильно создала свои конфиги из него нужно убрать любое упоминание об IPv6 и правильно задать соотношение IP адреса и имени сервера. Пример правильного /etc/hosts.

127.0.0.1       localhost
192.168.20.123  ubsrv.mydomain.local ubsrv

Теперь, точно также как и с Postgresql, забираем с сайта http://users.v8.1c.ru/ последнюю версию платформы сервера 1с 8.2 Предприятия, распаковываем и устанавливаем нужные компоненты.

root@ubsrv:~# tar zxf deb64.tar.gz
root@ubsrv:~# dpkg -i 1c-enterprise82-common_8.2.16-368_amd64.deb 1c-enterprise82-server_8.2.16-368_amd64.deb 1c-enterprise82-ws_8.2.16-368_amd64.deb

Даем права для пользователя и группы 1с Предприятия на каталог установки.

root@ubsrv:~# chown -R usr1cv82:grp1cv82 /opt/1C

Добавляем в автозагрузку и запускам сервис.

root@ubsrv:~# update-rc.d srv1cv82 defaults
root@ubsrv:~# service srv1cv82 start

На этом первоначальная настройка сервер 1с Предприятия 8.2 закончена.

3. Настройка config_server

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

root@ubsrv:~# ln -s /lib/x86_64-linux-gnu/libc-2.15.so /lib64/libc-2.15.so

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

root@ubsrv:~# apt-get install ttf-mscorefonts-installer libt1-5 t1utils

Загружаем конвертер для шрифтов и устанавливаем его:

root@ubsrv:~# wget http://archive.ubuntu.com/ubuntu/pool/universe/t/ttf2pt1/ttf2pt1_3.4.4-1.3_amd64.deb
root@ubsrv:~# dpkg -i ttf2pt1_3.4.4-1.3_amd64.deb

Переходим в каталог /opt/1C/v8.2/x86_64/utils/ и запускаем config_server

root@ubsrv:~# cd /opt/1C/v8.2/x86_64/utils/
root@ubsrv:~# ./config_server /usr/share/fonts/truetype/msttcorefonts

Теперь сервер полностью настроен и готов к употреблению.

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

Казалось бы если отказаться от сборки Posgresql установка станет намного проще, но в итоге по объему работы получается тоже на тоже, много недочетов и мы опять возвращаемся к тому что новички просто не справятся с такой установкой. Если например взять архив с postgresql и установить все пакеты стандартной debian-овской последовательностью команд deb -iR * и apt-get install -f, то postgresql просто не встанет и часть 1с-овских компонентов будет перезаписана стандартными из репозитория. Дальше рихтование конфига, установка локалей, установка прав доступа на каталог 1с – все это создает дополнительные трудности. И как мне кажется, если сейчас забросить работу с 1с, и вернуться к ней года этак через два-три, то все останется на своих местах, будет все таже завсегдатая куча примочек и фенечек ;)

82 Коммент. : “Установка 1c 8.2 и PostgreSQL на Ubuntu Server”

  1. victor пишет:

    Последнее время я использую Valentina Studio для работы с postgresql на linux. Очень хороший и бесплатный инструмент, рекомендую посмотреть.http://www.valentina-db.com/en/valentina-studio-overview

  2. zilog пишет:

    Спасибо огромное, уже третий сервак настроил по этому гайду. Автор создал себе памятник. СПАСИБО!!!

  3. Myxins пишет:

    Потрясающая инструкция, самая понятная из всех. Единственное – был затык на стадии пуска сервера. Писал /ragent: No such file or directory. Гугл по этому запросу ничего не выдает, странно, неужели я один с этим столкнулся. Лечится достаточно просто, наткнулся чисто случайно. Проблема возникла из-за того, что я на 64-разрядный линукс поставил 64-разрядный постгрес и 32-разрядный 1С. apt-get install ia32-libs и все прошло!

  4. Alexey пишет:

    Ставлю по аналогии на Ubuntu server 13.10 с сервера 1с postgreSql 9.2.4. на пакете ..contrib.. требует libicu4.6, а я уже натянул 5.2. Как мне этой редиске сказать, что 4.6 как-бы уже существует. Даунгрейдиться не хочу.

  5. Alexey пишет:

    Сегодня поставил симлинки:
    root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicudata.so.52.1 /usr/lib/x86_64-linux-gnu/libicudata.so.46
    root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicui18n.so.52.1 /usr/lib/x86_64-linux-gnu/libicui18n.so.46
    root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicuio.so.52.1 /usr/lib/x86_64-linux-gnu/libicuio.so.46
    root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicule.so.52.1 /usr/lib/x86_64-linux-gnu/libicule.so.46
    root@gss:/usr/lib/x86_64-linux-gnu# ln -s libiculx.so.52.1 /usr/lib/x86_64-linux-gnu/libiculx.so.46
    root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicutest.so.52.1 /usr/lib/x86_64-linux-gnu/libicutest.so.46
    root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicutu.so.52.1 /usr/lib/x86_64-linux-gnu/libicutu.so.46
    root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicuuc.so.52.1 /usr/lib/x86_64-linux-gnu/libicuuc.so.46
    дальше:
    root@gss:/home/gad/Загрузки/postgre# dpkg -i postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb
    Выбор ранее не выбранного пакета postgresql-contrib-9.2.
    (Чтение базы данных … на данный момент установлено 260876 файлов и каталогов.)
    Распаковывается пакет postgresql-contrib-9.2 (из файла postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb) …
    dpkg: зависимости пакетов не позволяют настроить пакет postgresql-contrib-9.2:
    postgresql-contrib-9.2 зависит от libicu46 (>= 4.6.1-1), однако:
    Пакет libicu46 не установлен.

    dpkg: ошибка при обработке параметра postgresql-contrib-9.2 (–install):
    проблемы зависимостей — оставляем не настроенным
    При обработке следующих пакетов произошли ошибки:
    postgresql-contrib-9.2

  6. Almaz пишет:

    Установил строго по инструкции на Ubuntu Server x64 12.05 LTS , пакет Postgres версии 9.1.2 x64 взял c пользовательского сайта 1С. Но сервер 1С взял 32-битный (ключ у меня только такой) версии 8.3.4.365. Чтоб его запустить надо доустановить
    #apt-get install ia32-libs
    И всё работает, за исключением заключительной части. Проблема в том, что утилиту ttf2pt1 снесли со всех дебиановских репозиториев, чем его можно заменить?

  7. FauZt пишет:

    ttf2pt1

    mkdir /home/user/ttf2pt1
    cd /home/user/ttf2pt1

    wget http://es.archive.ubuntu.com/ubuntu/pool/universe/t/ttf2pt1/ttf2pt1_3.4.4-1.3_i386.deb

    sudo dpkg -i *.deb

  8. FauZt пишет:

    Имею Ubuntu Server x64 12.05 LTS. У меня другая проблема: Через пару дней работы postgresql, установленный из бинарников 1С, свалился с ошибкой:

    The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP.
    It looks like you need to recompile or initdb.

    и больше не запускался. Из исходников (что бы собрать с нужным ключиком), предоставляемых 1С, он тупо не собирается, даже с правкой файлов и установкой нужных ему версий библиотек. Как оттуда спасать рабочие базы в такой ситуации я не знаю..

    Чисто теоретически, если сделать ему initdb в самом начале, такой ошибки не возникнет.

    Другой, такой же сервер, работает нормально.. Но при его инсталляции я эту процедуру проводил несколько раз, когда разбирался с локалью.

    сама процедура такая:

    что б каждый раз не sudoить:
    sudo -i

    нужен пустой каталог /var/lib/postgresql/9.1/main

    сохраняем старый:
    mv /var/lib/postgresql/9.1/main /var/lib/postgresql/9.1/main.b
    mkdir /var/lib/postgresql/9.1/main
    chown postgres:postgres /var/lib/postgresql/9.1/main
    chmod 700 /var/lib/postgresql/9.1/main

    sudo -u postgres /usr/lib/postgresql/9.1/bin/initdb -D /var/lib/postgresql/9.1/main

    Если в конфиге postgres установлено использование ssl (по умолчанию это так):
    cd /var/lib/postgresql/9.1/main
    ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem server.crt
    ln -s /etc/ssl/private/ssl-cert-snakeoil.key server.key

    .. сейчас хочу попробовать пробовать ставить stable версию сервера от ethersoft. Но он 9.0

    PS Дефолтовый конфиг postgresql не рекомендуют использовать сами его разработчики. Он существует для того, чтобы проверить его работоспособность. Производительность сервера с ним так себе. Для оптимизации конфига под конф. сервера есть утилита pg_tune.
    Еще есть неплохая статья http://wiki.etersoft.ru/PostgreSQL/Optimum?v=xnq

  9. FauZt пишет:

    и да, вместо ttf2pt1 1С-ке подойдет и ttf2afm

  10. Доброго времени суток! Спасибо за великолепную статью, очень понятно и грамотно написано. Почитав комментарии я наткнулся на свою ошибку, но описанные пути ее решения мне не помогают( Я взял дистрибутив не ubuntu server, а ubuntu 12.04 десктопную. Тут видимо моя ошибка. Все прекрасно ставиться, но при запуске сервера возникает злополучная ошибка: “строка 193: [: слишком много аргументов”, сервер при этом стартует! Я совершенно нормально создаю базу данных, пользователи да же работают в 1с, но когда необходимо зайти предположим в справочник “пользователи”, для предоставления прав вылетает окно: “ошибка инициализации графической подсистемы”. Я перечитал тонны мануалов и статей, переустанавливал пакеты, но мне так это и не помогло. Может быть добавите в инструкцию, таблетку от этого несчастья!
    Спасибо!

  11. Еще добавлю, что система 64 разрядная на ней стоит 64 разрядный Postgresql, а платформа 1с х32 разрядная, может проблема в этом?

  12. Спасибо за ман! В ближайшее время на виртуалке опробуем.

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