Кроме сервера 1с под linux, есть еще одна замечательная вещь – веб-клиент к 1с позволяющий работать в программе через обыкновенный веб-браузер, без установки каких либо дополнительных программных компонентов. Отличная вещь для организации работы мобильных сотрудников, небольшого удаленного офиса или склада – не нужно заморачиваться на тему VPN соединения и достаточно быстрого интернет соединения для RDP-сессии.

Операционная система Fedora 12 i386, актуальный на момент написания статьи релиз 1с предприятия 8.2.11.236.

1. Необходимые для установки пакеты.

Для установки веб-клиента работающего с сервером 1с предприятия необходимо установить следующие пакеты:

  • 1C_Enterprise82-common-8.2.<X>-<Y>.i386.rpm,
  • 1C_Enterprise82-common-nls-8.2.<X>-<Y>.i386.rpm,
  • 1C_Enterprise82-ws-8.2.<X>-<Y>.i386.rpm,
  • 1C_Enterprise82-ws-nls-8.2.<X>-<Y>.i386.rpm.

Если будет использоваться файловый вариант базы, то дополнительно нужно установить пакеты:

  • 1C_Enterprise82-crs-8.2.<X>-<Y>.i386.rpm
  • 1C_Enterprise82-crs-nls-8.2.<X>-<Y>.i386.rpm

Все вышеуказанные пакеты поставляются фирмой 1с и обычно устанавливаются без особых затруднений командой

[root@srv] rpm -ihv ...

2. Публикация web-клиента

Переходим в каталог с файлами 1с /opt/1c/v8.2/i386 и запускаем утилиту webinst.

[root@srv i386]# ./webinst -apache22 -wsdir basa1 -dir '/var/www/html/basa1/' -connStr
  'Srvr="srv.domain.com";Ref="basa1"' -confPath /etc/httpd/conf/httpd.conf
Installation is successfully completed.
acp: /etc/httpd/conf/httpd.conf
rd: /var/www/html/basa1/
vd: /etc/httpd/conf/httpd.conf

Параметры запуска скрипта:

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

Скрипт добавит в конфигурационный файл apache следующие строчки

# Загрузка модуля 1с
LoadModule _1cws_module "/opt/1C/v8.2/i386/wsap22.so"
 
.........
 
# 1c publication
Alias "/basa1" "/var/www/html/basa1/"
<Directory "/var/www/html/basa1/">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    SetHandler 1c-application
    ManagedApplicationDescriptor "/var/www/html/basa1/default.vrd"
</Directory>

Также необходимо исправить права доступа к файлу default.vrd

[root@srv conf]# chown apache:apache /var/www/html/basa1/default.vrd

Если этого не сделали в окне браузера следующую ошибку

1C:Enterprise 8 application error:
Error in virtual resources descriptor distribution
by reason:
File access error '/var/www/html/basa1/default.vrd'

Все вышеперечисленные процедуры придется выполнить для добавления каждой публикуемой базы.

Теперь добавляем в автозагрузку и запускаем apache:

[root@srv ~] chkconfig httpd on
[root@srv ~] service httpd start
Starting httpd:                         [  OK  ]

Также не стоит забывать о необходимости открыть 80-ый порт для приема входящих соединений по протоколу HTTP.

3. Дополнительная настройка сервера 1с предприятия

Если у нас установлена конфигруация сервер 1с  предприятия + postgresql на линукс-машине, в случае неправильной настройки или отсутсвия необходимых шрифтов будет появляться следующее окошко.

Для работы 1с 8.2 режиме «управляемого приложения», отказа от совместимости с 1с 8.1 и полноценного функционирвания web-клиента необходимо выполнить следующующие действия.

Устанавливаем дополнительные пакеты

[root@srv utils]# yum install ImageMagick

Устанавливаем  шрифты truetype от Microsoft

[root@srv tmp]# yum install fontpackages-devel xorg-x11-font-utils wget cabextract
[root@srv tmp]# wget http://kir.sacred.ru/lj/microsoft-core-fonts.spec
[root@srv tmp]# rpmbuild -bb microsoft-core-fonts.spec
[root@srv noarch]# rpm -ihv microsoft-core-fonts-2.1-1.fc12.noarch.rpm
Preparing...                ########################################### [100%]
1:microsoft-core-fonts   ########################################### [100%]

Заускаем утилиту конфигурации сервера 1 с предприятия из папки /opt/1c/v8.2/i386/utils

