Алексей алексеев добро пожаловать в мой уютненький бложек. Выполнение публикации Apache и IIS Apache 2.4 1с предприятие 8.3

Хоть 1С и не рекомендует использовать веб сервер в файловом режиме (а только в серверном) - тем не меннее для маленьких предприятий с 2-3 бухгалтерами использование веб сервера на новых конфигурациях с "управляемыми формами" (Бухгалтерия 3.0, Зарплата 3.0 и прочее) - позволяет организовать довольно быстрый доступ к базе сетевых компьютеров, даже если они компьютеры эти по сути уже старый хлам. Важно лишь, что бы основной компьютер с базами и веб сервером был приличный (например Core I3, 8 Гбайт оперативки и SSD диск).

Пошаговое руководство по настройке вебсервера 1С на Apache (включая файловый вариант баз данных)

1. Скачиваем установщик Apache

По каким-то причинам все новые версии (например 2.4.25) Apache перестал выкладывать в виде самораспаковывающегося дистрибутива. Для нас вполне приемлемо использовать не самый последний дистрибутив 2.2.25 - позволяющий получить удобный установщик и избежать дополнительных манипуляций.

Обращаю внимание - нам удобно использовать именно *.msi установщик

По рекомендации пользователя (спасибо, Владимир) выкладываю ссылку на Apache версии 2.4 (www.apachelounge.com) . Также с его слов - если качаете х64, то будьте готовы поставить аналогичную х64 1с платформу и в httpd.conf отредактировать строку LoadModule _1cws_module "C:/Program Files/1cv8/8.3.9.2016/bin/wsap24.dll.
Но сам не рекомендую использовать 64-битную 1С, потому как, с высокой степенью вероятности, возникнут гигантские сложности при подключении торгового оборудования, или каких-то других сторонних библиотек.

Выбираем “no ssl” дистрибутив, если базы будут открыты только внутри нашей локальной сети или “ssl” дистрибутив, если база будет открываться в интернете. Дополнительно про настройку ssl можно почитать в статье инфостарт

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

2. Запускаем скачанный установщик

Заполняем Network Domain: Localhost, Server name: Localhost

Нажимает NEXT, Setup type: Typical NEXT, NEXT, INSTALL

3. Проверяем запустился ли веб сервер

Для этого открываем любой броузер и указываем адрес страницы http://localhost

Мы должны увидеть страничку с надписью It Works !

Выясним IP адрес нашего компьютера в локальной сети. Для этого в нижнем правом углу (рядом с часами) находим иконку локальной сети, кликаем на ней правой кнопкой и открываем "Центр управления сетями и общим доступом"

Выбираем нашу сеть

И нажимаем кнопку "Сведения"

В моем случае адрес компьютера в локальной сети 192.168.0.189

Теперь возвращаемся в броузер и проверяем доступность страницы It Works по IP адресу http://192.168.0.189 (в вашем случае цифры будут отличаться)

Если снова увидели знакомую страницу It Works - все хорошо,

4. Проверяем доступность страницы с других компьютеров и настраиваем брандмауэр

Снова пробуем открыть знакомую нам страницу http://192.168.0.189 (у вас цифры другие) но уже с любого другого компьютера в локальной сети.

Если вместо знакомой страницы вы увидели "Не удается получить доступ к сайту" или аналогичное сообщение - выполним настроку брандмауэра. Для этого возвращаемся на тот компьютер, где установлен Apache, заходим в "Панель управления" - "Система и безопасность" - "Брандмауэр Windows" и в левой части экрана щелкаем на "Дополнительные параметры

Кликаем на раздел "Правила для входящих подключений", затем в правой части окна "Создать правило"

Ставим все три галочки

Указываем произвольное имя, например "Веб сервер 80 порт для 1С". Готово .

Снова идем на другие компьютеры и убеждаемся, что теперь по IP адресу http://192.168.0.189 броузер показывает знакомую нам страницу It Works

5. Публикуем нашу базу на веб сервере.

Открываем конфигуратор нашей базы (Запуск 1С обязательно от имени администратора)

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

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

С выходом платформы 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 адрес и корректная настройка портов. В этом случае, большое внимание следует уделить безопасности базы, поэтому лучше доверить эту работу нам. Выполним любые настройки по

Имеется windows-сервер c 1С 8.3 (БД - MSSQL).
Задача - настроить публикацию базы на линуксовом web-сервере.
Тонкости - модуль 1С для апача работает только с 2.0 и 2.2, а текущая версия в большинстве дистрибутивов - 2.4+
Пишется больше для себя, чтобы не забыть. Ну и мало ли, вдруг пригодится еще кому - не придется бегать по форумам в поисках нужных команд.

Железо - дал гигабайт оперативки, одно ядро и 20 гигабайт диска. Увеличить никогда не поздно.
ОС: Debian Stable, привык я к нему.

Ставлю минимум, включая ssh-сервер, но не включая web. К этому еще вернемся.

После установки базовая настройка по вкусу, я обычно ставлю локаль utf8, ставлю sudo, mc и vim, остальное по потребностям.
Дальше надо поставить apache 2.2. Причем сделать это правильным способом, а не просто скачав deb-пакет. :)

Сперва добавляем в /etc/apt/sources.list строчки со ссылкой на предыдущую версию дистрибутива.
deb http://mirror.yandex.ru/debian/ wheezy main deb-src http://mirror.yandex.ru/debian/ wheezy main
Можно, конечно, написать oldstable - в настоящий момент тоже будет правильно. Но только в настоящий, потому рано или поздно выйдет новая стабильная версия и в oldstable и тогда вместо apache 2.2 там будет 2.4. Хотя, надеюсь, к тому времени 1С обновится и заработает с более новыми версиями апача. Но кто их знает? :)
Где mirror.yandex.ru - там пишется имя вашего любимого сервера с репозиторием.

Потом обновляем индексы - apt-get update - и смотрим, что у нас тут есть по apache командой apt-cache showpkg apache2
Там много всего выводится, но нас интересует только начало вывода:
Package: apache2 Versions: 2.4.10-10+deb8u3 (/var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_binary-i386_Packages) Description Language: File: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_binary-i386_Packages MD5: Description Language: en File: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_i18n_Translation-en MD5: Description Language: ru File: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_i18n_Translation-ru MD5: 2.4.10-10+deb8u1 (/var/lib/apt/lists/security.debian.org_dists_stable_updates_main_binary-i386_Packages) Description Language: File: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_binary-i386_Packages MD5: Description Language: en File: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_i18n_Translation-en MD5: Description Language: ru File: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_stable_main_i18n_Translation-ru MD5: 2.2.22-13+deb7u6 (/var/lib/apt/lists/mirror.yandex.ru_debian_dists_wheezy_main_binary-i386_Packages) Description Language: File: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_wheezy_main_binary-i386_Packages MD5: Description Language: en File: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_wheezy_main_i18n_Translation-en MD5: Description Language: ru File: /var/lib/apt/lists/mirror.yandex.ru_debian_dists_wheezy_main_i18n_Translation-ru MD5:

Видим, что кроме 2.4.10 имеется версия 2.2.22-13+deb7u6 - то, что нужно.
Ставим: apt-get install apache2=2.2.22-13+deb7u6
Или, точнее: apt-get install apache2=2.2.22-13+deb7u6 apache2-mpm-worker=2.2.22-13+deb7u6 apache2.2-common=2.2.22-13+deb7u6 apache2.2-bin=2.2.22-13+deb7u6 , а остальные зависимости уже подтянутся автоматом.

После этого ставим апачей на холд, чтобы не обновить случайно.

