среда, 20 августа 2014 г.

Полная установка PostgreSQL 9.2.4-1.1C + 1C 8.3.5.1119 на Ubuntu Server 14.04 X64


Увеличиваем максимальный размер сегмента памяти до 4Гб (Обычно половина объема ОЗУ):
#echo "kernel.shmmax=1073741824" >>/etc/sysctl.conf
#sysctl -p

Генерируем необходимые локали и задаем переменную среды LANG, для работы скрипта инициализации БД.
#locale-gen en_US ru_RU ru_RU.UTF-8
#export LANG="ru_RU.UTF-8"

Устанавливаем необходимые зависимисти:
#apt-get install libssl0.9.8 libossp-uuid16 libxslt1.1 libicu52 libt1-5 t1utils imagemagick ttf-mscorefonts-installer unixodbc texlive-base libgfs-1.3-2

Качаем с сайта 1C необходимые пакеты Postgre 9.2.4 и устанавливаем их именно в такой последовательности:
#dpkg -i libpq5_9.2.4-1.1C_amd64.deb 
#wget http://archive.ubuntu.com/ubuntu/pool/main/p/postgresql-common/postgresql-client-common_154_all.deb
#dpkg -i postgresql-client-common_154_all.deb
#dpkg -i postgresql-client-9.2_9.2.4-1.1C_amd64.deb
#wget http://archive.ubuntu.com/ubuntu/pool/main/p/postgresql-common/postgresql-common_154_all.deb
#dpkg -i postgresql-common_154_all.deb
Пересобираем contrib:
#dpkg -x postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb tmpdir
#dpkg -e postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb tmpdir/DEBIAN
#mcedit ./tmpdir/DEBIAN/control
ишем строку libicu46 (>= 1.4.6) и меняем ее на libicu52 (>= 1.4.6)
сохраняем изменения
#rm postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb
#dpkg -b tmpdir postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb
#dpkg -i postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb
#dpkg -i postgresql-9.2_9.2.4-1.1C_amd64.deb

Проверяем, запущен ли сервер:
#service postgresql status
Выхлоп:
9.2/main (port 5433): online

Создаем директорию для хранения баз банных 1С:
#mkdir /mnt/1с/db/
#chown postgres:postgres -R /mnt/1c/db

Инициализируем БД и создаем администратора БД:
#su postgres
$/usr/lib/postgresql/9.2/bin/initdb -D /mnt/1c/db --locale=ru_RU.UTF-8
$psql -U postgres -c "alter user postgres with password 'наш_пароль';"

Правим конфиг для корректной авторизации администратора БД (/mnt/1c/db/pg_hba.conf).
Меняем:
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident
На:
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

Перезапускаем PostgreSQL:
#service postgresql restart

Проверяем:
#netstat -atn|grep 5432
выхлоп:
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
значит все гуд

На этом этапе установка PostgreSQL завершена.

Устанавливаем сервер 1С:
Создаем симлинк:
#ln -s /usr/lib/x86_64-linux-gnu/libMagickWand.so.5 /usr/lib/x86_64-linux-gnu/libMagickWand.so

Ставим все необходимые пакеты:
#dpkg -i 1c-enterprise83-common_8.3.4-476_amd64.deb
              1c-enterprise83-server_8.3.4-476_amd64.deb
              1c-enterprise83-ws_8.3.4-476_amd64.deb
              1c-enterprise83-common-nls_8.3.4-476_amd64.deb
              1c-enterprise83-server-nls_8.3.4-476_amd64.deb
              1c-enterprise83-ws-nls_8.3.4-476_amd64.deb
#wget http://old-releases.ubuntu.com/ubuntu/pool/universe/t/ttf2pt1/ttf2pt1_3.4.4-1.4_amd64.deb
#dpkg -i ttf2pt1_3.4.4-1.4_amd64.deb

Разрешаем запись:
#chown -R usr1cv8:grp1cv8 /opt/1C

Перезапускаем сервер 1с:
#service srv1cv83 restart

Проверяем порты:
#netstat -atn |grep 0.0.0.0:15
 
tcp        0      0 0.0.0.0:1560            0.0.0.0:*               LISTEN  
tcp        0      0 0.0.0.0:1540            0.0.0.0:*               LISTEN  
tcp        0      0 0.0.0.0:1541            0.0.0.0:*               LISTEN

Так же можно для профилактики проверить, все ли процессы сервера запущены:
#ps aux|grep 1c

