суббота, 30 января 2016 г.

Сервер приложений 1С + PostgreSQL




1С в виндах работает всю свою жизнь. Когда оно заработало под линуксами? Сервер приложений тоже относительно давно, а вот клиент заработал с версии 8.3. Давайте поставим сервер приложений с базами данных PostgreSQL




Postgres

Установим необходимые зависимости и софт
root@pg0:~# yum -y install redhat-lsb-core mc readline libtermcap krb5-libs openssl openssl098e compat-readline5 compat-libtermcap wget htop nano p7zip
Скачаем нужный нашему постгресу libicu
root@pg0:~# wget http://mirror.centos.org/centos/5/os/x86_64/CentOS/libicu-3.6-5.16.1.x86_64.rpm
root@pg0:~# yum -y install libicu-3.6-5.16.1.x86_64.rpm
Следом качаем и ставим, собственно сам постгрес
root@pg0:~# yum -y install *.rpm в директории с распакованным pg
Инициализируем базу данных. Так как у нас контейнер изначально в русской локали, то инициализировать можно без параметров
root@pg0:~# /etc/init.d/postgresql-9.4 initdb
Создадим пользователя для работы с BD 1С
root@pg0:~# su — postgres
root@pg0:~# psql

postgres=# create user app1c with ENCRYPTED password '000000' SUPERUSER;
Тюнинг PG
root@pg0:~# nano /var/lib/pgsql/9.4/data/postgresql.conf
listen_addresses = '*'
max_connections = 10
shared_buffers = 128MB
effective_cache_size = 512MB
work_mem = 10922kB
maintenance_work_mem = 128MB
checkpoint_segments = 3
checkpoint_completion_target = 0.5
wal_buffers = 3932kB
default_statistics_target = 100
##log_settings
log_destination = 'syslog'
syslog_facility = 'LOCAL6'
syslog_ident = 'postgres'
client_min_messages = notice
log_min_messages = warning
log_min_error_statement = error
datestyle = 'iso, dmy'
timezone = 'W-SU'
lc_messages = 'ru_RU.UTF-8'
lc_monetary = 'ru_RU.UTF-8'
lc_numeric = 'ru_RU.UTF-8'
lc_time = 'ru_RU.UTF-8'
default_text_search_config = 'pg_catalog.russian'
escape_string_warning = off
standard_conforming_strings = off
online_analyze.threshold = 50
online_analyze.scale_factor = 0.1
online_analyze.enable = on
online_analyze.verbose = off
online_analyze.min_interval = 10000
online_analyze.table_type = 'temporary'
plantuner.fix_empty_table = true
max_locks_per_transaction = 150
autovacuum = on
autovacuum_vacuum_threshold = 1800
autovacuum_analyze_threshold = 900
autovacuum_naptime = 5min
#autovacuum_vacuum_threshold = 50

Сервер приложений
root@app0:~# apt-get update && apt-get dist-upgrade
Установим необходимое
root@app0:~# apt-get install ttf-mscorefonts-installer p7zip-full imagemagick apache2 nano mc
Качаем и ставим серверную часть 1с
root@app0:~# dpkg -i *.deb
Для удобства нужно сделать симлинки в /usr/local/bin и rac и ras:
root@app0:~# ln -s /opt/1C/v8.3/i386/ras /usr/local/bin/ras
root@app0:~# ln -s /opt/1C/v8.3/i386/rac /usr/local/bin/raс
root@app0:~# nano /usr/local/bin/ras.sh
#!/bin/sh
SERVICE='/opt/1C/v8.3/i386/ras'
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "$SERVICE service running, everything is fine" > /dev/null
else
/opt/1C/v8.3/i386/ras --daemon cluster
fi
root@app0:~# chmod 777 /usr/local/bin/ras.sh
root@app0:~# nano /etc/rc.local
/usr/local/bin/ras.sh
Просмотр списка доступных кластеров серверов 1с для управления
root@app0:~# rac cluster list
Здесь важная информация о uid-кластера в первой строке.
Создание информационной базы
root@app0:~# rac infobase create --cluster=31e491ca-bcdf-11e5-c99f-363133393962 --name=test --create-database --dbms=PostgreSQL --db-server=192.168.0.25 --db-name=test --locale=ru --db-user=app1c --db-pwd=000000 --license-distribution=allow
Разберем параметры:
--name — имя информационной базы
--create-database — создать базу в СУБД в случае ее отсутствия
--dbms — тип СУБД
--db-server — параметры сервера СУБД(имя хоста или ip)
--db-name — имя БД в СУБД
--db-user и --db-pwd — имя пользователя и пароль для СУБД
--cluster-user --cluster-pwd =<пароль> — учетная запись администратора кластера
--license-distribution=allow - разрешаем выдачу лицензий сервером приложений

Просмотр серверов 1С
root@app0:~# rac server list --cluster=6aae6682-9e4b-11e5-1691-326436636531
Тюнинг сервера приложений: 1 процесс на базу, 5 коннектов на процесс
root@app0:~# rac server update --server=ff1eaaae-8d28-11e5-7e98-c222ce8f7563 --cluster=fe8022c6-8d28-11e5-7e98-c222ce8f7563 --infobases-limit=1 —connections-limit=5
Проверяем нашу базу с терминального сервера

Публикация 1С8

Делаем скрипт
root@app0:~# nano /usr/local/bin/public.sh
#!/bin/bash
cd /opt/1C/v8.3/i386
./webinst -apache22 -wsdir base_name -dir /var/www/1c/base_name/ -connStr "Srvr=server_name;Ref=base_name;" -confPath /etc/apache2/apache2.conf

Создаем папочку
root@app0:~# mkdir -p /var/www/1c/test

Запускаем скрипт, перезапускаем apache2

root@app0:~# public.sh

Публикация выполнена

root@app0:~# /etc/init.d/apache2 restart

Заходим по ссылочке

http://app0/test

Ставим требуемые плагины для браузера, если потребуется

Бекап баз данных

root@pg0:~# mkdir -p /data/.backups/logs

root@pg0:~# chmod -R 777 /data/.backups

root@pg0:~# chown -R nobody:users /data/.backups

root@pg0:~# nano /usr/local/bin/pg_stuff.sh

#!/bin/bash
##Дамп баз 1С
DATE=$(date +%Y~%m~%d)
PGDUMPBASE1=base_name1
PGDUMPBASE2=base_name2
PGDUMPFILE1=$PGDUMPBASE1"_"$DATE
PGDUMPFILE2=$PGDUMPBASE2"_"$DATE
BACKDIR=/data/.backups
echo Dumping started at $DATE >> $BACKDIR/logs/dates
pg_dump $PGDUMPBASE1 -w -F c -f $BACKDIR/$PGDUMPFILE1

#tar --remove-files -czvf $BACKDIR/$PGDUMPFILE1.tgz $BACKDIR/$PGDUMPFILE1
pg_dump $PGDUMPBASE2 -w -F c -f $BACKDIR/$PGDUMPFILE2

#tar --remove-files -czvf $BACKDIR/$PGDUMPFILE2.tgz $BACKDIR/$PGDUMPFILE2
find $BACKDIR -mtime +6 -exec rm -f {} \;

##Вакум, анализ и реиндекс баз 1С
echo Vacuum, Analyze and Reindex started at $DATE >> $BACKDIR/logs/pg_stuff.log
/usr/bin/vacuumdb --verbose --all --analyze --full --echo >> /$BACKDIR/logs/pg_stuff.log
/usr/bin/reindexdb --all --echo >> /$BACKDIR/logs/pg_stuff.log

root@pg0:~# chmod 777 /usr/local/bin/pg_stuff.sh

root@pg0:~# chown postgres:postgres /usr/local/bin/pg_stuff.sh

Добавим задание для crontab

root@pg0:~# su - postgres

root@pg0:~# nano cron

SHELL=/bin/bash
MAILTO=postgres
02 02 * * * /usr/local/bin/pg_stuff.sh

root@pg0:~# crontab cron
root@pg0:~#crontab -l

4 комментария:

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

    ОтветитьУдалить
    Ответы
    1. Добрый. Либо с сайта users.v8.1c.ru (нужна подписка), либо репозиторий команды ПостгресПро, который легко гуглится

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

    ОтветитьУдалить
  3. Ошибка установки или изменения национальных настроек информационной базы
    Порядок сортировки не поддерживается базой данных
    по причине:
    Порядок сортировки не поддерживается базой данных

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