Алексей алексеев добро пожаловать в мой уютненький бложек. Алексей алексеев добро пожаловать в мой уютненький бложек Как это работает

В этой статье будет рассказано, как быстро и просто установить 64-битный веб-сервер Apache 2.4.25, настроить его, и выполнить публикацию веб-сервиса с помощью 1С-Предприятия 8.3.

С версии 1С-Предприятие 8.3.8 мы получили возможность работать с сервером Apache 2.4. Учитывая, что поддержка Apache 2.2 заканчивается в июле 2017, вопрос вполне актуальный.

Перед началом установки убеждаемся в следующем:

Итак, если начальные условия у нас выполнены, то порядок действий будет следующим:

  1. Скачиваем и устанавливаем VC++ 15 Runtime по ссылке . Выбираем файл нужный язык и скачиваем файл «vc_redist.x64.exe». Устанавливаем его.
  2. Скачиваем последний актуальный дистрибутив с сайта Apache Haus , на момент написания статьи это 2.4.25 для версии x64. Дистрибутив содержит все необходимые моды для работы по SSL протоколу (библиотека OpenSSL), что для нас большой плюс.
  3. Распаковываем архив, в нем содержится каталог «Apache24», копируем этот каталог в место, где планируется разместить наш веб-сервер.
  4. Находим файл «Apache24/conf/httpd.conf » и редактируем его.
    1. Если в пункте 3 мы копировали в корневой каталог диска, то этот пункт пропускаем, иначе находим строку «Define SRVROOT "/Apache24" » и указываем там полный путь к папке сервера.
    2. Находим и редактируем строку «ServerAdmin [email protected] ».
    3. Находим и редактируем строку «ServerName localhost:80 ».
    4. Сохраняем файл.
  5. Проверяем список служб Windows на предмет наличия службы веб-публикаций (это наш стандартный IIS). На клиентских версиях Windows она скорее всего отсутствует, а на серверных по умолчанию существует. Проверяем, чтобы эта служба была отключена, иначе при попытке запуска Apache мы получим ошибку «make_sock: could not bind to address 0.0.0.0:80 ».
  6. Запускаем командную строку (cmd ) и переходим в каталог «Apache24/bin ». Выполняем тестовый запуск сервера путем отправки команды: httpd
  7. Если работает служба «Брандмауэр Windows», то мы получим сообщение о сетевой активности и запрос о разрешении работы данного приложения. Разрешаем.
  8. Если при установке и настройке не было ошибок, мы не увидим никаких сообщений, текстовый курсор будет мигать в режиме работы приложения, без возврата к стандартному приглашению командного процессора. В этот момент мы проверяем работоспособность путем ввода в адресной строке браузера адреса: «http://localhost». В результате нам должна отобразиться стандартная страница сборки Apache от «Apache Haus».
  9. Прерываем выполнение сервера путем нажатия CTRL+C и затем выполняем установку в качестве службы путем выполнения команды «httpd -k install ». Проверяем и убеждаемся в появлении новой службы в списке. Первая часть марлезонского балета прошла успешно – сам веб-сервер успешно установлен, настроен и работает.
  10. Для тестирования предлагаю использовать проверочную базу данных 8.3, которую можно скачать по ссылке . Разворачиваем как клиент-серверную, далее заходим в конфигуратор 1С-Предприятия под пользователем «Admin» без пароля и выбираем меню «Администрирование – Публикация на веб-сервисе…». Будет открыт диалог публикации, в котором в поле веб-сервиса в списке выбора доступен Apache 2.4. Выбираем его, отмечаем то, что хотим публиковать, нажимаем кнопку «Опубликовать». От рестарта отказываемся. Ниже пример на проверочной базе (можно скачать DT-файл).

  11. Открываем файл конфигурации «Apache24/conf/httpd.conf », ищем строку «LoadModule _1cws_module "C:/Program Files (x86)/1cv8/8.3.9.2170/bin/wsap24.dll" », меняем ее на «LoadModule _1cws_module "C:/Program Files/1cv8/8.3.9.2170/bin/wsap24.dll" ». Данное действие приходится выполнять потому, что, по умолчанию 1С в конфигураторе всегда проставляет ссылку на 32-битную библиотеку, а нам нужна 64-битная. Так что у нас есть выбор – либо каждый раз после правки публикации править файл, либо воспользоваться отдельным механизмом – утилитой «WebInst». Сохраняем файл конфигурации, делаем рестарт службы «Apache 2.4».
  12. Если все сделано правильно, то мы получаем две работоспособные ссылки:
    • «http://localhost/webtest/ » ссылка служит для входа в базу данных через веб-клиент.
    • «http://localhost/webtest/ws/Test?wsdl » - служит для просмотра содержимого wsdl-ссылки веб-сервиса, имеющегося в данной конфигурации.
  13. Вся процедура в результате занимает не дольше получаса.



