Сен 07 2015

postgresqlM$ в последнее время хочет всё больше денег, с учётом роста курса доллара проблема усугубляется ещё больше, а файловый режим работы базы 1С в 2015 году уже не так хорош как раньше. Поэтому появилась задача перевода файловой базы на PostgreSQl. В настройке есть пара нюансов, про них и расскажу.
Будем считать, что свежая версия Ubuntu Server (на сегодняшний день последняя стабильная LTS-версия 14.04.3 LTS) уже скачана и проставлена, поэтому перейдем к установке и настройке PostgreSQL.

Настроим параметры ядра, отвечающие за выделяемую системе память.

Параметр SHMMAX — это максимум памяти, выделяемой в одном запросе в байтах. Я для PQSQL выделил виртуалку с 10ГБ оперативки, поэтому установлю размер в 8ГБ: kernel.shmmax = 8589934592.

Параметр kernel.shmall – Общее количество доступной разделяемой памяти в страницах. Рассчитывается как shmmax/PAGE_SIZE. Как правило, размер страницы в системе — 4096 байт, уточнить можно запросом в консоли getconf PAGE_SIZE.

Поэтому kernel.shmall = 8589934592/4096 или kernel.shmall = 2097152

echo "kernel.shmmax=8589934592" >> /etc/sysctl.conf
echo "kernel.shmall=2097152" >> /etc/sysctl.conf
sysctl -p

Задаем локаль, естественно, UTF-8:

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 ssl-cert libicu-dev icu-devtools

Затем скачиваем дистрибутивы PostgreSQL с сайта 1С и устанавливаем:

dpkg -i libpq5_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-client-common_154.1.1C_all.deb
dpkg -i postgresql-client-9.4_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-common_154.1.1C_all.deb
dpkg -i postgresql-9.4_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-contrib-9.4_9.4.2-1.1C_amd64.deb

И в этот момент мы получим ошибку
postgresql-contrib-9.4 зависит от libicu48 (>= 4.8-1), однако:
Пакет libicu48 не установлен.

потому что версия нашего пакета libicu отличается от ожидаемой.
Придется этот пакет перепаковать, перевыпаковать 🙂

dpkg -x postgresql-contrib-9.4_9.4.2-1.1C_amd64.deb tmpdir
dpkg -e postgresql-contrib-9.4_9.4.2-1.1C_amd64.deb tmpdir/DEBIAN

Теперь открываем распакованный файл в редакторе
mcedit ./tmpdir/DEBIAN/control
или, если не установлен пакет mc, то
nano ./tmpdir/DEBIAN/control
находим в строке Depends упоминание пакета libicu48 и меняем на libicu52, после чего сохраняем, перепаковываем пакет и снова устанавливаем:
dpkg -b tmpdir postgresql-contrib-9.4_9.4.2-1.1C_amd64_fixed.deb
dpkg -i postgresql-contrib-9.4_9.4.2-1.1C_amd64_fixed.deb

Проверяем, что PostgreSQL установился:
whereis postgresql
Ответ должен быть таким:
postgresql: /etc/postgresql /usr/lib/postgresql /usr/share/postgresql
и что он запущен: на команду
service postgresql status
должен быть ответ
9.4/main (port 5432): online

Затем создаем директорию для хранения баз 1С PostgreSQL и устанавливаем на нее права для пользователя postgres:
mkdir /1cdb
chown postgres: /1cdb/

Инициализируем базу:
su postgres
/usr/lib/postgresql/9.4/bin/initdb -D /1cdb/ --locale=ru_RU.UTF-8
psql -U postgres -c "alter user postgres with password 'ПАРОЛЬ_ПОЛЬЗОВАТЕЛЯ_POSTGRES';"

Перезапускаем сервис
service postgresql restart
и радуемся надписи
* Restarting PostgreSQL 9.4 database server [ OK ]

Самое главное — для корректной работы с базой из 1С базу необходимо создавать из 1С, а не в PgAdmin`е.

Автор: Johnny Тэги: , , , , , ,

Блог саратовского админа

При использовании материалов сайта на других ресурсах прошу оставлять прямую ссылку на оригинал статьи.