Apt-mark hold apache2 apache2-mpm-worker apache2.2-common apache2.2-bin apache2 помечен как зафиксированный. apache2-mpm-worker помечен как зафиксированный. apache2.2-common помечен как зафиксированный. apache2.2-bin помечен как зафиксированный.
Можно запустить service apache2 start и стукнуть телнетом на 80 порт для проверки, если лень браузер запускать.

telnet localhost 80
Trying::1... Connected to localhost. Escape character is "^]". 1 501 Method Not Implemented

Method Not Implemented

1 to /index.html not supported.


Apache/2.2.22 (Debian) Server at 1cweb Port 80
Connection closed by foreign host.

Ругается - значит работает.

Теперь ставим 1С.
Нужны только веб-сервисы 1С (пакет 1c-enterprise83-ws ). И 1c-enterprise83-common , который в зависимостях прописан. И 1c-enterprise83-server , который в зависимостях не прописан, но без него утилита публикации пишет «Ошибка сегментирования».
В принципе, необходим только модуль для апача wsap22.so из пакета 1c-enterprise83-ws , а всё остальное можно через текстовый редактор сделать. Но я человек ленивый и лучше потрачу несколько мегабайт на 1С, чем буду руками вбивать строчки в конфиги. :)

Дальше надо создать папку для хранения настроек опубликованных БД 1С. Можно в дереве вебсервера, но я лучше отдельно сделаю, прямо в корне, /1с.
После этого из папки с установленными файлами 1С (/opt/1C/v8.3/i386 ) запускаем утилиту публикации webinst со следующими параметрами (публикую нашу тестовую базу):
./webinst -apache22 -wsdir testlitupp -dir /1c/testlitupp -connstr "Srvr=10.0.0.4;Ref=testlitupp;" -confPath /etc/apache2/apache2.conf Публикация выполнена

Apache22 - наша версия вебсервера
-wsdir testlitupp - папка на вебсервере, в которой будет доступна опубликованная база (http://вашсервер/testlitupp)
-dir /1c/testlitupp - папка, в которой будет храниться файл default.vrd с настройками публикации
-connstr «Srvr=10.0.0.4;Ref=testlitupp;» - ip сервера 1С и имя публикуемой базы данных
-confPath /etc/apache2/apache2.conf - путь к конфигу apache

Если было написано «Публикация выполнена», значит всё прошло удачно. Если пишет «Ошибка сегментирования», то вы, скорее всего, забыли поставить 1c-enterprise83-server .
По результатам имеем файл default.vrd

И несколько новых строк в файле конфигурации веб-сервера:

LoadModule _1cws_module "/opt/1C/v8.3/i386/wsap22.so" # 1c publication Alias "/testlitupp" "/1c/testlitupp/" AllowOverride All Options None Order allow,deny Allow from all SetHandler 1c-application ManagedApplicationDescriptor "/1c/testlitupp/default.vrd"
Перезапускаем апач (service apache2 restart) и идём смотреть, что там опубликовалось.
Опубликовалось, просит пароль.

И впускает в базу.

Работает. Дополнительные настройки публикации делаются через редактирование vrd-файлов (к примеру, включение отладки), а допиливанием интерфейса веб-клиента должны заниматься ваши программисты 1С.
Если будете дописывать опции, к примеру, с подключением сервисов руками, то не забудьте удалить в файле default.vrd последний слэш в строчке «base="/testlitupp" ib="Srvr=10.0.0.4;Ref=testlitupp;"/ >», я с этим долго возился. Если не удалить и что-то дописать после, то вылетает «ошибка 500» без дополнительной информации.
Какая будет нагрузка на вебсервер - я ещё не знаю, у нас это пока в тестовом режиме работает и хватает выделенных ресурсов. Но добавить памяти или ядер по мере увеличения потребностей проблем не составит.

В целом, в других дистрибутивах linux всё делается аналогично, различия только в способах установки старой версии apache.

В этой статье будет рассказано, как быстро и просто установить 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. Вся процедура в результате занимает не дольше получаса.