" может работать в трех режимах:

  • Режим "Толстый клиент"
  • Режим "Тонкий клиент"
  • Режим "Веб-клиент"

В этой статье мы рассмотрим установку СЭД "Документооборот Проф" на корпоративный веб-сервер Apache (распространяется бесплатно) и запуск системы в веб-клиенте .
После установки и конфигурирования web-сервера Apache, пользователи
смогут заходить в базу данных системы документооборота через один из
следующих веб-броузеров:

  • Mozilla FireFox
  • Microsoft Explorer
  • Google Chrome
  • Opera
  • Safari

Сразу заметим, что материал этой статьи
может быть использован не только для развертывания на корпоративном
веб-сервере нашей системы документооборота, но и для развертывания
других конфигураций "1С", например, "1С:Управление небольшой фирмой",
"1С:Управление торговлей", "1С:Документооборот", "1С:Управление
производственным предприятием" и других, которые могут работать в режиме
управляемых форм 8.2.

Установка Apache

Веб-сервер Apache является свободно
распространяемым программным обеспечением (тем не менее обладающим своей
лицензий, которую необходимо соблюдать) и может быть свободно скачен с
официального сайта http://httpd.apache.org .
Вы можете скачать любую версию, не ниже 2.2.16. Перед скачиванием
выберите операционную систему вашего сервера (Unix или Windows).


Разработчики конфигураций "1С" для
разработки и тестирования своих конфигураций в веб-режиме также могут
установить Apache на свой локальный компьютер, допускается запуск Apache
на Windows 7 и Windows XP, при установке на локальный компьютер
разработчика можно выбрать установку для одного пользователя (текущего
пользователя), в таком случае доступ к веб-серверу будет осуществляться
не по стандартному порту 80, а через порт 8080.


Процедура установки Apache достаточно проста. После
скачивания небольшого дистрибутива (5.2 MB) в формате MSI (обычно файл
имеет название типа " httpd-2.2.16-win32-x86-no_ssl.msi") веб-сервера
распакуйте дистрибутив и запустите файл "setup.exe".



нажмите на картинку для увеличения


После начала установки заполните
параметры вашего веб-сервера. Укажите адрес электронной почты
администратора системы, в полях Network Domain, Server Name укажите
имена ваших серверов, если вы не планируете конфигурировать сервер для
доступа из внешних сетей, то можно указать произвольные имена, например
myServer, 1c_doc и т.д.



После ввода параметров нажмите " Next"
и дождитесь окончания установки. Состояние веб-сервер Apache в системе
Windows отображается в системном окне рядом с часами, наличие зеленого
треугольника говорит о том, что сервер запущен и корректно работает.



Вы можете открыть Apache Monitor, кликнув правой кнопкой мышки на указанной на верхнем рисунке пиктограмме.



Обычно ни каких дополнительных настроек
Apache в системе Windows нам делать не придется, конфигурация СЭД
"Документооборот Проф" будет опубликована на веб-сервере автоматически,
из конфигуратора "1С:Предприятие 8.2".