usr1cv8  28351  0.0  1.1 264284 22664 ?        Ssl  10:01   0:00 /opt/1C/v8.3/x86_64/ragent -daemon
usr1cv8  28354  0.3  2.0 776216 41956 ?        Sl   10:01   0:00 /opt/1C/v8.3/x86_64/rmngr -port 1541 -host test -range 1560:1591
usr1cv8  28378  0.1  1.6 323900 34076 ?        Sl   10:01   0:00 /opt/1C/v8.3/x86_64/rphost -range 1560:1591 -reghost test -regport 1541 -pid f10fbd88-c9eb-11e3-0599-40618600e473
root        28439  0.0  0.0  13472   892 pts/2     S+  10:03   0:00 grep --color=auto 1c

Установка Sentinel HASP USB:
#wget ftp://ftp.cis-app.com/pub/hasp/Sentinel_HASP/Runtime_(Drivers)/6.62/Sentinel_LDK_Ubuntu_DEB_Run-time_Installer.tar.gz
#dpkg --add-architecture i386
#apt-get update
#apt-get install libc6:i386
#dpkg -i aksusbd_2.2-1_i386.deb 
#/etc/init.d/aksusbd restart

Тушим сервер. Вставляем ключи USB. Запускаем сервер.
#service aksusbd status
 
AKSUSB is running.
WINEHASP is running.
HASPLM is running.

Скрипты backup/restore аналогичны скриптам из этой статьи.


На этом этапе всё готово для создания БД из под оснастки Windows "Администрирование серверов предприятия"!!!!!!!!!!!!!!!!!!!

Возможные ошибки:

"Ошибка СУБД: ERROR: type "mvarchar" does not exist at character 31"

Означает что база данных была создана не из оснастки 1с. Необходимо удалить БД и создать ее из оснастки.
______________________________________________________________________

1С Предприятие
Ошибка СУБД:
ERROR: invalid byte sequence for encoding "UTF8": 0x01  (0x01 это для примера, адреса бывают разные)

Невосстановимая ошибка приводящая к вылету клиента
Наблюдается на платформе 1C 8.3.4 и 8.3.5
Редко на УТ 10, и часто на УТ 11

Лекарство: Установить значение параметра standard_conforming_strings в конфиге postgresql.conf в значение 'off'
Параметр лучше поправить как для БД, так и в глобальных настройках.
______________________________________________________________________

Ошибка при получении характеристик
по причине:
{(1, 31)}: Поле не найдено "Свойство.Presentation"
SELECT <<?>>

Означает, что не хватает прав на справочники "ЗначенияСвойствОбъектов", "ЗначенияСвойствОбъектовИерархия" и план видов характеристик "ДополнительныеРеквизитыИСведения".
Соответственно лечится установкой прав на эти объектов хотя бы на "чтение/просмотр"
______________________________________________________________________


Улучшаем работу сервера 1С предприятие 8.3.5

Через оснастку администрирования серверов 1с для конкретной БД выставляем свойства:

Количество ИБ на процесс = 1
Количество соединений на процесс  = 10

Это даёт нам автоматическую балансировку нагрузки по рабочим процессам. Сервер сам создаёт нужное количество рабочих процессов согласно указанным параметрам и также автоматически закрывает неиспользуемые рабочие процессы. Тем самым мы обеспечили не только балансировку, но и ротацию (перезагрузку) рабочих процессов с целью защиты от «пожирания памяти».


