1C/CRS
Сервер хранилища конфигураций
Проверено на конфигурациях:
- ALT Linux starter kit (Trientalis) i586
- 1С:Предприятие 8.3.5-1248 i386
- 1С:Предприятие 8.2.19-116 i386 (для работы во всех путях в конфигах привиденных в статье исправить 8.3 на 8.2)
Важные замечания
- Сервер хранилища конфигураций (crserver) является 32-битным приложением
- В поставках x86_64 иногда встречается crserver, но при этом не рекомендуется к использованию (разработчиком ПО)
Установка
Установить сервер хранилища конфигураций можно согласно инструкции по установке сервера 1С
Само приложение находится в пакете 1C_Enterprise83-crs-X.X.X-XXX.i386.rpm и этот пакет обязателен к установке со всеми зависямостями.
Настройка и запуск
Создаем пользователя от имени которого будет осуществлен запуск сервере хранилища конфигураций: adduser crsusr
Задаем ему пароль passwd crsusr
Создаем каталог для хранения файлов сервера хранилища конфигураций: su - crsusr -c "mkdir /home/crsusr/crepo"
В отличие от сервера 1С:Предприятие, разработчики не позаботились о создании init-скрипта для данного приложения. Поэтому предлагается использовать следующий скрипт: cat /etc/init.d/crserver
#!/bin/sh
# Init file for 1C 8.3 x86 Confiration Storage Server daemon
#
# chkconfig: - 35 98 12
# description: 1C 8.3 x86 \
# Confiration Storage Server.
# processname: crserver
# pidfile: /var/run/crserver.pid
# Do not load RH compatibility interface.
WITHOUT_RC_COMPAT=1
NAME=crserver
SRV_PORT="1542"
STORAGES_DIR="/home/crsusr/crepo"
BINDIR="/opt/1C/v8.3/i386"
NAMEUSER=crsusr
GROUPUSER=crsusr
PATH="${BINDIR}:${PATH}"
DAEMON=${BINDIR}/$NAME
DAEMON_ARGS="-port ${SRV_PORT} -d ${STORAGES_DIR}"
# Source function library.
. /etc/init.d/functions
PIDFILE=/var/run/$NAME/$NAME.pid
RETVAL=0
start()
{
if [ ! -d "/var/run/$NAME" ]; then
# Control will enter here if $DIRECTORY doesn't exist.
mkdir /var/run/$NAME
chown $NAMEUSER:$GROUPUSER "/var/run/$NAME"
else
if [ "stat -c '%U' /var/run/$NAME" != "$NAMEUSER" ]; then
chown $NAMEUSER:$GROUPUSER -R "/var/run/$NAME"
fi
fi
start-stop-daemon --start --chuid $NAMEUSER --make-pidfile --background --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS
RETVAL=$?
return $RETVAL
}
stop()
{
start-stop-daemon --stop --pid $PIDFILE
RETVAL=$?
return $RETVAL
}
restart()
{
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
pgrep --pidfile "$PIDFILE" > /dev/null 2>&1 && echo "$NAME daemon running" || echo "$NAME daemon not running"
RETVAL=$?
;;
*)
msg_usage "${0##*/} {start|stop|restart|status}"
RETVAL=1
esac
exit $RETVAL
Параметры в скрипте рекомендуемые к изменению:
- Имя и первичная группа пользователя от которого будет запущен скрипт - NAMEUSER, GROUPUSER
- Каталог с файлами хранилища конфигураций - STORAGES_DIR
После добавления init-скрипта делаем его исполняемым chmod +x /etc/init.d/crserver
Добавляем его chkconfig --add crserver
И включаем на автозапуск chkconfig crserver on
Настройка доступа по ftp к файлам хранилища конфигураций
Устанавливаетм ftp сервер apt-get install proftpd
На данном сервере будет только один пользователь с ftp доступом, под ним же и запускается сервер
Из глобальных изменений в конфиге /etc/proftpd.conf были внесены только DefaultRoot ~/crepo
Остается только включить в /etc/xinetd.d/proftpd сервер proftpd - disable = no
Включем xinetd - chkconfig xinetd on
И перезапускаем же его service xinetd restart
Теперь, зная пароль пользователя crsusr, можно получить прямой доступ к файлам сервера хранилища конфигураций.
Настройка веб-доступа
Для доступа к серверу хранилища конфигураций из-вне достаточно удобно использовать веб-доступ.
Это позволяет настроить несколько серверов хранилищ (например версий 8.2 и 8.3 на различных виртуальных машинах) и через реверс-прокси дать к ним доступ используя различные доменные имена.
Установим веб сервер apache2 с модом itk, это позволит нам запустить веб-сервер от имени того же пользователя от которого запущен сервер хранилища конфигураций: apt-get install apache2-httpd-itk.
Создадим каталоги необходимые для работы: su - crsusr -c "mkdir /home/crsusr/www", su - crsusr -c "mkdir /home/crsusr/www/crs", su - crsusr -c "mkdir /home/crsusr/www/html"
Создадим файл-заглушку для веб-сервера su - crsusr -c "touch /home/crsusr/www/html/index.html", su - crsusr -c "touch /home/crsusr/www/crs/index.html"
Создадим файл-описание подключения к серверу хранилища конфигураций su - crsusr -c "touch /home/crsusr/www/crs/repo.1ccr"
Отредактируем и приведем его к виду: cat /home/crsusr/www/crs/repo.1ccr
<?xml version="1.0" encoding="UTF-8"?>
<repository connectString="tcp://127.0.0.1" />
Где connectString, строка подключения к серверу хранилища конфигураций 1С (все варианты подключения описаны в руководстве администратора)
Подключим модуль 1С необходимый для работы с веб-сервисами echo "LoadModule _1cws_module /opt/1C/v8.3/i386/wsap22.so" > /etc/httpd2/conf/mods-available/1cws.load, a2enmod 1cws
Приведем конфигурационный файл /etc/httpd2/conf/sites-available/default.conf к следующему виду:
<VirtualHost *>
ServerAdmin webmasterr@localhost.local
DocumentRoot "/home/crsusr/www/html"
AddHandler 1cws-process .1ccr
<IfModule mpm_itk_module>
AssignUserId crsusr crsusr
</IfModule>
Alias /storage /home/crsusr/www/crs
<Directory /home/crsusr/crs/www>
DirectorySlash Off
SetHandler 1cws-process
ManagedApplicationDescriptor /home/crsusr/www/crs/repo.1ccr
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/httpd2/error_log
LogLevel warn
<IfModule log_config_module>
CustomLog /var/log/httpd2/access_log common
</IfModule>
</VirtualHost>
Перезапустим веб-сервер service httpd2 restart
И поставим его на автостарт chkconfig httpd2 on
Заключение
Так как пользователю, создаваемому в данном руководстве, интерактивный вход в систему (доступ по ssh) не нужен, в целях обеспечения безопасности можно отключить шелл: usermod -s /dev/null crsusr
На сервер хранилища конфигураций можно подключаться следующими способами:
- http-подключение http://ip_or_dns_name/storage/repo.1ccr/name_of_repo
- tcp-подключение tcp://ip_or_dns_name/name_of_repo
Где name_of_repo имя хранилища конфигурации.