Настройка 1С:Предприятие 8.2

Для включения возможности работать с
конфигурацией в режиме веб-клиента и использовать все возможности
управляемых формы версии 8.2 нам необходимо опубликовать
(экспортировать) конфигурацию на веб-сервер. Для публикации конфигурации
на веб-сервер необходимо открыть базу данных в режиме "Конфигуратор" и в
меню "Администрирование" выбрать пункт "Публикация на веб-сервере".



В открывшемся окне введите:

  • Имя - имя вашей базы данных латинскими буквами. Данное имя будет
    использовать пользователям в веб-броузерах пользователями при вводе
    URL-адреса, например введя имя cfg82_doc, для веб-сервера localhost,
    пользователи будут должны адрес базы данных как http://localhost/cfg82_doc . Имя должно соответствовать стандартам URL (стандарт RFC 1738).
  • Веб-сервер - выберите Apache 2.2
  • Каталог - место для физического расположения опубликованных
    системных файлов в директории вашего веб-сервера, например
    C:\apache_ws\doc_prof\

После ввода имени и каталога нажмите кнопку "Опубликовать". После
завершения публикации можно открывать веб-броузер и вводить адрес вашей
опубликованной базы данных. Все должно заработать. Если будут
наблюдаться проблемы, проверьте файл httpd.conf из каталога веб-сервера
(каталог установки по умолчанию "C:\Program Files\Apache Software
Foundation\Apache2.2\conf"). В файле httpd.conf должны быть строки,
указывающие на использование Apache с 1С:Предприятие 8.2, пример такой
строки:



LoadModule _1cws_module "C:/Program Files/1cv82/8.2.12.75/bin/wsap22.dll"


Если строки нет, попробуйте создать её вручную (предварительно сделав
копию файла httpd.conf), указав в строке путь к библиотеке wsap22.dll
вашей платформы 1С. Рекомендуется использовать платформу 1С версии ниже
8.2.12. В некоторых случаях помогает развертывание веб-сервера не в
каталог по-умолчанию "Program files", в какой-либо другой каталог вашего
сервера или рабочей станции. Кроме того, в файле конфигурации Apache
должен быть раздел с информацией об опубликованной базе данных.
Например, такой:



# 1c publication
Alias "/cfg82_prof" "C:/apache_ws/doc_prof/"

AllowOverride None
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "C:/apache_ws/doc_prof/default.vrd"


После ввода адреса откроется окно для аутентификации пользователя.
Выберите ваше имя и введите ваш пароль. На рисунке ниже, каки на всех
остальных показаны примеры запуска "Документооборот Проф" платформы 8.2 в
веб-броузере FireFox.





На рисунке ниже приведен пример работы конфигурации 1С в режиме управляемых форм в окне броузера.



Работа в веб-клиенте практически не отличается от работы с управляемыми формами в тонком и веб-клиенте.


2010. Русаков Григорий. Статья написана для сайта www.документооборот.net , перепечатка и копирование разрешается с обязательным указанием ссылки на сайт http://www.документооборот.net и автора.

Начиная с версии платформы 1С 8.3, появилась возможность опубликовывать информационные базы на веб-серверах. Данное решение очень удобно, ведь перейдя по ссылке в браузере, вы сможете полноценно работать в 1С. Обратите внимание, что работа возможно только в режиме «Предприятие» Использовать конфигуратор можно только на толстом клиенте.

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

В данной статье мы пошагово рассмотрим публикацию информационной базы 1C 8.3 на веб-сервере с использованием Apache. Описанные ниже настройки, которые мы будем производить в самой 1С, ничем не отличаются от публикации на веб-сервере IIS.

Единственное отличие — сервер под управлением IIS более «привередливый» к настройкам, поэтому чаще всего выбор падает именно на Apache.

Установка и настройка Apache 2.4

Первым делом нужно скачать сам Apache, например, с официального сайта . Актуальная на данный момент версия 2.4. В процессе установки нет ничего сложного, достаточно следовать помощнику.

Когда при установке перед вами отобразится окно с информацией о сервере, введите в первых двух полях «localhost». Это будет означать, что наш компьютер и будет являться сервером, на котором расположена 1С.

Так же обратите внимание, что у нас будет использоваться порт 80 (переключатель внизу формы). Важно, чтобы он не был занят другими приложениями.

После успешной установки программы в трее появится специальный значок Apache. С его помощью можно как запустить, так и остановить работу веб-сервера.

Публикация информационной базы 1С 8.3

После установки Apache можно приступить непосредственно к публикации информационной базы на веб-сервере. Для этого зайдите в нужную базу в режиме конфигуратор. Все необходимые действия будут производиться именно здесь. При этом, как было сказано выше, вы можете воспользоваться данной инструкции и в случае использования IIS.

Выберите в меню «Администрирование» пункт «Публикация на веб-сервере». В открывшемся окне мы оставим все настройки по умолчанию, изменив лишь малую их часть.

В качестве веб-сервера выберем Apache 2.2, который установили ранее. В качестве имени можно указать произвольное значение. Мы публикуем 1С:Документооборот, поэтому назовем ее просто «doc». В поле каталог выберем так же созданную нами пустую папку, которая может быть расположена в любом месте.

После внесения всех необходимых данных, нажмем на кнопку «Опубликовать» и перезапустим веб-сервер Apache.

Теперь в адресной строке браузера введем «localhost/doc». Перед нами появилось окно авторизации в 1С.

После введения логина с паролем и аутентификации, перед нами откроется привычная нам 1С.

1. Скачать веб-сервер APACHE

там выбрать Binaries – папка Win32 - файл httpd-2.2.25-win32-x86-no_ssl.msi – если установка происходит по Windows) и установить.