14 комментариев:

  1. Грамотная и толковая статья.
    С уважением,
    Антон

    ОтветитьУдалить
  2. а что с веб сервисами как из тут завести?, говорят веб-сервисы 1C 8.3 под Ubuntu 14.04 не работают.
    Модули wsap22.so и wsapch2.so не заводятся на apache-2.4

    ОтветитьУдалить
  3. Про веб-сервисы не подскажу, ибо не работаю с ними. Если будет время поразбираюсь

    ОтветитьУдалить
  4. не подумавши удалил все директории в папке /mnt/1с/db/base теперь когда создаю новые базы они работают но там не появляются, где теперь их искать и как сделать чтоб дазы создавались /mnt/1с/db/base как ранее, инициализировать заново ?

    ОтветитьУдалить
    Ответы
    1. Новые базы лежат в каталоге по-умолчанию (/var/lib/postgresql/9.2/main/base)
      Изменить каталог можно либо через конфиг постгреса или переинициализировать

      Удалить
  5. Здравствуйте, ALAH =)
    Ставлю 8.3.7.1873 на Ubuntu 12.04.5x32/12.04.5x64 с PostgreSQL 9.4.2-1.1C (с сайта 1c) - никаких проблем, всё прекрасно работает! Но никак не получается добиться такого же результата при попытке установить 8.3.7.1873, PostgreSQL 9.4.2-1.1C на Ubuntu 14.04.3x32/14.04.3x64 - одна и та же ошибка ( tail /var/log/postgresql/postgresql-9.4-main.log
    2016-01-31 22:43:49 MSK ERROR: type "mvarchar" does not exist
    2016-01-31 22:43:49 MSK STATEMENT: CREATE OPERATOR CLASS mvarchar_fill_ops
    FOR TYPE mvarchar USING hash AS
    OPERATOR 1 ==,
    FUNCTION 1 fullhash_mvarchar(mvarchar);

    2016-01-31 22:43:49 MSK WARNING: there is no transaction in progress
    2016-01-31 22:43:49 MSK ERROR: type "mvarchar" does not exist at character 31
    2016-01-31 22:43:49 MSK STATEMENT: create table Config (FileName mvarchar(128) not null, Creation timestamp not null, Modified timestamp not null, Attributes int not null, DataSize int8 not null, BinaryData bytea not null, PartNo int not null, PRIMARY KEY (FileName, PartNo))
    ) допекла меня уже =)... Базу пытался создавать из самой программы 1с, путем добавления базы на сервер предприятия, а так же через Администрирование серверов 1С Предприятия... Причем делаю в точности одно и тоже в Ubuntu 12 & Ubuntu 14, но результат разный... Буду рад любой подсказке, которая могла бы мне помочь с этой проблемой справиться. Спасибо за Ваши статьи, я часто посещаю этот блог =)

    ОтветитьУдалить
  6. В продолжение предыдущего моего поста... Снес (purge) libicu52, он потянул с собой в ад ещё пару пакетов =) - open-vm-tools и еще какой-то... Установил libicu48 и 1с-8.3.7.1873 с последней на сегодня версией УТ 11 установилась и всё нормально заработало... В моем случае, видимо, не хватило пересборки пакета postgresql-contrib по Вашему рецепту, где-то ещё нужно поковырять, чтобы заработало с libicu52. В общем, я это написал на случай, если кому-то это будет полезным, а сам буду ковырять дальше - дело не в работе/неработе с libicu52, а в посредственности моего знания linux - буду учиться дальше, но буду рад если поможете разобраться с libicu52 =)
    С уважением, Макс

    ОтветитьУдалить
    Ответы
    1. Для корректной работы 1С (и других прилажовин) в ubuntu 14.04 лучше использовать "родной" libicu52. Данный набор библиотек обеспечивает поддержку локали unicode (так гласит официальное назначение: "Icu is a c++ and c library that provides robust and full-featured unicode and locale support. this package contains the runtime libraries for icu."). Для работы 1С достаточно пересобрать contrib и указать в зависимостях более новую версию (см. мануал). Лучше вернуть libicu52. Он есть в зависимостях других пакетов, и его изменение может нарушить стабильность работы системы вцелом. Если будете использовать внешние источники данных в 1С - он там опять понадобится. Собсна в пересборке пакета нет ничего страшного - все направлено на то, чтобы обмануть 1С при проверке зависимостей =)

      Удалить
    2. Сегодня в очередной раз всё переустановил точно по Вашему мануалу (я не первый раз уже пересобираю contrib - если я правильно понял, нужно всего лишь изменить вот здесь - mcedit ./tmpdir/DEBIAN/control - libicu48 на libicu52. Да, у меня версия PostgreSQL 9.4_9.4.2-1.1C_amd64_deb с сайта 1с. Может поэтому не заводится, добрые парни из 1с, возможно, что-то еще в своем новом патче изменили? Руки, конечно, кривые, но мануал Ваш очень подробный, и если быть немного повнимательнее (mkdir -p /mnt/1с/db), то трудно ошибиться пять раз подряд.. Хотя.. руки ..=)

      Удалить
    3. Так после пересборки contrib все равно не заводится? На прошлой неделе обновлял postgres до 9.4 - все работает. Единственное что делал не так как в мануале - это ставил все пакеты от 1С. Т.е. postgresql-client-common_154_all.deb и postgresql-common_154_all.deb не качал с из репов, а брал аднаэсовские.

      Удалить
    4. Ситуация: после многочисленных тестов кончились ключи активации лизензий на 5 рабочих мест(было 3 штуки, стало 1 - последний), вопрос: сколько времени в фирме бухи и менеджеры будут "курить", пока компания 1с предоставит дополнительный ключ лицензии ? Предоставит ли вообще?

      Удалить
    5. Зависит от сапорта. Мне франчи дали железный ключ (пока я ждал пин от аднаэс - это около 2х недель). А эксперименты лучше ставить на ломаной 1С )))

      Удалить
  7. не ключ, блин... пин-код я имел ввиду ):

    ОтветитьУдалить