Опубликовать базу 1с на веб сервере apache linux

Обновлено: 06.07.2024

Установка Apache и публикация базы 1С на web-сервере под Windows - дело достаточно простое, данным очерком попытаемся упростить подобную процедуру и для linux систем. Опытную установку будем производить на системе CentOS 5.8 в виртуальной машине при помощи VirtualBox (CentOS 5.8 взят только из-за малых потребностей в ресурсах, CentOS 6 также подойдет). База данных 1С@Предприятия будет использоваться на файлах.

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

Установим веб сервер (если он еще не установлен):

зададим автоматический старт сервера Apache при помощи chkonfig:

Заранее подготовим установочные файлы сервера 1С@Предприятия. Взять их можно с дисков ИТС, скачать с официального сайта 1с или других ресурсов. В нашем случае имеется архив сервера 1С предприятия для linux (rpm пакеты).

Установка сервера 1С@Предприятия

Итак, в нашей системе имеется пользователь alexandr, архив с файлами 1С@Предприятия расположен на рабочем столе. Начнем установку.

Распакуем архив и установим пакеты:

Убедимся, что архив распаковался:

При помощи следующей команды установим все эти пакеты:

Отладка и запуск сервера 1С@Предприятия

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

Запустим утилиту отладки и конфигурирования сервера 1С@Предприятия:

Установим необходимые пакеты

подключим дополнительные репозитории (RPMForge и EPEL):

Снова проведем проверку:

Небольшое отступление

В принципе можно считать, что сервер 1С@Предприятие установлен и настроен. Результатом работы скрипта ( /opt/1C/v8.2/i386/utils/config_server) является создание настроечного файла type.xml в директории /opt/1C/v8.2/i386/conf/grcmncfg/. Убедимся так ли это:

А как же неудовлетворенная зависимость libglib?

Здесь все просто. Откроем в текстовом редакторе файл /opt/1C/v8.2/i386/utils/config_server и найдем секцию со злободневным пакетом libglib:

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

Наш пакет glib2-2.12.3-4.el5_3.1 установлен в системе!

Подготовка директории для баз данных

Директория по умолчанию для веб-сервера /var/www/html, создадим в ней папку base:

В директории /var/www/html/base будет располагаться сгенерированный системой файл default.vrd, в котором будет описана строка подключения к директории с базой 1С@Предприятия.

Создание директории для базы данных 1С@Предприятия

Внимание: первоначально данное решение было опробовано для использования в режиме многопользовательского доступа к базе многих внешних пользователей в режиме терминального доступа RX@Etersoft, запуская 1С@Предприятие под Wine@Etersoft.

Access Control Lists, ACL

У каждого объекта: файла или каталога, только один владелец, и это хорошо, пока в системе всего один пользователь (кстати, root мы пользователем не считаем – он обычно не работает с системой, а только администрирует ее). А стоит появиться нескольким пользователям, которым нужно изменять файлы друг друга, все усложняется.

Нужен более тон­кий контроль над тем, кто, что и где может делать. При нескольких условиях такое позволяют списки управления доступом (Access Control Lists, ACL), расширение большинства файловых систем (ФС) Linux. Для начала нужно ядро со встроенной поддерж­кой ACL – в любом ядре из дистрибутива она будет. Далее, ACL надо активиро­вать при монтировании файловой системы. Чтобы ACL активировались при загрузке системы, откройте /etc/fstab и добавьте acl к списку опций монтирования файловой системы:

было

стало

К каталогу /pub у нас будет обращаться веб сервер под пользователем apache и пользователь alexandr (также, на всякий случай, пользователя usr1cv82 добавим тоже), под которым мы положим туда свою базу данных. Назначим каталогу /pub доступ для этих пользователей:

Дополнительно создадим ссылку в домашней папке пользователя alexandr для удобства:

Размещение базы данных

Настала пора поместить в директорию /pub нашу базу данных, которая в файловом варианте представляет собой тоже папку, содержащую бинарный файл 1Cv8.1CD, являющийся базой и несколько директорий со служебными файлами. Например, по мотивам "Видеоурок: Как разработать простое прикладное решение", мной (только приступившего к изучению платформы 1С@Предприятие) было создано прикладное решение "Ремонт насосов". Папка с базой данных имеет название kurs. копируем базу (в папке под названием kurs) в директорию /pub.

image

Сегодня я бы хотел рассказать, как поднять сервер 1с на linux debian 9 с публикацией web-сервисов.

Что такое web-сервисы 1с?

Web-сервисы — это один из механизмов платформы, используемых для интеграции с другими информационными системами. Он является средством поддержки SOA (Service-Oriented Architecture) — сервис-ориентированной архитектуры, которая является современным стандартом интеграции приложений и информационных систем. По сути — это возможность создать html страницу с данными, к которой, потом можно обратиться любым другим приложением и забрать их.

Плюсы — работает быстро (даже при достаточно большом объеме данных), относительно удобно.

Минусы — ваш програмист 1с будет много и долго на вас ворчать, пока будет писать веб-сервис для вашей базы. Штука очень своеобразная в написании.

Я не буду рассказывать как написать веб-сервис… я расскажу как его опубликовать на Linux из консоли сервера, а так же немного про установку 1с сервера на Linux.

И так, у нас есть debian 9 netinst, приступаем:

Устанавливаем PostgresPro (Прошу заметить что он не бесплатный, и распространяется, только в рамках ознакомления с возможностями):


Скажем postgresql слушать все адреса а не только localhost


Раскомментируем и поменяем какие адреса слушать:

Далее разрешим авторизоваться пользователям из нашей сети

host all all 192.168.188.0/24 md5
host all all 127.0.0.1/32 md5

Более подробно о различных установках Postgres для 1с можно почитать тут.

Далее ставим 1с сервер.

Заливаем на сервер архив скачанный с сайта 1с (в моем случае deb64_8_3_15_1534.tar.gz)


еще пара мелочей:


Теперь установим Apache2

Через консоль администрирования или через клиент 1с создаем базу и заливаем нашу конфигурацию…

Теперь публикуем базу:

переходим в папку с 1с.


Лезем в var/www/test/ и смотрим что там появилось.

"
<?xml version=«1.0» encoding=«UTF-8»?>
<point xmlns=«v8.1c.ru/8.2/virtual-resource-system»
xmlns:xs=«www.w3.org/2001/XMLSchema»
xmlns:xsi=«www.w3.org/2001/XMLSchema-instance»
base="/Test"
ib=«Srvr=192.168.188.150;Ref=Test;»>
<standardOdata enable=«false»
reuseSessions=«autouse»
sessionMaxAge=«20»
poolSize=«10»
poolTimeout=«5»/>

А что же на счет веб-сервисов? (в моей тестовой конфигурации их два: WebBuh для обмена данными с бухгалтерией и toplog интеграция с системой wms одноименной компании).

Что ж, добавим пару строк в наш vrd файлик…

Зачем надо было делать это руками?

Публикация баз данных 1С:Предприятие 8.3 на веб-сервере Apache в Debian или Ubuntu

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

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

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

1cv83-web-access-linux-001.jpg

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

1cv83-web-access-linux-002.jpg

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

Настройка сервера

В первую очередь установим веб-сервер Apache, так как 1С:Предприятие, начиная с версии платформы 8.3.8 поддерживает актуальную версию Apache 2.4, то вся установка сводится к единственной команде:

Компания 1С рекомендует использовать модуль мультипроцессной обработки worker, поэтому следует выяснить с каким модулем работает ваш сервер, для этого выполним:

Если это prefork или event, то их следует отключить:

После чего включим worker и перезапустим веб-сервер:

Затем установим модуль расширения веб-сервера от 1С, для этого скачаем с официального сайта архив Cервер 1С:Предприятия (64-bit) для DEB-based Linux-систем. Сразу сделаем оговорку, мы не видим никаких причин использовать в 2019 году 32-битные версии веб-серверов для 1С, поэтому здесь и далее мы будем работать только с 64-битными системами.