Настраивать и переписывать файлы APACHE не нужно (везде нажимать "Далее"). После установки он сам появится и запустится в системных значках. В следующем окне вверху можно вписать любую информацию, на работоспособность это не влияет.

2. После установки проверить работоспособность web-сервера. При переходе в браузере по адресу http: //localhost должно отображаться следующее окно:

3. Если при установке платформы 1С не были установлены компоненты работы с веб-сервером, их надо установить (через установку платформы):

4. Далее зайти в "Конфигуратор"-"Администрирование"-"Публикация на веб-сервере...". Необходимо английскими буквами указать имя базы в поле "Имя". Выбрать пустой каталог (путь к нему не должен содержать русских символов, см. пример ниже).

Установить флаг "Публиковать Web-сервисы", в списке веб-сервисов установить флажок у нужного сервиса.

После выполнения этих действий проверить доступность веб-сервиса 1С можно, введя в браузере:

ip-компьютера/ИмяБазы/ws/Алиас указанный при публикации.1cws?wsdl. При этом должно открыться XML описание свойств и методов веб-сервиса(а не страница ошибки)

В соответствии с картинкой адрес будет выглядеть следующим образом:

Пошаговая инструкция настройки web-сервисов для 1Сv8 и IIS

1. Установка IIS выполняется стандартными средствами. Необходимо установить следующие компоненты:

Web Management Tools:

IIS 6 Scripting Tools

IIS 6 WMI Compatibility

IIS Metabase and IIS configuration compatibility

IIS Management Console

IIS Management Scripts and Tools

World Wide Web Services:

ISAPI Extensions

Default Document

Directory Browsing

Static Content Compression

Request Filtering

Набор достаточных компонент приведен на скриншоте ниже.


2. Если при установке платформы 1С не были установлены компоненты работы с веб-сервером, их надо установить (через установку платформы):

Далее зайти в "Конфигуратор"-"Администрирование"-"Публикация на веб-сервере...". Необходимо английскими буквами указать имя базы в поле "Имя". Выбрать пустой каталог (путь к нему не должен содержать русских символов, см. пример ниже). Установить галку "Публиковать Web-сервисы", в списке веб-сервисов установить флажок у сервиса "rg1CTCService". Нажать "Опубликовать".

