Как установить сервер 1с 8.3.5 в связке с postgresql 9.2 на debian 7, Ubuntu

Обновлено 12.03.2015

1с

Целью данной статьи стоит разобраться как  установить сервер 1с 8.3.5 в связке с postgresql 9.2 на debian 7, Ubuntu. Логинимся под root. Ставим пакеты, которые нужны для установки postgres и 1с (imagemagick & Co - консольный граф. редактор для избавления от "Ошибка инициализации графической подсистемы" в 1с; для постгреса: libxslt1.1 - как я понял, библиотека для конвертирования XML; unixodbc - библиотека инструментов ODBC, 1с ее использует

apt-get install  libxslt1.1 imagemagick libmagickwand-dev libgsf-1-dev t1utils libt1-5 libgomp1 unixodbc unixodbc-dev

Также нужны еще некоторые пакеты, которых нет в репозитарии  (или я не знаю как они там теперь зовутся), поэтому добавил старый репозитарий:

cp /etc/apt/sources.list /etc/apt/sources.list.bak

nano /etc/apt/sources.list

Такой вот список получился:

deb cdrom:[Debian GNU/Linux 6.0.5 _Squeeze_ - Official amd64 CD Binary-1 20120512-14:34]/ squeeze main
deb http://ftp.ru.debian.org/debian/ squeeze contrib non-free
deb-src http://ftp.ru.debian.org/debian/ squeeze contrib non-free
deb http://ftp.ru.debian.org/debian/ squeeze main
deb-src http://ftp.ru.debian.org/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main
deb http://ftp.ru.debian.org/debian/ squeeze-updates main
deb-src http://ftp.ru.debian.org/debian/ squeeze-updates main
deb http://archive.debian.org/debian lenny main

apt-get update

Ставим:

apt-get install ttf2pt1 libicu44 libmagickwand3 libmagickcore3

После установки пакетов возвращаем список репозитариев в исходный вид:

cp /etc/apt/sources.list.bak /etc/apt/sources.list

И добавляем репозиторий несвободных прогамм, чтобы установить шрифты microsoft:

nano /etc/apt/sources.list

deb http://ftp.ru.debian.org/debian/ wheezy main non-free contrib
deb-src http://ftp.ru.debian.org/debian/ wheezy main non-free contrib

apt-get update

И ставим шрифты:

apt-get install ttf-mscorefonts-installer

Качаем и ставим postgres

mkdir postgres
cd postgres
wget http://ftp.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/x86_64/Debian/7.0/libpq5.5-9.2eter_9.2.1-eter1debian_amd64.deb
wget http://ftp.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/x86_64/Debian/7.0/postgre-etersoft9.2-contrib_9.2.1-eter1debian_amd64.deb
wget http://ftp.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/x86_64/Debian/7.0/postgre-etersoft9.2-seltaaddon_9.2.1-eter1debian_amd64.deb
wget http://ftp.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/x86_64/Debian/7.0/postgre-etersoft9.2-server_9.2.1-eter1debian_amd64.deb
wget http://ftp.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/x86_64/Debian/7.0/postgre-etersoft9.2_9.2.1-eter1debian_amd64.deb
dpkg -i *.deb

При установке отметим локаль  - en_US.ISO-8859-1, en_US.UTF-8, ru_RU.UTF-8
В следующем окне выберем локаль по умолчанию ru_RU.UTF-8.

Запускаем постгрес:
/etc/init.d/postgresql start

Получаем ошибку:
error: The current value of SHMMAX is too low for postgresql to run.
Please edit /etc/sysctl.conf and set this value to at least 134217728:
kernel.shmmax = 134217728

kernel.shmmax - макс. количество разделяемой памяти, измеряется, на сколько удалось нагуглить, количеством страниц по 4096.

Исправляем:

echo 134217728 > /proc/sys/kernel/shmmax

Запускаем снова:

/etc/init.d/postgresql start

Далее задаем пароль для пользователя postgres.

Логинемся в postgres:
su postgres -c psql template
Меняем пароль:
ALTER USER postgres with PASSWORD 'password';
\q

Ускоряем postgres

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

nano /var/lib/postgresql/data/postgresql.conf

Основные параметры, которые обычно меняются:

shared_buffers - Размер разделяемой между процессами PostgreSQL памяти, которая нужна для выполнения активных операций. Не следует указывать слишком большой объём, так как PostgreSQL использует также дисковый кэш. 1/8 RAM или больше (но не более 1/4);
work_mem - Специальная память, используется для сортировки и кэширования таблиц, для одного запроса. (Поставил - 64MB);
maintenance_work_mem - кол-во оперативной памяти для статистических и управленческих процессов, к примеру VACUUM, ANALYZE, CREATE INDEX, и добавление внешних ключей. Следует устанавливать большее значение, чем для work_mem. (Поставил 256MB);
max_connections - максимальное количество возможных одновременных соединений;
wal_buffers - определяет размер буфера журнала транзакций в shared memory, в котором накапливаются записи перед сбросом их на диск. Можно увеличить буфер до 256-1024КБ что позволит лучше работать с большими транзакциями;
checkpoint_segments - определяет количество сегментов (каждый по 16 МБ) лога транзакций между операциями контроля, что все изменения были записаны. В зависимости от объема данных установите этот параметр в диапазоне от 12 до 256 сегментов. Место, требуемое на диске, вычисляется по формуле (checkpoint_segments * 2 + 1) * 16 МБ . (Поставил - 16);
effective_cache_size - Этот параметр помогает планировщику postgres определить количество доступной оперативной памяти для дискового кеширования. 50-75% свободной памяти(не занятой ОС и приложениями). 0.5-0.75 от значения cached, которое показывает free;
temp_buffers - Буфер под временные объекты, в основном для временных таблиц. (Поставил - 64MB).

Более полное описание параметров конфига постгреса например здесь: http://wiki.etersoft.ru/PostgreSQL/Optimum

Перезапускаем:

/etc/init.d/postgresql restart

получаем опять ошибку, смотрим в логах, какую:

cat /var/lib/postgresql/pgstartup.log

FATAL:  could not create shared memory segment: Недопустимый аргумент
DETAIL:  Failed system call was shmget(key=5432001, size=2202484736, 03600).
HINT:  This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.  You can either reduce the request size or reconfigure the kernel with larger SHMMAX.  To reduce the request size (currently 2202484736 bytes), reduce PostgreSQL's shared_buffers parameter (currently 262144) and/or its max_connections parameter (currently 54).
If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
The PostgreSQL documentation contains more information about shared memory configuration.

Исправляем kernel.shmmax второй и последний раз. Значение берем из лога ошибки:
echo 2202484736 > /proc/sys/kernel/shmmax
И что бы при перезагрузке сохранилось добавляем строчку в /etc/sysctl.conf:
vim /etc/sysctl.conf
kernel.shmmax = 2202484736

Запускаем постгрес:
/etc/init.d/postgresql start

Установка 1с-сервер.

Качаем с http://users.v8.1c.ru Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем, распаковываем, заливаем на сервер, заходим в каталог с deb-пакетами сервера 1с и ставим:

dpkg -i *.deb

Добавляем 1с в автозапуск:
update-rc.d srv1cv83 defaults

Запускаем 1с:
/etc/init.d/srv1cv83 start

Качаем и ставим HASP

С сайта разработчика: http://www.safenet-inc.com/

или просто wget-ом:

wget http://linux-bash.ru/docs/hasp/aksusbd_2.4-1_i386.deb

Ключ вытягиваем если вставлен. Скачанный deb-пакет 32ух битный, система 64х битная, поэтому надо включить поддержку i386 в системе:

dpkg --add-architecture i386
apt-get update
apt-get install libc6:i386

Ставим hasp:

dpkg -i aksusbd_2.4-1_i386.deb

Вставляем ключ, перезапускаем hasp:

/etc/init.d/aksusbd restart

Добавляем в автозагрузку:

nano /etc/rc.local

/etc/init.d/aksusbd start

Ставим программу monit, которая будет отслеживать запущена ли 1с и при необходимости запускать:

apt-get install monit
nano /etc/default/monit

и вместо "0" ставим "1".

Далее бэкапим и правим конфиг:

cp /etc/monit/monitrc /etc/monit/monitrc.bak
echo "" > /etc/monit/monitrc
nano /etc/monit/monitrc

set daemon  30           # проверяет 1с с интервалом в 30 сек. (по умолчанию стояло 120)
set logfile syslog facility log_daemon
set idfile /var/.monit.id
set statefile /var/.monit.state
set eventqueue
basedir /var/monit
slots 100
check process ragent with pidfile /var/run/srv1cv83.pid
start program = "/etc/init.d/srv1cv83 start"
stop program  = "/etc/init.d/srv1cv83 stop"

/etc/init.d/monit restart

Теперь в случае вылета сервера 1с - он будет автоматически перезапущен.

Всё, сервер готов, можно создавать базы....

Возможные ошибки и способы решения

При создании базы из 1с ошибка type "mvarchar" does not exist at charter 31

необходимо на сервере установить библиотеку ICU:

apt-get install libicu48 libicu48-dbg libicu-dev

И перезапустить postgresql и сервер 1c.

При создании базы из 1с ошибка database не пригоден для использования

В конфиге постгреса (/var/lib/postgresql/data/postgresql.conf) находим строчки и ставим значения:

backslash_quote = on 

escape_string_warning = off 
standart_conforming_strings = off
И перезапускаем постгрес.
Автор - Сёмин Иван

4 Responses to Как установить сервер 1с 8.3.5 в связке с postgresql 9.2 на debian 7, Ubuntu

  1. aGGreSSor:

    Инструкция рабочая. Только в postgresql выкинуть checkpoint_segments, а вместо standart_conforming_strings писать standard_conforming_strings. Ну и через echo запихивать значения в sysctl на Debian не получится, sysctl -w kernel.shmmax=134217728 Но это мелочи. 1C8.3.5.1119 полёт нормальный =)

  2. Marion:

    Как долго я искал рабочий вариант, спасибо автору за мануал

  3. Boris:

    nice job

  4. Gabrielle:

    Спасибо, я разобрался как производится установка postgresql для 1с сервера

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *