Публикация базы данных 1С Предприятия на WEB сервере Apache

Установка Apache и публикация базы 1С на web-сервере под Windows - дело достаточно простое, данным очерком попытаемся упростить подобную процедуру и для linux систем. Опытную установку будем производить на системе CentOS 5.8 в виртуальной машине при помощи VirtualBox (CentOS 5.8 взят только из-за малых потребностей в ресурсах, CentOS 6 также подойдет). База данных 1С@Предприятия будет использоваться на файлах.

Подготовительные мероприятия

Обновим систему:

yum update

Установим веб сервер (если он еще не установлен):

yum install httpd

зададим автоматический старт сервера Apache при помощи chkonfig:

chkconfig httpd on

запустим Apache:

/etc/init.d/httpd start

 

Заранее подготовим установочные файлы сервера 1С@Предприятия. Взять их можно с дисков ИТС, скачать с официального сайта 1с или других ресурсов. В нашем случае имеется архив сервера 1С предприятия для linux (rpm пакеты).

Установка сервера 1С@Предприятия

Итак, в нашей системе имеется пользователь alexandr, архив с файлами 1С@Предприятия расположен на рабочем столе. Начнем установку.

Распакуем архив и установим пакеты:

mkdir /home/alexandr/temp_1c

mv /home/alexandr/Desktop/8.2.17.153_rpm.tar.gz /home/alexandr/Desktop/temp_1c/

cd /home/alexandr/Desktop/temp_1c

tar xzvf 8.2.17.153_rpm.tar.gz

rm  8.2.17.153_rpm.tar.gz

 

Убедимся, что архив распаковался:

ls
1C_Enterprise82-common-nls-8.2.17-153.i386.rpm

1C_Enterprise82-crs-8.2.17-153.i386.rpm

1C_Enterprise82-crs-nls-8.2.17-153.i386.rpm

1C_Enterprise82-server-8.2.17-153.i386.rpm

1C_Enterprise82-server-nls-8.2.17-153.i386.rpm

1C_Enterprise82-ws-8.2.17-153.i386.rpm

1C_Enterprise82-ws-nls-8.2.17-153.i386.rpm

 

Станем суперпользователем root:

su -
cd /home/alexandr/Desktop/temp_1c/

При помощи следующей команды установим все эти пакеты:

rpm -Uvh 1C_Enterprise82*.rpm

Отладка и запуск сервера 1С@Предприятия

Назначим директории с программой правильного владельца и группу:

chown -R usr1cv82:grp1cv82 /opt/1C

Запустим утилиту отладки и конфигурирования сервера 1С@Предприятия:

/opt/1C/v8.2/i386/utils/config_server /usr/share/fonts/ 

Получили в консоли сообщение о необходимых зависимостях:

/opt/1C/v8.2/i386/utils/config_server /usr/share/fonts/


Please install following package:  libglib

Please install following package:  UnixODBC

No truetype conversion utility found!

Please install ttf2afm or ttf2pt1!

Установим необходимые пакеты

yum install unixODBC

подключим дополнительные репозитории (RPMForge и EPEL):

rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt

wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm

rpm -i rpmforge-release-0.5.2-2.el5.rf.i386.rpm

 

rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL

rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

 

yum install ttf2pt1

 

Снова проведем проверку:

/opt/1C/v8.2/i386/utils/config_server /usr/share/fonts/


Please install following package:  libglib

Небольшое отступление

В принципе можно считать, что сервер 1С@Предприятие установлен и настроен. Результатом работы скрипта ( /opt/1C/v8.2/i386/utils/config_server) является создание настроечного файла type.xml в директории /opt/1C/v8.2/i386/conf/grcmncfg/. Убедимся так ли это:

ls /opt/1C/v8.2/i386/conf/grcmncfg/
type.xml

А как же неудовлетворенная зависимость libglib?

Здесь все просто. Откроем в текстовом редакторе файл /opt/1C/v8.2/i386/utils/config_server и найдем секцию со злободневным пакетом libglib:

 

########################################################

    # checking nessessary libraries

    checkLib MagickWand Wand || checkLib Wand || askToInstall ImageMagick

    checkLib freetype || askToInstall FreeType

    checkLib gsf-1    || askToInstall libgsf

    checkLib glib-2.0 || askToInstall libglib

    checkLib odbc     || askToInstall UnixODBC

    #-------------------------------------------------------

предпоследняя строка проверки зависимости и не дает нам покоя. С помощью штатных инструментов системы убедимся, что все в порядке:

rpm -qa |grep glib

glibc-common-2.5-81.el5_8.7

glib2-devel-2.12.3-4.el5_3.1

glibc-2.5-81.el5_8.7

avahi-glib-0.6.16-10.el5_6

glibc-headers-2.5-81.el5_8.7

dbus-glib-0.73-10.el5_5

glibc-devel-2.5-81.el5_8.7

glib2-2.12.3-4.el5_3.1

NetworkManager-glib-0.7.0-13.el5

Наш пакет glib2-2.12.3-4.el5_3.1 установлен в системе!

Подготовка директории для баз данных

Директория по умолчанию для веб-сервера /var/www/html, создадим в ней папку base:

mkdir /var/www/html/base

соответственно в браузере мы будем набирать следующий адрес для доступа к приложению: http://nash_ip_adres/base

В директории /var/www/html/base будет располагаться сгенерированный системой файл default.vrd, в котором будет описана строка подключения к директории с базой 1С@Предприятия.

Создание директории для базы данных 1С@Предприятия