В диалоге о перезапуске веб-сервера нажать "да".

Для корректной установки у пользователя должны быть права администратора на компьютере, с которого производится установка.

3. Указать права для обработчика web-сервисов 1С. Права на запуск (Execute) модулей добавляются для группы IIS_IUSRS на папку...1cv81\BIN\

4. Если база файловая, нужно добавить права на изменение (Modify) на папку и подпапки базы для той же группы.

5. В консоли IIS. Кликаем правой кнопкой мыши на строку с созданной нами папкой. Преобразовываем её в приложение.


6. Добавить настройки для обработки файлов 1С. На вкладке Handler Mappings добавить скрипты (не скрипты со звездочкой) для расширения -"*.1cws".

Имя любое.

Request Restrictions -> Access -> Script или Execute.

7. Для обработчиков нужно указать дополнительные параметры (Edit Feature Permission). Установить флаги запуска скриптов и приложений.

8. Проверить наличие обработчика web-сервисов 1С на вкладке ISAPI and CGI Restrictions для сервера.

Если установка идет в 64 разрядном окружении, то для обработчика нужно включить режим Alpplication Pool -> DefaultAppPool -> Enable 32-bit Application -> True.

9.. Для проверки правильности выполнения обратиться по адресу IP-компьютера/ИмяБазы/ws/Алиас_указанный_при_публикации.1cws?wsdl.

При этом должно открыться XML описание свойств и методов веб-сервиса(а не страница ошибки)

В соответствии со скриншотом пункта 2 адрес будет выглядеть следующим образом: http: //ip/IB/ws/WSName.1cws?wsdl

Недавно я настраивал веб-сервер Apache в связке с 1С. Причём веб-сервер находился на отдельном Linux хосте внутри Docker контейнера. Поделюсь своим опытом и дам пошаговую инструкцию.

Эта статья написана в апреле 2018 года и проверена на версии платформы 1С 8.3.11.3034. Далее рассматриваю подключение к информационной базе 1С в серверном варианте, не в файловом.

Почему именно Apache, именно под Linux и именно в Docker? Оставлю этот вопрос за рамками данной статьи.

Про Apache и про Linux слышали, наверное, все. А вот про Docker, который сильно набирает популярность последнее время, поделюсь кратким руководством на русском для общего понимания: http://guides.hexlet.io/docker/

Взаимодействие Apache и сервера 1С

В двух словах напомню схему взаимодействия веб-сервера Apache и сервера 1С, которая отлично описана в документации к 1С и миллионе статей, аналогичных этой.

Мы устанавливаем веб-сервер Apache и добавляем в его настройки (в файл httpd.conf ) специальный модуль wsap24.so . Этот модуль разработан компанией 1С и он доступен в дистрибутиве сервера 1С под Linux.

Далее всё в том же httpd.conf мы даём указания веб-серверу, что все запросы начинающиеся с определённого пути (например /BuhBase) нужно обрабатывать с помощью специального обработчика 1c-application , реализованного в модуле wsap24.so.

Соответственно, когда на веб-сервер Apache приходит входящий HTTP запрос удовлетворяющий заданному пути, например, http:///BuhBase/, в дело вступает обработчик 1c-application . Оно в свою очередь заглядывает в некий файл.vrd, внутри должны быть настройки подключения к 1С.

Обычно vrd файл генерируется в процессе выполнения процедуры «публикации на веб сервере» из конфигуратора или с помощью консольной утилиты webinst . В данном случае конфигуратор нам не поможет, ведь мы планируем запускать веб-сервер Apache совсем на другом хосте, нежели сервер 1С, да ещё и внутри Docker контейнера. Консольную утилиту webinst тоже трогать не будем, опишем файл default.vrd вручную, благо там нужно всего несколько строк в минимальном варианте, нет смысла заморачиваться с запуском чего-бы то ни было дополнительного.

Итак, если default.vrd файл есть и в нём присутствуют верные настройки подключения к серверу 1С, то модуль запущенный внутри Apache подключается по TCP к серверу 1С.

При этом сам сервер 1С может находиться совсем на другой машине и на другой операционной системе. Это не важно, главное чтобы Apache смог достучаться до сервера 1С по TCP.

Соберём всю конфигурацию по шагам

Шаг 1.

Устанавливаем Docker на локальную машину разработчика (для удобства проверки и отладки) и на целевую Linux машину, где мы собственно и хотим запустить веб-сервер.

Docker работает и на Linux, и на macOS и на Windows. Скорее всего, на машине разработчика (на вашей машине) стоит Windows. Я лично не проверял описанные ниже шаги под Windows, теоретически всё должно сработать, но что-то пойдёт не так, можно не тратить силы и нервы и сделать всё непосредственно на Linux сервере или в локальной виртуальной машине (например, с помощью VirtualBox).

При установке на Linux не забудем про этот важный шаг, который описан на отдельной странице в документации: https://docs.docker.com/install/linux/linux-postinstall/

Шаг 2.

Создадим директорию для нашего проекта и скачаем в неё дистрибутив 1С Сервер для Linux: https://releases.1c.ru -> Технологическая платформа 8.3 -> Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем

Получим файл deb64.tar.gz , оставляем его пока как есть.

Шаг 3.

Создадим файл с настройками подключения к 1С: default.vrd

Я привожу пример минимального vrd файла в котором по умолчанию опубликованы все веб-сервисы, все http сервисы и стандартный REST интерфейс (OData).

Обратите внимание на строку подключения, замените имя сервера 1С (Serv1C) и имя информационной базы (BuhBase) на свои.

Если вы ранее уже публиковали свою базу на веб-сервере (не важно на каком: IIS или Apache, Windows или Linux, с помощью конфигуратор или с помощью webinst), у вас точно должен быть.vrd файл, поищите в публичных директориях веб-сервера и используйте его.

Шаг 4.