Из данного архива нам понадобятся три пакета: 1c-enterprise83-ws - сам модуль веб-расширения, 1c-enterprise83-common - требуется по зависимостям и 1c-enterprise83-server, которого нет в зависимостях, но без которого веб-сервер с 1С работать не будет. Если вы используете в 1С языки отличные от русского, то вам потребуется еще добавить одноименные пакеты nls

Скопируем эти пакеты в отдельную директорию, скажем, 1С в домашнем каталоге, перейдем в него и установим пакеты:

После чего отключим автозагрузку сервера 1С, который для работы не нужен, в целях экономии ресурсов:

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

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

Перед тем как публиковать базу нужно выполнить некоторые условия. Обращаться к серверу 1С можно только по имени хоста, которое веб-сервер должен разрешать в IP-адрес, в доменных сетях это решается использованием доменных DNS, но в любом случае разрешение имен следует проверить.

Для одноранговых сетей следует добавить запись в файл /etc/hosts:

Где SRV-1C имя вашего сервера 1С, перед которым указываем его IP-адрес.

Затем создадим директорию для публикации информационной базы, расположение может быть любым, но хорошим тоном для Linux-систем будет использование стандартных расположений, для веб-сервера это /var/www:

После чего можно перейти непосредственно к публикации, для этого будем использовать утилиту webinst, предварительно перейдя в каталог с ее расположением:

Коротко поясним используемые параметры:

  • publish - указывает необходимое действие, в данном случае публикацию, может быть опущен, так как это действие по умолчанию
  • apache24 - задает тип веб-сервера, для Apache 2.2 следует указывать apache22.
  • wsdir - имя публикации, по которому к базе следует обращаться из браузера, обратите внимание, что оно регистрозависимое
  • dir - путь публикации, ранее созданная нами директория
  • connstr - строка соединения, состоит из нескольких частей: Srvr - имя сервера, Ref - имя базы на сервере, каждая часть должна заканчиваться служебным символом ";"
  • confpath - путь к конфигурационному файлу веб-сервера

После чего следует перезапустить веб-сервер:

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

1cv83-web-access-linux-003.jpg

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

При настройке тонкого клиента просто укажите адрес в диалоге добавления новой информационной базы:

Публикация файловых баз

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

Также нам потребуется установить все необходимые для работы 1С библиотеки и шрифты. Для этого потребуется подключить несвободные репозитории, откройте файл /etc/apt/sources.list и в Debian добавьте в конце каждой строки:

а в Ubuntu раскомментируйте строки содержащие в конце

Затем установим библиотеки ImageMagick, в разных дистрибутивах они могут иметь разные версии, поэтому выполним:

В выводе найдем нужную версию с окончанием на q16-x и установим ее.

1cv83-web-access-linux-006.jpg

В нашем случае это библиотека libmagickwand-6.q16-6:

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

И поместим в нее любым доступным способом, скажем, через SFTP, файл базы данных 1Cv8.1CD, имейте ввиду, что клиента 1С на веб-сервере нет и загрузить на нем DT-файл мы не можем, поэтому его нужно развернуть в другом месте и передать на сервер именно 1CD.

Затем обязательно изменим владельца директории на пользователя веб-сервера:

Создадим каталог публикации:

и опубликуем базу:

Перезапустим веб-сервер и базой можно работать:

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

Для корректной работы с файловыми базами следует ограничить Apache одним рабочим процессом, в противном случае вы можете столкнуться с ошибкой Объект заблокирован. Чтобы избежать этого, откроем /etc/apache2/mods-available/mpm_worker.conf и установим следующие значения:

Если вы используете иные модули мультипроцессной обработки, то нужно внести изменения в их конфигурационные файлы, для event это /etc/apache2/mods-available/mpm_event.conf, настройки выполняются аналогично модулю worker (приведены выше).

В случае использования prefork откройте /etc/apache2/mods-available/mpm_prefork.conf и установите следующие значение опциям:

После чего не забудьте перезапустить веб-сервер.

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Введение

