Установка 1C 8.2 под PostgreSQL на CentOS 6.3

Статья описывает подробную установку Сервера 1с на ОС CentOS 6.3, с базой данных расположенной в PostgreSQL. Кстати, написание статьи практически совпало с выпуском нативного клиента для 1С под Linux.

В качестве сервера для 1с выбрали виртуальную машину, с ней и жить проще и перемещать легче(в случае непредвиденного). Будем ставить 64 битный сервер 1С версии 8.2.15-289 + PostgreSQL 9.0.4 от Etersoft на x86_64 CentOS 6.3.

Создаем виртуальную машину в гипервизоре, ставим Centos и читаем ниже...

Первое, что необходимо сделать после установки CentOS, - обновить пакеты.
Обновим пакеты:

yum update


Я ставил CentOS minimal server, для нормальной работы нужно доставить несколько пакетов,
ставим все жизненно необходимое:

yum install crontabs tmpwatch sudo wget file


На этапе отладки файрволл - наш главный враг.
отключаем файервол, дабы не мешался пока:

chkconfig iptables off
service iptables stop
chkconfig ip6tables off
service ip6tables stop


отключаем SELinux (1C предыдущих версий не работал с ним, да и нам на сервере в локальной сети он особо не нужен, он ваще нафиг не нужен) правим файл /etc/selinux/config

SELINUX=disabled


Теперь добавляем необходимые репозитории и ставим все, что потребуется серверу 1С:

rpm -ivh http://dl.atrpms.net/el6.1-x86_64/atrpms/stable/atrpms-repo-6-5.el6.x86_64.rpm
rpm -ivh https://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -ivh http://elders.princeton.edu/data/puias/unsupported/5/x86_64/msttcorefonts-2.0-1.noarch.rpm


Доустановим необходимые пакеты из новых репозиториев:

yum install xorg-x11-xfs chkfontpath ttf2pt1 unixODBC
yum install ImageMagick


По зависимостям на сервер свалится куча всякого. Возможно, возникнет ошибка вида:
/usr/bin/update-gdk-pixbuf-loaders: line 54: /etc/gtk-2.0/x86_64-unknown-linux-gnu/gdk-pixbuf.loaders: No such file or directory, если так, то делаем небольшой изврат:

cd /etc/gtk-2.0/
ln -s x86_64-redhat-linux-gnu x86_64-unknown-linux-gnu
yum reinstall gtk2
rm x86_64-unknown-linux-gnu


Теперь все готово для установки постгреса и сервера 1С.

Перезагружаемся и скачиваем все rpm кроме postgre-etersoft9.0-seltaaddon-9.0.4-eter8rhel.x86_64.rpm отсюда:

http://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/x86_64/CentOS/6/


далее напускаем на скаченное:

yum localinstall --nogpgcheck *.rpm


инициализируем базу:

su -u postgres initdb -D /var/lib/pgsql/data --locale=ru_RU.UTF-8


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

chkconfig postgresql on
service postgresql start


Создаем пользователя для постгреса:

su -u postgres psql
postgres=# create role c1 with superuser;
CREATE ROLE
postgres=# alter user c1 with password 'YOUR_PASSWORD';
ALTER ROLE
postgres=# create database c1;
postgres=# \q
exit

с базой будем соединяться локально, поэтому подправим файл /var/lib/pgsql/data/pg_hba.conf
раскомментируем строку

host    all         all         127.0.0.1/32          trust


и заменим trust на md5

host    all         all         127.0.0.1/32          md5


Далее правим /var/lib/pgsql/data/postgresql.conf

listen_addresses = '127.0.0.1' # будем конектиться только локально
effective_cache_size = 16384MB # выставим в половину от установленной на сервер памяти (в моем случае под виртуалку выделил 32 гига)
fsync = on # оставил как есть, т.к. у меня SCSI контроллер с включенным write-back. fsync = off дает прирост в 1 попугай в тесте Гилёва, поэтому посчитал надежность важнее.

Остальные настройки требуют детального изучения и ставяться исходя из вашего железа и базы 1С.

Все, постгрес настроен, переходим к установке сервера 1С:

Скачиваем технологическую платформу 8.2 http://dl01.v8.1c.ru/get/Info/Platform/8_2_15_289/rpm64.tar.gz (нужно авторизоваться на сайте http://users.v8.1c.ru)

Вам пригодится пользователь и пароль от USERS.1C.RU
http://users.v8.1c.ru/
Логин: 20004815444
Пароль: vQ428kjz


распаковываем архив и ставим

yum --nogpgcheck localinstall *.rpm


затем запускаем скрипт config_server

cd /opt/1C/v8.2/x86_64/utils/
./config_server


если выдаст ls: cannot access /lib/libc-*.so: No such file or directory, то поставим 32 битные либы glibc

yum install glibc.i686


