1C/CRS
Материал из ALT Linux Wiki
Содержание |
Сервер хранилища конфигураций
Проверено на конфигурациях:
- 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"
Т.к. интерактивный вход данному пользователю не нужен можно отключить шелл: 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