[root@srv utils]# ./config_server /usr/share/fonts/microsoft-core
No truetype conversion utility found!
Please install ttf2afm or ttf2pt1!

Устанавливаем пакет и еще раз запускаем config_server

[root@srv utils]# yum install ttf2pt1
[root@srv utils]# ./config_server /usr/share/fonts/microsoft-core

Перезапускаем сервер 1с предприятия.

[root@srv utils]# service srv1cv82 restart
Stopping 1C:Enterprise 8.2 server: OK
Starting 1C:Enterprise 8.2 server: OK

4. Запуск web-клиента и настройка hasp

Открываем в web-браузере ссылку http://адрес.сервера/имябазы, если все прошло успешно появится окно загругрузки, а затем запрос логина и пароля.

Если после ввода пароля появилось окно «Лицензия не найдена» или «Не обнаружен ключ защиты программы»

Необходимо скопировать с компьютера где установлена клиентская часть 1с файл nethasp.ini в директорию /opt/1C/v8.2/i386/conf, в линуксовом варианте 1с этот файл почему-то отсутвует. Можно также создать этот файл самостоятельно:

[NH_COMMON]
NH_TCPIP = Enabled              ; Метод поиска сервера лицензий
 
[NH_TCPIP]
 
NH_SERVER_ADDR = 192.168.0.232  ; Список IP адресов серверов лицензий
NH_PORT_NUMBER = 475            ; Номер слушаемого порта
                                ; По умолчанию 475
 
NH_TCPIP_METHOD = TCP           ; Протокол обмена информацией с сервером лицензий
                                ; Я предпочитаю использовать TCP
                                ; По умолчанию UDP

ВАЖНО: Каждый открытый в браузере веб-клиент требует наличия лицензии 1с на рабочее место, точно-такое же как и предустановлена 1с работающая через обычное соединение.

 

Обсудить статью на форуме http://forum.alsigned.ru/viewtopic.php?f=4&t=9.

Проблемы при настройке 1с предприятия http://forum.alsigned.ru/viewforum.php?f=5.

102 Коммент. : “Ставим 1с web-клиент на apache”

  1. Alsigned пишет:

    @bach
    По логике – все правильно, да и с пустой базой должна хотя бы оболочка веб-клиента открываться.

    Если найдешь решение пиши, может кому пригодится.

  2. bach пишет:

    @Alsigned , доброго дня!
    Так же всем участникам удачной работы!
    Действительно все правильно. Ошибки нет. Браузер Google Chromium, настроен на блокировку всплывающих окон без предупреждения. Отключил опцию, прилетело сообщение об отсутствии лицензии :-D ! Банально, но факт.

  3. Dmitro пишет:

    Перепробовал все мануалы. Рекомендации не помогают.

    В браузере пишется вот такое:

    1C:Enterprise 8 application error:

    Connection error
    by reason:
    server_addr=tcp://192.168.1.233:1541 descr=Connection refused line=585 file=./src/DataExchangeTcpClientImpl.cpp

  4. @bach
    Забавная фишка, рад что все получилось ;)

  5. Alsigned пишет:

    Привет, @Dmitro

    Это стандартная ошибка когда веб-клиент не может соединиться с сервером 1с предприятия.

    Чтобы что-то конкретное подсказать маловато информации. Какая ОС? Версия 1с предприятия? Сервер предприятия на той же машине что и веб-клиент? Работает ли толстый клиент?

  6. bach пишет:

    @Alsigned & @Dmitro
    кто владелец default.vrd?

  7. Alsigned пишет:

    @bach

    Владелец default.vrd – пользователь из-под которого выполнялся ./webinst, как правило это root, но для корректной работы нужно что бы httpd мог прочитать этот файл, и как вариант можно сделать пользователя apache владельцем этого файла.

    При неправильно заданных правах в браузере появляется ошибка File access error ‘/var/www/html/basa1/default.vrd’

  8. bach пишет:

    @Alsigned

    хм… да другой тип ошибки, ждем ответов на допвопросы для раскрытия проблемы. Хотя разные мысли приходят, доступен ли вообще сервис 1С предприятия? Типа telnet 192.168.1.233 1541 что говорит?

  9. Dmitro пишет:

    @Alsigned
    ОС: Ubuntu 11.04
    Версия 1С: 8.2
    Сервер предприятия на той же машине что и веб-клиент: Да.
    Работает ли толстый клиент: не силен знаниями чтобы проверить :(
    владелец default.vrd: www-data (группа: grp1cv82)

    P.S. Доступ к default.vrd у всех на чтение и запись (chmod 777)

  10. Dmitro пишет:

    @bach
    telnet 192.168.1.233 1541 говорит:
    telnet: Unable to connect to remote host: Connection refused

  11. bach пишет:

    @Dmitro Привет!
    Вот это:

    Dmitro :
    telnet: Unable to connect to remote host: Connection refused

    говорит, что сервис srv1cv82 по сети недоступен!!!

  12. bach пишет:

    @Dmitro
    он сам вообще жив? на том сервере где должен стоять?

  13. Alsigned пишет:

    Привет, @Dmitro

    Какая архитектура ОС x86_64 или i386?

    Версия севера 1с предприятия имеет немножко более длинный фомат, например 8.2.14.509 (у каждого релиза есть свои осбенности для разных версий ОС). Поэтому предлагаю посмореть какие пакеты 1с установлены:
    sudo dpkg -l 1C*

    Раз не подключается telnet проверяем слушает ли сервер 1с какие-нибудь порты
    sudo netstat -ltnp

    Что касается толстого клинета – это оболочка 1с предприятия которая устанавливается непостредственно на пользовательский компьютер под Windows, она имеет намого больший функционал нежели веб-клиент. Без нее мы не сможем загрузить на сервер 1с предприятия базу данных.

  14. Victor пишет:

    Спасибо автору. Замечательный материал. На CentOS 6 при выполнении ./config_server /usr/share/fonts/microsoft-core выскакивает ls: cannot access /lib/libc-*.so: No such file or directory

    Что нужно сделать?

  15. Dmitro пишет:

    Вах! Какой я тупой!

    Версия сервера: 8.2.9-356_i386

    Установлены пакеты:
    1c-enterprise82-common (8.2.9-356)
    1c-enterprise82-common-nls (8.2.9-356)
    1c-enterprise82-server (8.2.9-356)
    1c-enterprise82-ws (8.2.9-356)
    1c-enterprise82-ws-nls (8.2.9-356)
    1c-enterprise82-server-nls (8.2.9-356)
    1c-enterprise82-crs (8.2.9-356)
    1c-enterprise82-crs-nls (8.2.9-356)

    $ sudo service srv1cv82 start
    Starting 1C:Enterprise 8.2 server: Warning: already started!
    OK

    Я так понял, что сервер 1С работает.

    $ sudo netstat -ltnp
    Активные соединения с интернетом (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:1540 0.0.0.0:* LISTEN 3802/ragent
    tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1018/mysqld
    tcp 0 0 0.0.0.0:749 0.0.0.0:* LISTEN 986/kadmind
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1542/apache2
    tcp 0 0 0.0.0.0:464 0.0.0.0:* LISTEN 986/kadmind
    tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 830/cupsd
    tcp 0 0 0.0.0.0:1560 0.0.0.0:* LISTEN 3802/ragent
    tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 1086/postmaster
    tcp6 0 0 :::139 :::* LISTEN 751/smbd
    tcp6 0 0 :::464 :::* LISTEN 986/kadmind
    tcp6 0 0 :::631 :::* LISTEN 830/cupsd
    tcp6 0 0 :::5432 :::* LISTEN 1086/postmaster
    tcp6 0 0 :::445 :::* LISTEN 751/smbd

  16. bach пишет:

    @Dmitro

    Хм… странно.

    стоп/старт service srv1cv82 >
    netstat -ltnp

    строка с тем что слушается 1541 порт не появляется? Что-то типа

    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name

    tcp 0 0 0.0.0.0:1541 0.0.0.0:* LISTEN 23167/rmngr

  17. Alsigned пишет:

    @Dmitro
    На самом-то деле сервер 1с предприятия запустился не полностью, работает только ragent. Проблема скорее всего в том, что перед установкой не были правильно заданы параметры в файле /etc/hosts.

    Что говорят следующие команды?

    1. cat /home/usr1cv82/.1cv82/1C/1Cv82/reg_1541/1CV8Reg.lst

    2. hostname

    3. cat /etc/hosts

  18. Alsigned пишет:

    Привет, @Victor
    Какая архитектура ОС x86_64 или i386?

    Нужно проверить установлен ли пакет glibc, потому что библиотека libc-*.so принадлежит именно ему.

  19. Dmitro пишет:

    @Alsigned

    $ cat /home/usr1cv82/.1cv82/1C/1Cv82/reg_1541/1CV8Reg.lst
    cat: /home/usr1cv82/.1cv82/1C/1Cv82/reg_1541/1CV8Reg.lst: Нет такого файла или каталога

    Там действительно его нет, только один файл: srvribrg.lst

    ******************************

    $ cat /etc/hosts
    127.0.0.1 localhost.localdomain localhost
    ::1 Administrator-desktop localhost6.localdomain6 localhost6
    127.0.1.1 Administrator-desktop

    # The following lines are desirable for IPv6 capable hosts
    ::1 localhost ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    ff02::3 ip6-allhosts

    *********************************

    $ hostname
    Administrator-desktop

  20. Alsigned пишет:

    @Dmitro
    Вот как я и говорил раньше – не верно заданы параметры в файле hosts перед установкой.

    1. Удаляем все пакеты 1с-предприятия, удаляем пользователя usr1cv82 и его папку /home/usr1cv82/. Удаляем папку 1C из каталога /opt.

    2. Меняем hostname машины на более короткое, например admpc. Лучше всего в hostname прописать FQDN, например admpc.mydomain.test. Перезапускаем компьютер.

    3. Приводим файл /etc/hosts к следующему виду (при этом 192.168.1.233 – ip компьютера):
    127.0.0.1 localhost
    192.168.1.233 admpc admpc.mydomain.test

    4. Устанавливаем сервер 1с предприятия.

  21. Dmitro пишет:

    @Alsigned

    Йех!!! Спасибо за совет. Заработало.

    Радость была недолгой :(

    HTTP: Internal server error
    Ошибка при выполнении запроса POST к ресурсу /e1cib/login:
    по причине:
    Информационная база не обнаружена

  22. Victor пишет:

    @Alsigned

    x86_64

  23. Victor пишет:

    @Alsigned
    Установлен glibc

  24. Victor пишет:

    @Alsigned
    может simlink где-то прописать?!

  25. Alsigned пишет:

    @Victor
    Не symlink здесь не поможет, ему нужна 32-битная библиотека.

    yum install glibc.i686

    ;)

  26. Alsigned пишет:

    @Dmitro Понятное дело. Базы то нет ;)

    Что бы создать базу нужно, найти компьютер с Windows XP, поставить туда клиентскую часть и консоль управления серверами 1с предприятия. Через консоль создаешь базу, через конфигуратор ее заполняешь. Потом только цепляешься веб-клиентом.

  27. Victor пишет:

    @Alsigned
    Спасибо, мастер)))

  28. Dmitro пишет:

    Alsigned :
    @Dmitro Понятное дело. Базы то нет
    Что бы создать базу нужно, найти компьютер с Windows XP, поставить туда клиентскую часть и консоль управления серверами 1с предприятия. Через консоль создаешь базу, через конфигуратор ее заполняешь. Потом только цепляешься веб-клиентом.

    @Victor
    Я уже сам понял что надо так сделать. Огромное спасибо всем. Статья замечательная.

  29. Andrey пишет:

    [root@srv1c utils]# ./config_server /usr/share/fonts/microsoft-core/
    ls: cannot access /lib/libc-*.so: No such file or directory
    Usage: file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
    [-e testname] [-F separator] [-f namefile] [-m magicfiles] file …
    file -C [-m magicfiles]
    file [--help]
    ./config_server: line 146: [: =: unary operator expected

    где-то не хватает мягких ссылок или может что-то другое?…

  30. Alsigned пишет:

    Привет, @Andrey

    Парой комментариев выше, была точно такая же проблема.
    Если система x86_64 то нужно доставить glibc.i686

  31. Andrey пишет:

    @Alsigned
    да, точно, проглядел..
    спасибо! всё получилось!

  32. Alsigned пишет:

    Уважаемые, читатели.

    Комментариев к статьям стало слишком много и что бы их немножко систематизировать переношу обсуждение в мини-форум.

    Обсуждение и дополнение непосредственно статьи http://forum.alsigned.ru/viewtopic.php?f=4&t=9

    Если у вас трудности в настройке, установке или эксплуатации 1с предприятия – вам сюда http://forum.alsigned.ru/viewforum.php?f=5, и не стесняйтесь создавать новую тему.
    Заранее спасибо за понимание.
    С уважением, Alsigned. ;)