также может ругнуться на отсутствие libglib (потому что ищет его в /usr/lib64, а он находится в /lib64)
делаем символьную ссылку

ln -s /lib64/libglib-2.0.so.0.2200.5 /usr/lib64/libglib-2.0.so


Запускаем скрипт еще раз и если он призадумался и ничего не выдал, то все ОК!
Но мы все знаем продукцию 1с, поэтому может вывалить еще такую ошибку...

# ./config_server
./config_server: line 148: file: command not found
./config_server: line 149: [: =: unary operator expected
./config_server: line 148: file: command not found
./config_server: line 149: [: =: unary operator expected
./config_server: line 193: [: too many arguments
./config_server: line 193: [: too many arguments
./config_server: line 193: [: too many arguments
./config_server: line 193: [: too many arguments
./config_server: line 193: [: too many arguments


просто установите его и все будет ОК.
yum install file


Еще 1 потуг, и, результатом должен быть файл type.xml созданный в /opt/1C/v8.2/x86_64/conf/grcmncfg
Т.к. клиент 1С-ки соеденяется с сервером только по имени, то ставим самбу (можно как вариант прописать соответствие IP к имени на клиентских машинах в файл hosts), или если есть корпоративный ДНС, то пробить зону там, вариантов много, я предпочел вариант с самбой...

yum install samba


Правим /etc/samba/smb.conf под свою сеть
Ставим на автостарт демон nmbd (если нужно только NETBIOS имя)

chkconfig nmb on


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

Далее действие может происходить на одном из компьютеров в офисе(например на компьютере бухгалтера), тогда не забываем прописать в /var/lib/pgsql/data/pg_hba.conf необходимые права доступа для клиентов к базе, после чего постгрес необходимо перезапустить.

В данном примере установка клиента происходит локально.

Ставим клиент с компонентом «Администрирование сервера 1С:Предприятия»

Запускаем «Администрирование серверов 1С Предприятия» Кликаем правой кнопкой по «Central 1C:Enterprise 8.2 servers» и создаем «Центральный сервер 1С:Предприятия 8.2″

Запускаем «1C Предприятие» и создаем базу:
В диалоге «Добавление информационной базы/группы» выбираем «Тип СУБД:» PostgreSQL
в поле «Сервер баз данных» прописываем 127.0.0.1
пользователь: postgres и соответственно ваш пароль, который задавали после инициализации базы постгреса.

На последок можно задействовать простенькие правила файрволла:


# Разрешаем рабочие порты
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 137 -j ACCEPT
iptables -A INPUT -p tcp --dport 1540 -j ACCEPT
iptables -A INPUT -p tcp --dport 1541 -j ACCEPT
iptables -A INPUT -m multiport -p tcp --dports 1560:1591 -j ACCEPT

# Разрешение главных типов протокола ICMP
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 12 -j ACCEPT


ну и кинуть в /etc/cron.daily скрипт бэкапа/оптимизации базы.
Я бэкаплю базу на виндовую шару (для монтирования шары нужно поставить cifs-utils командой yum install cifs-utils).

#!/bin/sh

OLDDAYS=60
DATE=`date +%F`
BACKUPDIR=/mnt/tmp.grnt/base_main/daily
BACKUPNAME=${BACKUPDIR}/main.psql.${DATE}

echo `date +%b' '%d' '%T` `hostname` Begin vacuum MAIN BASE >> /var/log/cron
vacuumdb -d main -z -f -q -U postgres
echo `date +%b' '%d' '%T` `hostname` Vacuum MAIN BASE is DONE >> /var/log/cron

mount -t cifs -o user=your_user_name,pass=your_password "//192.168.1.50/backups41C" /mnt/tmp.grnt
if [ -d /mnt/tmp.grnt/base_main/daily ] ; then
        echo `date +%b' '%d' '%T` `hostname` Begin dumping MAIN BASE into ${BACKUPNAME} >> /var/log/cron
        pg_dump -U postgres -Fc -Z9 -c -f ${BACKUPNAME} main
        echo `date +%b' '%d' '%T` `hostname` End dumping MAIN BASE into ${BACKUPNAME} >> /var/log/cron
        # Deleting old backups
        find ${BACKUPDIR} -mtime +${OLDDAYS} -delete
        umount /mnt/tmp.grnt
    else
        echo `date +%b' '%d' '%T` `hostname` Backup base MAIN FAILED!!! >> /var/log/cron
fi

## RESTORE COMMAND ##
##
## pg_restore -U postgres -c -d DATABASE_NAME -Fc DATABASE_BACKUP_FILE
##
#####################







Вас также может заинтересовать:

Установка Centos 6
Установка GeoIP (Centos, Red Hat)
Установка GitWeb на Centos 5.5
Установка PHP-SQLite в CentOS из SRC-RPM
Сборка и установка MemcacheDB на CentOS 5.5
Удаленная установка CentOS или Fedora