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

Отправить эту статью на мою почту

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

Выполним несколько простых шагов:

1. Скачаем и установить сервер Apache. Сервер Apache стабильной версии 2.2, которая без проблем работает с 1С, можно скачать .

2. Замените файл конфигурации сервера Apache "httpd.conf" , обычно конфигурационный файл находится по этому пути - "C:\Apache24\conf", если вы устанавливали Apache в корень диска "С". Только после замены проверьте каждую строку в файле, чтобы все пути совпадали с реальными.

3. В итоге ваш веб-сервер Apache должен заработать примерно так:

4. Открываем конфигуратор нужной базы 1С (обязательно от имени администратора ), которую планируем опубликовать на веб-сервере Apache, например, я для теста опубликую демо-версию типовой конфигурации 1с торговля 8 ред. 11.1:

5. В конфигураторе 1С кликаем по главному меню Администрирование - Публикация на веб-сервере:

Здесь выбираете веб-сервер Apache 2.2, задаете имя базы (любое, например DemoTrd), в поле "Каталог" указываете путь к Вашему серверу Apache, где хранятся веб-документы, если сервер устанавливали в корень диска "С", то путь будет такой - "C:\Apache24\htdocs\". Нажимает кнопку Опубликовать. Дополнительно, 1С Вас попросит перезапустить службу сервера Apacge, согласитесь. В итоге публикация будет успешно выполнена:

Если вы 1с специалист, и вам необходимо отлаживать конфигурацию открытую через веб-интерфес или через веб-сервис, то дополнительно в конфигураторе в главном меню перейдите по кнопке Отладка - Подключение... и по кнопке "Автоматическое подключение..." установите флаги, как показано на рисунке ниже:

Также перейдите в главном меню в "Сервис" - "Параметры", и установите там флаги "Устанавливать режим разрешения отладки" и "Начинать отладку при запуске":

Также обязательно включите в файл настройки публикации 1С (C:\Apache24\htdocs\default.vrd) специальную строку - "", в моем случае файл "default.vrd" будет

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

Основные требования

Минимальные системные требования к серверной части архитектуры могут значительно различаться и сильно зависят от:

  1. Задач, решаемых программой;
  2. Интенсивности документооборота;
  3. Количества единовременно подключенных пользователей;
  4. Размера и количества опубликованных и прописанных баз данных.

Однако без двух вещей при публикации 1С на веб-сервере обойтись просто невозможно:

  • Развернутого в системе веб-сервера;
  • Установленного и запущенного модуля расширения, поставляемого фирмой 1С.

Веб-сервер

В качестве этого элемента нашей структуры может выступать как Internet Information Server (IIS), поставляемый в составе операционных систем от фирмы Microsoft, так и Apache сервер. Конечно, есть и платные аналоги этих решений, но про них мы разговор вести не будем.

Дополнительным плюсом продуктов Apache является возможность их запуска из Linux подобных операционных систем.

Мы рассмотрим вариант с IIS, т.к. он не требует поисков и установки продуктов сторонних производителей.

Модули расширения веб-сервера

Инсталляцию этих модулей можно осуществить, запустив файл поставки платформы. Дойдя до окна, внешний вид которого показан на Рис.1, необходимо активировать установку соответствующего компонента.

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

Определившись с инструментарием, перейдем к настройке.

Установка и запуск Web-сервера

Для того, чтобы запустить IIS на компьютере с установленной Windows, необходимо произвести следующую последовательность действий (на примере Windows 7):


Рис.3

Удостовериться в том, что веб-сервер заработал, можно забив в адресной строке любого браузера строку вида «http://localhost» и получив картинку, как на Рис.4.

Рис.4


Рис.6.

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

Выбрав конкретную, только что опубликованную базу в списке, необходимо активировать утилиту «Сопоставление обработчиков» (Рис.7).
Рис.7

В нашем случае нам понадобится установить соответствие между ISAPI-dll и исполняемым файлом wsisapi.dll, находящимся в папке BIN, установленной версии платформы.

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

Публикация базы на сервер

Настройка прав пользователей

Получив вышеуказанное окно, мы переходим к настройке правил доступа для пользователей.

Нам необходимо разрешить полный доступ пользователю IIS_USERS:

  • К папке «C:\inetpub\wwwroot\Имя публикации», где хранится ресурс;
  • К папке с используемой версией программы, где хранится библиотека wsisapi.dll;
  • К месту, где хранится база.

Выполнив вышеперечисленные действия, мы можем проверить работоспособность нашей публикации, забив в окне браузера строку вида «localhoct/Имя публикации» и обнаружив там форму идентификации пользователя.

С выходом платформы 1С 8.2 появилась возможность использовать в работе с 1С веб-сервер для взаимодействия вашей базы со всемирной сетью. В дальнейшем, по мере выхода 8.3 и ее новых релизов, возможности интеграции все более расширялись. Уже сейчас для связи с интернет, другими информационными системами и предоставления доступа в базу через браузер, можно использовать веб-клиент, интерфейс ODATA, разрабатывать web-сервисы, http-сервисы.

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

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

Для чего рядовому пользователю публикация 1С на веб-сервере

В рамках данного материала не будем рассматривать все плюсы и удобства публикации базы на веб-сервере. Остановимся на том, что очень часто просят сделать у нас клиенты - доступ в 1С через браузер . Вы сможете работать с 1С из любой точки мира без установки платформы. Также преимуществом работы в браузере является то, что вы можете зайти в вашу программу через мобильное устройство: планшет, смартфон, под управлением любой операционной системой: iOS, android и т.д. Достаточно настроить такой вариант удаленного доступа, открыть браузер и указать стоку подключения. Самое главное, если вы публикуете базу 1С на сервере для удаленного доступа - подумайте о безопасности! Помимо установки пароля и прочих мер безопасности, рекомендуется использовать VPN для доступа к сети, в которой расположена база. Но это тема отдельной статьи и не очень опытному специалисту лучше обратиться к .

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

Как это работает

Для организации доступа в 1С через браузер необходимо:

  • Любая конфигурация, разработанная на управляемых формах
  • Установить и настроить веб-сервер
  • Опубликовать БД на веб-сервере

1С поддерживает два веб-сервера:

  • Apache

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

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

Короткая инструкция для знакомых с внешними обработками:

  1. Делаем копию (backup) ИБ. Обработка абсолютна безопасна. Но это никогда не повредит. Читаем как это сделать .
  2. Скачиваете обработку - файл
  3. под администратором (администратор компьютера) . Не путаем с запуском конфигурации 1С под пользователем, обладающим полными (административными) правами
  4. В командном меню Файл - Открыть. Выбираем файл УстановкаВебСервера.epf/SetupWebServer.epf (версия может отличаться)
  5. На форме заполняем желаемое имя для публикации на веб-сервере. При старте автоматически заполняется из заголовка системы.
  6. При выходе в интернет через прокси-сервер, указываем параметры прокси
  7. Подтверждаем загрузка веб-сервера apache из интернета
  8. Ждем некоторое непродолжительное время
  9. Веб-север скачен и установлен, база опубликована и настроена - можно открывать по кнопке. Также, можно добавить адрес в избранное в браузере

Если у вас остались вопросы или не все понятно из короткой инструкции читаем подробную с картинками

  • Скачиваете обработку - файл

Скачиваете файл к себе на компьютер, откуда потом его можно открыть из 1С

  • Входите в 1С, выполнив запуск платформы под администратором (администратор компьютера)

Открываем платформу (список ИБ) с правами локального администратора компьютера/сервера. Правой кнопкой мыши на ярлыке запуска, выбираем пункт "запуск от имени администратора". Это необходимо т.к. происходит запуск службы apache.

  • В командном меню Файл - Открыть. Выбираем УстановкаВебСервера.epf (версия может отличаться)

В любой конфигурации на управляемых формах открываем обработку, нажав в верхнем левом углу "Файл-Открыть". Выбираем наш файл, скаченный на 1 шаге.

  • На форме заполняем желаемое имя базы для публикации. При старте, автоматически заполняется из заголовка системы.

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

Если в процессе выполнения появляется сообщение о том, что не установлены модули расширения, читайте как это установить .

  • При выходе в интернет через прокси-сервер указываем параметры прокси

  • Нажимаем на кнопку "Выполнить"

После нажатия на кнопку появляется вот окно, как на изображении ниже. Нажимаем "Согласен".

  • База опубликована на веб-сервере и настроена - можно открывать по кнопке. Добавить адрес в избранное в браузере

  • Работать с 1С в браузере удобно и не требуется установка платформы

После выполнения обработки у вас будет запущен веб-сервер Apache. Увидеть, что он запущен, остановить и перезапустить можно в системном трее (правый нижний угол).

Кликнув правой кнопкой мыши по значку вы сможете запустить монитор веб-сервера (apache service monitor).

Проверить, что веб-сервер работает нормально можно вписав строку localhost в любой браузер на компьютере, на котором установлен apache. Если все в порядке вы должны увидеть надпись - It works!

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

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

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

Если вы хотите, чтобы 1С была всегда под рукой, без лишних манипуляций используйте аренду 1С .

Если вашей целью является доступ в 1С из другой сети, из дома, командировки, даже с курорта, то помимо установки веб-сервера вам необходим внешний ("белый"/выделенный) IP адрес и корректная настройка портов. В этом случае, большое внимание следует уделить безопасности базы, поэтому лучше доверить эту работу нам. Выполним любые настройки по

Для начала скажу, что я не гуру ни в Apache, ни в 1С, ни в IIS. Тем не менее, окунуться пришлось, так как передо мной встала простая задача — локальная сеть плюс несколько баз 1С:8.3 плюс несколько пользователей. И, естественно, защита от возможных сбоев …и минимальный бюджет.

Не буду писать про попытку, в общем удачную, использования 1С совместно с sql-сервером postgres. Снимаю шляпу перед этой СУБД, но я от этого пути отказался.

Выбор пал на использование файловых версий баз и публикацию их на веб-сервере. 1С работает с Apache и IIS. Про достоинства Apachе можно не рассказывать — у всех на слуху. В отношении 1С можно добавить лишь то, что публикация баз происходит на Apache без дополнительных настроек. Повозиться пришлось лишь с дистрибутивом этого популярного веб-сервера, который грамотно пропишется в установленных программах ОС Windows. Да, забыл упомянуть, что всё разворачивается на этих ОС. Проблема состоит в том, что 1С не видит Apache, если сервер установлен простым копированием. Баловался созданием кустарных установщиков Apache для того, чтобы версию 2.4 поставить — не помогло. Ну не видит 1С-ка веб-сервер и всё тут. Тем не менее, подходящий дистрибутив версии 2.2 был найден.

Всё пошло как по маслу. До начала реальной работы нескольких пользователей с несколькими базами. Периодически у всех в сети появлялась надпись «Сеанс отсутствует или удалён» с предложением перезагрузить базу, либо выйти. Программа при этом, что логично, прекращала работу у всех пользователей сразу. Работа в таком режиме продолжалась. Потерь данных не было, но терпение моё и сотрудников не было безгранично. Попытки найти решение на просторах интернета не привели ни к чему, кроме усугубления ситуации при изменении параметров работы Apache (ThreadsPerChild; MaxRequestsPerChild; TimeOut).

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

Через непродолжительное время опять произошло падение с той же самой ошибкой.

Тогда я попробовал создать несколько пулов приложений и распределить веб-приложения (базы) между ними. В результате w3wp.exe, рабочий процесс IIS, был запущен столько раз, сколько пулов приложений было задействовано при загрузке баз данных. При этом именем пользователя каждого запущенного процесса стало имя пула приложений IIS. Нагрузка была распределена.

Что могу сказать? Сутки работы проходят без сбоев. Заметно увеличилось потребление оперативной памяти. Но раньше оно, возможно, тоже было бы большим. Просто процессы и httpd сервера Apache, и w3wp сервера IIS вылетали до нужного разрастания. По достижении некоторой критической массы.

Недавно я настраивал веб-сервер 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.

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