вторник, 22 апреля 2014 г.

Установка PostgreSQL 9.2.4 + 1C 8.3.4.476 на Ubuntu Server 14.04 X64

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

Увеличиваем максимальный размер сегмента памяти до 1Гб. Для менее мощных машин устанавливают от 64Мб до половины объема ОЗУ (для теста выделим 1Gb):
# 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 
       postgresql-client-common_154_all.deb (вместо postgresql-client-common_140~lucid_all.deb)
       postgresql-client-9.2_9.2.4-1.1C_amd64.deb 
       postgresql-common_154_all.deb (на момент написания статьи на сайте была доступна лишь версия для lucid, которая ломает logrotate, поэтому этот пакет скачивал отдельно)!
 postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb
 postgresql-9.2_9.2.4-1.1C_amd64.deb

Определяем местонахождение PostgreSQL:
whereis postgresql
postgresql: /etc/postgresql /usr/lib/postgresql /usr/share/postgresql

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

Для удобства администрирования БД поменяем порт, на привычный нам со старых версий 5432. Для этого в файле: /etc/postgresql/9.2/main/postgresql.conf
меняем строку:
port = 5433                            # (change requires restart)
на:
port = 5432                             # (change requires restart)

Перезапускаем службу:
# service postgresql restart
* Restarting PostgreSQL 9.2 database server                                                                                                          [ OK ]

Создаем директорию для хранения БД 1С PostgreSQL:
# mkdir /mnt/1с/db/
# chown postgres:postgres /mnt/1c/db

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

При первом запуске Postgre должен проинициализироваться и запуститься. Для того, чтобы иметь возможность подключится к СУБД (не к пользователю ОС, который создается вместе с установкой Postgre, а к пользователю с правами администратора, для управления СУБД), следует задать пароль главному пользователю СУБД - postgres, для этого в файле /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

Вы должны получить примерно следующее сообщение:
Stopping postgresql service: DONE
Starting postgresql service: DONE

# netstat -atn|grep 5432
Если в ответ получился, вот такой выхлоп, то всё нормально:
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN

На этом этапе установка PostgreSQL завершена. Приходим к установке сервера 1C 8.3.

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

Ставим все необходимые пакеты (1c берем с их офф.сайта):
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 
            ttf2pt1_3.4.4-1.4_amd64.deb

Даем пользователям 1С сервера права на запись:
# chown -R usr1cv8:grp1cv8 /opt/1C

Перезапускаем сервер 1с:
# service srv1cv83 restart
Stopping 1C:Enterprise 8.3 server: Warning: server not running!
OK
Starting 1C:Enterprise 8.3 server: OK

Проверяем порты:
# 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:

Скачиваем по ссылке deb:
http://sentinelcustomer.safenet-inc.com/sentineldownloads/?s=&c=End+User&p=Sentinel+HASP&o=Linux&t=all&l=all

Добавляем i386 архитектуру, чтобы можно было устанавливать 32 битные deb пакеты::
# dpkg --add-architecture i386
# apt-get update
Так как ia32-libs выпилили из системы, если нужен 32 битный пакет, то нужно теперь ставить после пакета префикс :i386
# apt-get install libc6:i386
# dpkg -i aksusbd_2.2-1_i386.deb 

# /etc/init.d/aksusbd restart

Тушим сервер. Вставляем ключи USB. Перезапускаем сервер.
Проверить работает ли HASP-ключ можно командами:
# service aksusbd status
AKSUSB is running.
WINEHASP is running.
HASPLM is running.

Далее запускаем установленный клиент 1С Предприятие 8.3 и в нём создаём новую БД 1с.
 Наслаждаемся результатом:









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

  1. Здравствуйте. сделал все по вашей инструкции. система отвечает Информационная база не обнаружена

    ОтветитьУдалить
  2. Посмотрел через pgAdmin III. База на самом деле создалась. только вот 1С при запуске базы говорит что не обнаружена

    ОтветитьУдалить
  3. Попробуйте указать при создании БД не имя сервера, а его ip адрес.

    ОтветитьУдалить
    Ответы
    1. Делал. не получилось. Кстати откуда вы скачали эти файлы postgresql-client-common_154_all.deb, postgresql-common_154_all.deb. на сайте users v8 нет их. я их путем поиска нашел. Правильно ли это? Еще последняя доступная платформа на сайте 8.3.4.465, а у вас использована 8.3.4.476 (тоже интересно откуда), и файла ttf2pt1_3.4.4-1.4_amd64.deb на сайте users нет.

      Удалить
    2. Этих пакетов на сайте 1С нет, т.к 1С официально поддерживает их для версии Ubuntu 10.04.
      По поводу 1С:
      https://users.v8.1c.ru/distribution/version_files?nick=Platform83&ver=8.3.4.476

      Удалить
    3. откуда их брать если не сайте 1С?

      Удалить
    4. Вариантов масса:
      http://pkgs.org/debian-sid/debian-main-i386/postgresql-client-common_154_all.deb.html
      или
      http://mirror.yandex.ru/ubuntu/pool/main/p/postgresql-common/

      Вам по факту нужен лишь пропатченный 1с сервер Postgre, а клиента можно брать из других источников. Туго пока у 1С с поддержкой 14.04, поэтому и приходиться изощряться.

      Удалить
    5. В принципе я первый вариант и использовал. Спасибо. Буду дальше смотреть)

      Удалить
  4. Добрый день, застрял на этапе установки пакета: postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb - ругается на нехватку зависимых пакетов. пишет что необходим пакет libicu46 >= 4.6.1-1 но по инструкции был установлен libicu52 что еще нужно поставить? или подскажите куда смотреть.

    ОтветитьУдалить
    Ответы
    1. В общем нашел решение на просторах интернета, оно заключается в следующем:
      копируем postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb в папку на сервере, входим в нее
      Распаковываем пакет:
      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
      далее открываем в текстовом редакторе файл «control»:
      nano ./tmpdir/DEBIAN/control
      ишем строку libicu46 (>= 1.4.6) и меняем ее на libicu52 (>= 1.4.6)
      сохраняем изменения и собираем пакет обратно:
      dpkg -b tmpdir postgresql-contrib-9.2_9.2.4-1.1C_amd64_fix.deb

      Удалить
  5. подскажите как на счет программной лицензии вместо hasp? есть какие-нибудь особенности установки?

    ОтветитьУдалить
    Ответы
    1. К сожалению не подскажу. Используем аппаратный ключ. Какое кол-во пользователей? До 10 и без ключа пускает.

      Удалить
    2. С эмулятором для Win2008 x64 по сети работает нормально. С аналогичным для WinXP - не работает.

      Удалить
    3. Программная лицензия на сервер встала и програмная лицензия на клиентов (даже две лицензии 5 и 20 юзеров) запустились и раздается. У меня правда 8.2 1С, но я думаю, что с 8.3 не возникнет проблем.

      Удалить
  6. Добрый день. При загрузки базы из td выскакивает ошибка "timestamp out of range" что сделал не так?

    ОтветитьУдалить
    Ответы
    1. Почитайте, здесь есть возможное описание вашей ошибки:
      http://www.alsigned.ru/?p=329

      Удалить
  7. Веб-сервисы 1C 8.3 под Ubuntu 14.04 не работают.
    Модули wsap22.so и wsapch2.so не заводятся на apache-2.4

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

      Удалить
    2. не заработали веб сервисы?

      Удалить
    3. Нет. В версии 1c-8.3.5-1248 модули apache по-прежнему только для 2.0 и 2.2.
      Зато в грядущей версии PostgreSQL 9.3.4-1.1C заявлена официальная поддержка Ubuntu 12.04.

      А на Ubuntu 14.04 можно даунгрейднуть apache до 2.2, подключив репу raring, как написано здесь:
      http://www.bubuntu.spb.ru/apache24-apache22/

      Удалить
  8. День добрый!
    Тоже сделал 1-н в 1-н как в мануале + корективы от Василия по теме postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb. При создании пишет сервер баз данн не обнаружен. Указываю порт если , то ошибка при выполнении операции с ИБ. Сервер не отвечает, не доступен и пр.

    ОтветитьУдалить
    Ответы
    1. На клиетских машинах необходимо в файле /etc/hosts прописать ip-адрес и имя сервера.

      Удалить
  9. Здравствуйте хочется странного ( поднять сервер 1С на винде а информационную базу linux postgres ) собственно патченая база (как минимум то что удалось скачать с просторов сети с такими же названиями) с поправленными зависимостями завелась на debian 7 однако при инициализации информационной базы из админской тулзы 1С падает с ошибкой что база не в курсе что такое mvarchar - может я что то упустил и надо эти типы самому как-то вручную задать или подключить как плагины (насколько мне известно postgres такое умеет)?

    ОтветитьУдалить
    Ответы
    1. Алилуя - ларчик просто открывался http://antizlo.blogspot.ru/2013/05/error-type-mvarchar-does-not-exist-at-character-31.html

      Удалить
  10. Этот комментарий был удален автором.

    ОтветитьУдалить
  11. при установке postgresql-common_154_all.deb вылазит ошибка:

    Selecting previously unselected package postgresql-common.
    (Reading database ... 85959 files and directories currently installed.)
    Preparing to unpack .../postgresql-common_154_all.deb ...
    Adding 'diversion of /usr/bin/pg_config to /usr/bin/pg_config.libpq-dev by postgresql-common'
    Unpacking postgresql-common (154) ...
    dpkg: dependency problems prevent configuration of postgresql-common:
    postgresql-common depends on ssl-cert (>= 1.0.11); however:
    Package ssl-cert is not installed.

    dpkg: error processing package postgresql-common (--install):
    dependency problems - leaving unconfigured
    Processing triggers for ureadahead (0.100.0-16) ...
    Processing triggers for man-db (2.6.7.1-1) ...
    Errors were encountered while processing:
    postgresql-common

    ОтветитьУдалить
  12. И дальше, если игнорировать ошибку уперся в следующее

    Ошибка при установке :
    Selecting previously unselected package postgresql-9.2.
    (Reading database ... 86238 files and directories currently installed.)
    Preparing to unpack .../postgresql-9.2_9.2.4-1.1C_amd64.deb ...
    Unpacking postgresql-9.2 (9.2.4-1.1C) ...
    dpkg: dependency problems prevent configuration of postgresql-9.2:
    postgresql-9.2 depends on ssl-cert; however:
    Package ssl-cert is not installed.

    dpkg: error processing package postgresql-9.2 (--install):
    dependency problems - leaving unconfigured
    Processing triggers for postgresql-common (154) ...
    Obsolete major version 9.2

    The PostgreSQL version 9.2 is obsolete, but the server or client packages
    are still installed. Please install the latest packages (postgresql-9.3 and
    postgresql-client-9.3) and upgrade the existing clusters with
    pg_upgradecluster (see manpage).

    Please be aware that the installation of postgresql-9.3 will automatically
    create a default cluster 9.3/main. If you want to upgrade the 9.2/main
    cluster, you need to remove the already existing 9.3 cluster (pg_dropcluster
    --stop 9.3 main, see manpage for details).

    The old server and client packages are no longer supported. After the
    existing clusters are upgraded, the postgresql-9.2 and postgresql-client-9.2
    packages should be removed.

    Please see /usr/share/doc/postgresql-common/README.Debian.gz for details.

    Building PostgreSQL dictionaries from installed myspell/hunspell packages...
    Removing obsolete dictionary files:
    Errors were encountered while processing:
    postgresql-9.2

    ОтветитьУдалить
  13. Андрей, а как связаться с вами? Есть работа.

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