Публикация ресурсов 1С на Веб-сервере

Опубликовать можно базу, а можно еще и вебсервисы опубликовать.

На диске ИТС разобраны варианты для веб-серверов IIS и Apache. Сначала попробовал IIS, поставить я его поставил, но после публикации не хватило терпения сделать, чтобы на моей Win7 x64 подгрузился модуль веб-сервера от 1С. Поэтому, радостно снеся IIS, очень быстро настроил для веб-сервера Apache.

 

Быстрый переход:

Подготовительные мероприятия
Публикация базы, через командную строку
Публикация базы через конфигуратор
Публикация вебсервисов через конфигуратор
Чтобы публикация была доступна из инета

 

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

  1. Должны быть установлены Модули расширения веб-сервера (выбирается при установке платформы):
    Модули расширения веб-сервера
  2. Качаем и ставим Apache (ищем ссылку со словами Win32 Binary without crypto).
    Учитывайте, что на 80 порту не должно быть никаких процессов (например, запущенный IIS, который случайно забыли удалить, или я заметил, что TeamViewer может садиться на 80 порт и т.д. и т.п.)
  3. После установки Apache должна открываться приветственная страница в браузере по адресу http://localhost или http://127.0.0.1, типо этого:

начальная страница Apache
 

Дополнительно следует выполнить следующее:

  1. Убедиться что пользователь, от лица которого работает веб-сервер, имеет право на чтение содержимого каталога bin конкретной версии платформы 1С:Предприятие
  2. Убедиться что пользователь, от лица которого работает веб-сервер, имеет право на изменение содержимого каталога информационной базы (только в случае файлового варианта)
  3. Возможно, после того как вы хотя бы раз уже что-то опубликовали и что-то не «взлетает», есть смысл глянуть, а добавила ли 1С свой модуль в конфиг апача, должна быть строка типо такой:
    LoadModule _1cws_module "C:/Program Files (x86)/1cv82/8.2.17.153/bin/wsapch2.dll"

 

Публикация базы, через командную строку

Для ручной настройки взаимосвязи веб-сервера Apache с 1C необходимо воспользоваться утилитой webinst. Приведу примеры командных строк для файлового и клиент-серверного режимов работы информационной базы. Корень веб-сервера (оставил по-умолчанию):
    C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs
Создал в корне веб-сервера папку, куда опубликуется база:
    ReestrZamechanii
Папка, где лежит конфигурационный файл веб-сервака httpd.conf:
    C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf

для Файлового режима работы

Папка, где лежит информационная база (какая угодно папка, лишь бы база там была и была написана для управляемого приложения):
    D:\BASEs\ReestrZamechanii

Теперь с правами админа запускаю виндовую командную строку cmd.exe, перехожу в папку где лежит webinst.exe и выполняю команду:

webinst -apache22 -wsdir ReestrZamechanii -dir "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ReestrZamechanii" -connstr "File=""D:\BASEs\ReestrZamechanii"";" -confpath "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf"
 
Публикация выполнена

для Клиент-серверного режима работы

Имя кластера серверов 1С:Предприятия:
    ZoomAll_PC
Имя информационной базы в кластере:
    ReestrZamechanii

Убедитесь, что Сервер 1С:Предприятия и SQL сервер запущены.

Теперь с правами админа запускаю виндовую командную строку cmd.exe, перехожу в папку где лежит webinst.exe и выполняю команду:

webinst -apache22 -wsdir ReestrZamechanii -dir "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\ReestrZamechanii" -connstr "Srvr="ZoomAll_PC";Ref="ReestrZamechanii";" -confpath "C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf"
 
Публикация выполнена

После проделанных действий обязательно рестартуем Apache

 

Перехожу по ссылке http://localhost/ReestrZamechanii:

 

логинюсь и вижу что все пашет:

 

 

Публикация базы через конфигуратор

Когда первый раз мне потребовалось опубликовать базу, я сначала попробовал через конфигуратор это сделать:

Администрирование - Публикация на веб-сервере...
 

Сразу, к сожалению, не «взлетело», поэтому были принято решение идти долгим путем через командную строку (см. выше). По прошествии некоторого времени попробовал как-то повторить опубликование через конфигуратор и заработало, причем это реально проще и быстрее. Ведь, если вы проделали все подготовительные мероприятия и дополнительные рекомендации (см. выше), то для публикации достаточно вызвать диалог:

Диалог Публикация на веб-сервере
 

корректно его заполнить и нажать кнопку «Опубликовать».

Внимательно. Здесь уже Apache установлен в папку C:\Apache, корень веб-сервера (оставил по-умолчанию) C:\Apache\Apache2\htdocs и в нем просто создал папку ReestrZamechanii, куда и опубликовал базу.

Кстати, публикация это всего лишь создание файла default.vrd в указанной директории. В данном случае (база в клиент-серверном режиме) имеет вот такое содержимое:

Публикация базы, содержимое default.vrd
 

заметьте, говорит, что не опубликовано ни одного вебсервиса ws enable ="false".

 

Публикация вебсервисов через конфигуратор

На примере двух вебсервисов отразил идею публикации вебсервисов на картинке:

 

Обращаю внимание, в примере WSDL не содержит информацию об операциях, потому что я ни к одному вебсервису их не добавил))

Возможны проблемы. После того как вроде правильно опубликовали вебсервис, при попытке получить WSDL вебсервиса, натыкаешься на косяк вида:

{"#exception":"{http://v8.1c.ru/8.1/data/core}Exception",
"exception":{"clsid":"9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3",
"descr":"Файл не обнаружен 'v8res://mngsrv/ws1.1cws'",
"data":"77u/ew0KezlkYjFmYTM3LWI0NTUtNGYzZi1iOGRkLTdkZTBlYTdkNmRhMywi0KTQ\r\nsNC50Lsg0L3QtSDQvtCx0L3QsNGA0YPQttC10L0gJ3Y4cmVzOi8vbW5nc3J2L2Jh\r\nbGFuY2VzLjFjd3MnIn0sMSwNCnsidjhyZXM6Ly9tbmdzcnYvYmFsYW5jZXMuMWN3\r\ncyIsMH0NCn0="}}

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

 

Чтобы публикация была доступна из инета

Вариант, когда тачка со всем хозяйством (1С, веб сервер и т.д.) имеют внешний ип, то тут достаточно чтобы 80 порт был открыт для внешки.

Вариант, когда тачка со всем хозяйством стоит за фаером, тогда надо просто пробросить 80 порт с фаера на тачку с хозяйством и само-собой на этой тачке опять таки должен быть открыт 80 порт. По-идее, ничего делать больше не надо (если вы не лезли в httpd.conf и не правили там ничего).