Внимание: первоначально данное решение было опробовано для использования в режиме многопользовательского доступа к базе многих внешних пользователей в режиме терминального доступа RX@Etersoft, запуская 1С@Предприятие под Wine@Etersoft.

cd  /

mkdir /pub

Access Control Lists, ACL

У каждого объекта: файла или каталога, только один владелец, и это хорошо, пока в системе всего один пользователь (кстати, root мы пользователем не считаем – он обычно не работает с системой, а только администрирует ее). А стоит появиться нескольким пользователям, которым нужно изменять файлы друг друга, все усложняется.

Нужен более тон­кий контроль над тем, кто, что и где может делать. При нескольких условиях такое позволяют списки управления доступом (Access Control Lists, ACL), расширение большинства файловых систем (ФС) Linux. Для начала нужно ядро со встроенной поддерж­кой ACL – в любом ядре из дистрибутива она будет. Далее, ACL надо активиро­вать при монтировании файловой системы. Чтобы ACL активировались при загрузке системы, откройте /etc/fstab и добавьте acl к списку опций монтирования файловой системы:

vi /etc/fstab
было
/dev/VolGroup00/LogVol00 /                      ext3    defaults        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                   swap    defaults        0 0

стало

/dev/VolGroup00/LogVol00 /                      ext3    defaults,acl    1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                   swap    defaults        0 0

 

К каталогу /pub у нас будет обращаться веб сервер под пользователем apache и пользователь alexandr (также, на всякий случай, пользователя usr1cv82 добавим тоже), под которым мы положим туда свою базу данных. Назначим каталогу /pub доступ для этих пользователей:

setfacl -m u:apache:rwx -R /pub
setfacl -m d:u:apache:rwx -R /pub

setfacl -m u:alexandr:rwx -R /pub
setfacl -m d:u:alexandr:rwx -R /pub

setfacl -m u:usr1cv82:rwx -R /pub
setfacl -m d:u:usr1cv82:rwx -R /pub

Дополнительно создадим ссылку в домашней папке пользователя alexandr для удобства:

ln -s /pub /home/alexandr/pub

Размещение базы данных

Настала пора поместить в директорию /pub нашу базу данных, которая в файловом варианте представляет собой тоже папку, содержащую бинарный файл 1Cv8.1CD, являющийся базой и несколько директорий со служебными файлами. Например, по мотивам "Видеоурок: Как разработать простое прикладное решение", мной (только приступившего к изучению платформы 1С@Предприятие) было создано прикладное решение "Ремонт насосов". Папка с базой данных имеет название kurs. копируем базу (в папке под названием kurs) в директорию /pub.

Настройка веб сервера для публикации базы 1С

Запустим конфигурационную утилиту, которая внесет изменения в файл /etc/conf/httpd.conf и создаст настроечный файл default.vrd. В последующих ваших экспериментах лучше править вручную эти файлы, так как при использовании повторно данной утилитой в файле /etc/conf/httpd.conf приходилось комментировать лишнюю строку #for requests without a known для удачного запуска веб сервера.

cd /opt/1C/v8.2/i386/
./webinst -apache22 -wsdir base -dir '/var/www/html/base/' -connStr 'File="/pub/kurs"' -confPath /etc/httpd/conf/httpd.conf

Публикация выполнена
  • -wsdir – имя алиаса веб-сервера для соединения с базой, в последствии мы будем обращаться к ней набирая в браузере http://адрес.сервера/base
  • -dir – директория где будут располагаться файлы web-интерфейса 1с (точнее один файл default.vrd);
  • -connStr – строка соединения с базой 1с предприятия;
  • -confPath – расположение конфигурационного файла web-сервера apache.

Задаем владельца для файла default.vrd:

chown apache:apache /var/www/html/base/default.vrd

Перезагрузим сервера 1с и апач:

/etc/init.d/httpd restart
/etc/init.d/srv1cv82 restart

 

Убедимся, что все сервисы (daemon, rmngr, rphost) удачно стартовали:

ps aux |grep 1c

Пробный запуск

Откроем браузер и введем адрес (в нашем случае IP 192.168.1.4) http://192.168.1.4/base

Пробный запуск веб клиента 1с
Пробный запуск 1с ключ

 

Ключ защиты HASP

На страничке http://download.etersoft.ru/pub/Etersoft/HASP/last/CentOS/5/ найдем наш установочный пакет и инсталлируем его в систему:

rpm -Uvh http://download.etersoft.ru/pub/Etersoft/HASP/last/CentOS/5/haspd-3.3-eter4centos.i586.rpm

 

Проверим работу демона haspd:

/etc/init.d/haspd status


Hardware protection keys support bundle. Etersoft (c) 2008-2012
HASPD package 3.3 with /dev/bus/usb support
Aladdin HASP 4/HL/SRM driver status:
    kernel module aksparlnx is not loaded (WARNING: HASP LPT keys support is disabled! Run service haspd build if needed.)
    aksusbd is running
    winehasp is running
    hasplm is running
    hasplmd is running
Daemon version: 1.14 (#7779) - key API (USB) version: 3.88 (parallel driver not available)
Smartkey 3 USB/LPT driver status:
    skeyd is stopped
SafeNet Sentinel status:
    usbsentinel is stopped
    SntlKeysSrvrlnx is stopped

Демон haspd имеет встроенный веб сервер доступный по адресу: http://localhost:1947

localhost:1947

БАЗЫ ДАННЫХ 1С ПРЕДПРИЯТИЯ НА WEB СЕРВЕРЕ APACHE

Запуск веб-клиента 1сПредприятия
Работа с 1с в броузере
Работа с 1с в броузере
Файлы базы 1с

 

Автор: Александр