1C/CRS

Материал из ALT Linux Wiki

Сервер хранилища конфигураций

Проверено на конфигурациях:

  • ALT Linux starter kit (Trientalis) i586
  • 1С:Предприятие 8.3.5-1248 i386


Важные замечания

  • Сервер хранилища конфигураций (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"

Т.к. интерактивный вход данному пользователю не нужен можно отключить шелл: usermod -s /dev/null crsusr

В отличие от сервера 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

На данном этапе уже можно подключаться по адресу (для создания хранилища) http://ip_or_dns_name/storage/repo.1ccr/name_of_repo