Возьмём стандартный конфиг от Apache (httpd.conf) и добавим к нему несколько строк в конец (полный пример: https://github.com/pqr/docker-apache-1c-example/blob/master/httpd.conf)

LoadModule _1cws_module /opt/1C/v8.3/x86_64/wsap24.so # 1c publication Alias "/BuhBase" "/usr/local/apache2/htdocs/BuhBase/" AllowOverride All Options None Require all granted SetHandler 1c-application ManagedApplicationDescriptor "/usr/local/apache2/htdocs/BuhBase/default.vrd"

Таким образом мы указываем веб-северу, что запросы по пути /BuhBase нужно обслуживать с помощью обработчика (SetHandler) 1c-application .

Тут же указывается и путь к default.vrd . На данном этапе всех этих путей пока нет (и не будет, они будут внутри Docker контейнера).

Шаг 4.

Создадим файл с именем Dockerfile (без расширения) со следующим содержанием:

FROM httpd:2.4 # Данный образ базируется на стандартном образе Debian+Apache 2.4: https://store.docker.com/images/httpd # Копируем дистрибутив в директорию dist COPY deb64.tar.gz /dist/deb64.tar.gz # Разархивируем дистрибутив RUN tar -xzf /dist/deb64.tar.gz -C /dist \ # и устанавливаем пакеты 1С в систему внутри контейнера && dpkg -i /dist/*.deb \ # и тут же удаляем исходные deb файлы дистрибутива, которые нам уже не нужны && rm /dist/*.deb # Копируем внутрь контейнера заранее подготовленный конфиг от Apache COPY httpd.conf /usr/local/apache2/conf/httpd.conf # Копируем внутрь контейнера заранее подготовленный конфиг с настройками подключения к серверу 1С COPY default.vrd /usr/local/apache2/htdocs/BuhBase/default.vrd

Шаг 5.

Собираем образ командой:

Docker build -t my-apache-1c .

Опция -t my-apache-1c присваивает собранному образу имя, чтобы в дальнейшем его было удобнее запуcкать. Если не указать -t , то запускать придётся по сгенерированному уникальному ID образа, что не очень удобно.

Шаг 6.

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

Docker run --add-host Serv1C:192.168.1.15 --publish 80:80 my-apache-1c

Разберём эту строку по частям:

--add-host Serv1C:192.168.1.15 - здесь мы явно указали докеру, что за именем сервера Serv1C скрывается IP адрес 192.168.1.15 (подставьте свои значения). Имя сервера Serv1C мы использовали выше в default.vrd. Этот эквивалентно тому, как если бы мы прописали эту связь в знаменитый hosts файл. Но внутри контейнера нельзя поправить hosts файл, нужно действовать через параметр командной строки --add-host.

А почему бы сразу не указать IP адрес в default.vrd? Я пробовал, но при проверке в браузере платформа 1С выдавала ошибку и, честно говоря, я не разобрался в проблеме. При подключении по имени хоста (Serv1C) проблем не было.

--publish 80:80 - сообщаем докеру, запросы к хост-машине на порт 80 нужно перенаправлять в контейнер на порт 80 (внутри контейнера слушает Apache). Иногда на хост-машине порт 80 может быть уже занят, например, на этом же Linux сервере запущен какой-то сайт или на машине разработчика стоит локальный веб-сервер, тогда делаем так: --publish <любой свободный порт на хост-машине>:80 ,например: --publish 8000:80

Последним параметром идёт имя образа (my-apache-1c) на основе которого запускать контейнер. Образ с таким именем мы уже создали на предыдущем шаге.

После запуска этой команды в окне терминала появятся логи процесса Apache. Терминал не закрываем. Если закрыть, контейнер будет остановлен.

Шаг 7.

Проверяем.

Сначала проверяем Apache в целом: http://localhost - должны увидеть сообщение «It Works!»

Почему localhost? Мы сейчас находимся на своей собственной машине (на компьютере разработчика) где запустили Docker контейнер, соответственно для нас он запущен локально.

Если все эксперименты проводятся сразу на Linux сервере, то пробовать нужно, соответственно, по адресу Linux сервера, например, http://192.168.1.10 или http://linux-host

Если при запуске контейнера был указан какой-то особый порт для хост-машины, то проверять нужно на нём, например, http://localhost:8000

Проверим стандартный REST интерфейс (OData): http://localhost/BuhBase/odata/standard.odata/

Попробуем какой-нибудь веб-сервис (если в конфигурации такие есть): http://localhost/BuhBase/ws/MyWebService?wsdl

Всё должно отработать!

Теперь можно останавливать контейнер: Ctrl+C

Шаг 8.

Мы только что развернули Apache с модулем 1С в Docker контейнере на локальной машине (на машине разработчика). На деле это всё должно крутиться где-то на специально отведённом Linux сервере в виде демона.

Удобнее всего запускать контейнер на сервере с помощью утилиты docker-compose . Но для начала протестируем этот docker-compose опять же на локальной машине.

Всё в той же директории проекта (где у нас уже есть Dockerfile, httpd.conf, и др.) создаём файл docker-compose.yml :

Version: "3.4" services: apache-1c: build: . restart: always ports: - 80:80 extra_hosts: - "Serv1C:192.168.1.15"

По сути здесь всё те же параметры, которые мы передавали в команду docker run.

Отличий три:

  1. Мы больше не придумываем и не указываем имя для нашего образа типа (my-apache-1c), вместо этого используем параметр build: . , т.е. docker-compose будет собирать образ на основе текущей директории (помните про контекст?) и тут же запускать контейнер на основе собранного образа
  2. restart: always - если по каким-то причинам Apache упадёт или весь сервер перезагрузится, то Docker автоматически перезапустит контейнер
  3. extra_hosts - это тоже самое, что и --add-host в параметрах команды docker run. Да, есть некая неконсистентность.

И запускаем контейнер с помощью новой для нас команды:

Docker-compose up -d

Контейнер должен запуститься и уйти в фоновый режим (флаг -d ). Проверяем все адреса в браузере как на предыдущем шаге.

Останавливаем контейнер (эту команду нужно выполнять в терминале, находясь в директории проекта):

Docker-compose down

Шаг 9.

docker system prune

Шаг 10.

Важная часть любого проекта - это документация! Обязательно напишем README.md , например, такой: https://github.com/pqr/docker-apache-1c-example/blob/master/README.md

Поместим все файлы, кроме deb64.tar.gz, под систему контроля версий git , отправим в корпоративный репозиторий, чтобы не потерялось.

Шаг 11.

Копируем получившуюся директорию проекта на Linux сервер, заходим туда по ssh и, находясь в целевой директории, выполняем команду docker-compose up -d , проверяем в браузере.

Всё готово и работает на Linux сервере!

Что с обновлениями платформы 1С?

Качаем новый дистрибутив deb64.tar.gz в директорию проекта.

Если был переход с версии 8.3 на версию 8.4, то внутри httpd.conf нужно поправить путь к wsap24.so.

А если несколько информационных баз?

Вариант А.

Значит нам понадобится подготовить несколько.vrd файлов, добавить инструкции по их копированию в Dockerfile и описать пути для веб-сервера в httpd.conf: на каждую базу свой путь, своя директория, свой.vrd файл.

Закидываем изменённый Dockerfile, httpd.conf и новые vrd файлы на сервер, останавливаем контейнер и запускаем заново с флагом --build:

Docker-compose down && docker-compose up -d --build

Вариант Б.

На каждую информационную базу можно поднять свой отдельный контейнер. Это значит что директорию проекта нужно будет размножить по числу баз, внутри каждой сделать свои настройки в.vrd файле. Но при таком подходе не получится все контейнеры запустить одновременно на одному порту, придётся в каждом docker-compose.yml прописать свои порты, например, 8001:80 для первой базы, 8002:80 для второй базы и т.д.

У этого подхода, кстати, есть другое полезное свойство - внутри этих контейнеров могут быть различные версии модуля 1С (это нужно если у вас и серверов 1С несколько с разными версиями платформы).

Нужно поменять настройки подключения к 1С серверу в default.vrd?

Меняем.vrd, и перезапускаем Docker контейнер с пересборкой образа: docker-compose down && docker-compose up -d --build

Что осталось за кадром?

  • В этой статье не описано как быть с файловыми базами. Черновой пример настроек привёл в комментариях под статьёй, но на деле его не проверял.
  • После переноса файлов проекта с локальной машины на сервер всё может не заработать. Например, на сервере может быть закрыт порт 80 - надо проверять правила firewall, iptables и т.п. Могут быть и другие причины - как это всё отлаживать и куда смотреть (где логи?) остаётся за рамками статьи
  • Если этот веб-сервер должен смотреть в интернет то нам обязательно нужен SSL сертификат для https соединения. Про то как настраивать https в Apache написано много статей. При использовании Apache внутри Docker по большому счёту всё настраивается точно также. Либо можно поставить reverse proxy с терминацией SSL, например, Træfik или Nginx. Вот этот Docker образ ещё и сертификаты от Let"s Encrypt автоматически установит: https://hub.docker.com/r/umputun/nginx-le/
  • В качестве базового образа мы использовали официальный httpd на базе Debian. Можно попробовать поиграться с более лёгким образом на базе Alpine.

Исходный код

Все файлы конфигурации описанные в этой статье можно найти в git репозитории: https://github.com/pqr/docker-apache-1c-example/ - принимаются Pull Requests.

Есть вопросы? Напишите мне, с удовольствием дополню статью, если что-то не понятно, есть пробелы в рассуждениях или какие-то шаги в вашем случае не сработали - попробуем разобраться вместе и дополним материал.

Андроид