Ранее я уже рассказывал, как публиковать файловые базы 1С. Схема простая и рабочая, но ее можно упростить еще больше, исключив систему Windows вообще. Все, что нужно для публикации баз 1С, есть в Linux. Рассказываю подробно, как это сделать. Вот что нам понадобится для публикации 1С баз:

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

Установка компонентов 1С:Предприятия на Linux

Передаем архив на сервер и распаковываем.

Нам нужно установить только следующие компоненты:

Установка компонентов 1С:Предприятия на Linux

Сервер 1С предприятия установили на Centos, переходим к настройке веб сервера для публикации баз.

Настройка apache для публикации баз 1с

Нам необходимо установить непосредственно web сервер apache.

Запустите его и убедитесь, что веб сервер работает. Для этого перейдите по ip адресу сервера в браузере. Вы должны увидеть стартовую страницу apache.

Настройка apache для публикации баз 1с

Если страница не открывается, скорее всего у вас включен и не настроен firewalld. Откройте необходимые порты:

Проверяем конфигурацию apache и перезапускаем его:

У нас почти все готово к публикации баз 1С. Необходимо только установить шрифты Microsoft's Core Fonts.

Установка шрифтов Microsoft's Core Fonts в Centos

Установка шрифтов Microsoft

Все подготовительные действия сделали. Осталось опубликовать саму 1С базу.

Публикация баз 1С в Centos

В директории /opt/1cv8/x86_64 хранятся бинарники от установки 1С. С их помощью опубликуем файловую базу. Но перед этим нам надо скопировать сам файл с базой в какую-то директорию. Например, в /opt/1Cbase. Выставляем полные права на эту директорию и файлы в ней для веб сервера:

Так же создадим директорию для веб сервера, где будет располагаться файл для веб публикации базы:

Публикуем файловую базу:

Публикуем базу с сервера 1С:

1cbase алиас, который нужно будет добавить к адресу сервера для доступа к этой базе
/var/www/1Cbase путь к публикации базы, где будет располагаться .vrd файл с описанием подключения к базе через web
File=/opt/1Cbase; строка подключения файловой базы
Srvr=1CSRV;Ref=1cbase; строка подключения серверной базы

Публикация баз 1С в Centos

После этого осталось только перезапустить веб сервер и идти проверять публикацию.

Доступ в 1С через браузер

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

Подключение базы 1С через веб сервер

Запустится стандартная платформа, которая без проблем найдет локальную или сетевую лицензию, если она установлена.

Error when loading component 'help'

Очень распространенная ошибка, которую вы можете получить - Error when loading component 'help'.

Ошибка Error when loading component

Ее проблема в том, что текст ошибки совершенно не информативен. Но чаще всего она связана с правами доступа к файлам с базой. У вас скорее всего не стоит владельцем файла с базой веб сервер apache. Второй вариант - работает SELinux. В контексте данной задачи я не разбирался с его настройкой, поэтому просто отключал.

Во время написания статьи как раз столкнулся с проблемой SELinux, так как не заметил, что он остался включен на тестовой машине. Все перепроверил и только потом вспомнил про него. Отключил временно в консоли и сразу все заработало:

Обновление опубликованной через web базы 1с

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

Подойдет любой способ ее настройки. У меня есть статья - быстрая и простая настройка samba. Можете взять подходящий вам способ аутентификации и все сделать. Далее подключаетесь к файловой базе как обычно по сети толстым клиентом и обновляете ее.

Заключение

Не забудьте в таком режиме публикации 1с баз добавить побольше памяти и процессора виртуальной машине с веб сервером. Рекомендую не менее 4CPU и 8G Ram. С каждым релизом 1С хочет все больше и больше ресурсов. Еще во время тестов заметил такую вещь, что виртуалка с 1С не запрашивала больше оперативной памяти, несмотря на то, что было включено динамическое выделение. При этом все жутко тормозило и памяти явно не хватало. Пришлось отключить динамическую память и жестко задать 8G, чтобы все зашевелилось более ли менее быстро.

Для безопасности и удобства, перед Apache можно настроить Nginx в режиме proxy_pass.

Читайте также: