Публикация баз 1С на веб сервере с https и защитой

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

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

Поэтому давайте настроим нашу 1С через защищенное соедение https и защитой доступа дополнительным паролем. 


Содержание

  1. Введение
  2. Схема установки
  3. Публикация баз 1С на веб сервере
  4. Установка и настройка Apache 2.4 в Windows
  5. Доступ к файловой базе 1с через интернет в браузере
  6. Какие бывают проблемы с работой в 1С через браузер
  7. Подключение через Платформу 1С:Предприятие к базе 1С, опубликованной в веб
  8. Бэкап баз 1С
  9. Заключение


Введение
Допустим, у вас небольшая компания и вам нужно рабоатть одновременно 2-3 человека, редко 5.

Необходимо купить минимум 5 программных лицензий 1С Предприятие для сотрудников. Но куда их ставить, если у каждого сотрудника свой компьютер, а сервер терминалов + SQL сервер поднимать не было в ваших планах. (Ведь для этого потребуется достаточно мощный сервер с виртуализацией и прочим)

Что вам больше нравиться - Медленно или дорого?

Во-первых, решение будет достаточно дорогое, к томуже его надо настраивать, обслуживать, защищать от угроз извне, если доступ будет по rdp.

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

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

Мы предлагаем значительно более доступное решение с ипользованием всех перечисленных технологий и скорость запуска 1С Предприятие в 2-4 секунды.

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

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

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

Предлагаемое решение

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

Достаточно будет сервера стоимостью от 4000руб с 2 ssd дисками и 32g оперативной памяти. лучше конечно же 4 диска SSD на 512 и 1 Диск для архивных данных
Туда устанавливается гипервизор hyper-v и windows 2022 либо proxmox
И настраиваются минимум 3 виртуальные машины:

1. Любая windows система, где работает 1С. Если для подстраховки нужен терминальный доступ по rdp, то ставится windows server.
2. Linux система, где будет работать nginx в качестве revers proxy. На ней будет настроен https с рабочим сертификатом и при необходимости парольная защита. (можно настроить и на windows)
3. Любая система по вашему вкусу для бэкапов баз 1С. Они нужны будут для защиты основной виртуалки от шифровальщиков и прочей вирусни, которая может повредить базы данных.
Смысл этой виртуалки в том, что тут бэкапы будут изолированы с ограниченным доступом. На этой же виртуалке настраивается передача этих бэкапов куда-то еще. Не должно быть так, что все архивные копии хранятся на одном физическом сервере на одном хостинг сервере.

Это минимальный набор виртуальных машин который сможет позволить в дальнейшем масштабировать ваш сервис.
Также в последствии можно добавить мониторинг файловый архив вашей компании или почтовый сревре, Битрикс-24 (СРМ или всё что потребуется вашей компании)
Ресурсы можно всегда легко добавить через калькулятор сервера

Итак начнем установку - Публикация баз 1С на веб сервере

Идем на виртуалку с windows и работаем там с 1С. Кстати, если хотите обойтись вообще без windows, то есть возможность настроить публикацию баз 1С на linux на примере Centos.

Для начала устанавливаем технологическую платформу и не забываем выбрать Модули расширения веб-сервера.

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

Создаем в этой виртуальной машине необходимую вам базу данных. Я покажу на примере публикации типовой базы Бухгалтерия 3.0.
Первично потребуется установить лицензии базы 1С или воспользоваться нашими от 250руб за лицензию. Посчить можно через наш калькулятор VPS с 1С Предприятием
Они будут использоваться при доступе к базам через браузер.

Настройка программной лицензии 1С для файловой базы (Учитывайте что файловая база будет иметь свои органичение при работе с веб клиентом)

Мы рекомендуем добавить выделенный SQL \ Postgre сервер 

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

Перейдем к установке apache 2.4. С ним опубликовать базы 1С проще и быстрее, чем с iis. Качаем apache отсюда - https://www.apachelounge.com/download/

Ссылка: Скачать apache 2.4 для Windows

Если у вас не установлен Visual C++ Redistributable for Visual Studio 2015-2019, то скачайте дистрибутивы там же. Бинарники apache скачали, теперь распакуем их в папку C:/apache24/. Затем идем в конфигурационный файл apache C:\Apache24\conf\httpd.conf, открываем его блокнотом и изменяем там несколько параметров:

ServerName localhost:80
ErrorLog "|C:/apache24/bin/rotatelogs.exe -l C:/apache24/logs/errorlog.%Y-%m-%d.log 2592000"
Последняя строка это автоматическая ротация логов.

Рекомендуется ее сразу настроить, а не откладывать на потом. Если у вас по какой-то причине нет возможности использовать стандартный порт 80, потому что он занят кем-то другим, то можно использовать любой другой, например 81. Ранее данное решение помогало, но не так давно это стало приводить к ошибке,
После публикации баз 1c через reverse proxy с https, стали вылезать ссылки вида https://site.ru:8181. Подобные ссылки невозможно открыть. Это приводит к ошибкам в работе некоторых разделов базы, где эти ссылки вылезают. Подробнее этот момент я рассмотрю ниже, в разделе с возможными ошибками.

Если вы настраиваете apache на Windows Server, то скорее всего 80-й порт у вас будет занимать Служба веб-публикаций (World Wide Web Publushing Service) или W3SVC. Ее можно остановить и отключить.

Остановка службы веб-публикаций (World Wide Web Publushing Service) или W3SVC

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

 netstat -ao

Кто занимает порт в windows

Дальше через диспетчер задач смотрите, какой процесс имеет указанный pid. В моем случае это apache. Если это какой-то системный процесс, у него будет pid 4.

Итак, конфиг apache отредактировали, порт 80 указали. Теперь установим apache 2.4 как службу windows. Для этого открываем командную строку от администратора (это важно), переходим в каталог C:\Apache24\bin и выполняем:

 httpd.exe -k install

Установка apache 2.4 в Windows

Вы можете увидеть ошибку, связанную с отсутствием fqdn имени у сервера. Но реально это не представляет проблемы, можно игнорировать.

Errors reported here must be corrected before the service can be started.
AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::955f:6a46:c404:c1f7. Set the 'ServerName' directive globally to suppress this message.
Переходим в оснастку windows Службы и запускаем Apache2.4.

Запуск apache как служба

Убедимся, что веб сервер нормально работает. Для этого в браузере достаточно открыть страницу http://localhost.

Проверка работы apache в windows

Вы должны увидеть сообщение It works! Если видите, то все в порядке.

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

Настройка публикация базы 1С через apache

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

После этого можно зайти в браузере по адресу http://localhost/buh3 и увидеть локальную файловую базу, которую мы только что опубликовали.

Работа файловой базы 1С через браузер или тонкий клиент

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

Доступ к файловой базе 1с через интернет в браузере
Теперь перемещаемся на виртуальную машину с nginx. Предварительно не забудьте добавить dns запись в каком-то домене, по которой вы будете ходить в базу через интернет. Она нам нужна, чтобы выпустить бесплатный tls сертификат, чтобы ходить в базу по https. Я не буду привязываться к какой-то конкретной операционной системе и рассказывать, как все делать именно в ней. Систему выбирайте на свой вкус. Настройка будет одинаковой. Нам нужны будут в системе 2 пакета: nginx и certbot. Установите их:

 # yum install nginx certbot

или

 # apt install nginx certbot

С сертботом придется повозиться если вы установите слишком старый линукс, рекомендуется ставить OS не старее Sentos7

На данную виртуальную машину должны быть проброшены 80 и 443 порты с внешнего ip адреса. Как это будет сделано, зависит от ваших сетевых настроек. В случае с proxmox я настраиваю подобный проброс с самого хоста с помощью iptables. Пример настройки iptables читайте в отдельной статье. Там есть и про проброс. не будем останавливаться на этом в статье про 1С.

Для получения сертификата let`s ncrypt:

Для этого запускайте в консоли certbot и следуйте инструкциям. Перед этим остановите nginx. Для быстрого получения сертификата certbot предлагает временно запустить свой веб сервер на 80-м порту.

# systemctl stop nginx
# certbot certonly
Подробно получение сертификата let's encrypt с помощью certbot я рассматриваю в статье про настройку web сервера nginx. Результатом работы certbot должны быть tls сертификаты в директории /etc/letsencrypt/live. Используем их в настройке виртуального хоста nginx для публикации баз 1С. Создаем в директории /etc/nginx/conf.d/ конфиг 1c.site.ru.conf примерно следующего содержания. Взял его с рабочего сервера.

 server {
    listen 443 ssl http2;
    server_name 1c.site.ru;
    access_log /var/log/nginx/1c-access.log;
    error_log /var/log/nginx/1c-error.log;

    ssl_certificate /etc/letsencrypt/live/1c.site.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/1c.site.ru/privkey.pem;

    location /.well-known/acme-challenge/ {
    root /tmp;
    }

    location / {
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.1c;
    proxy_pass http://10.10.10.11:80;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto https;
    }
}

server {
    listen 80;
    server_name 1c.site.ru;
    return 301 https://1c.site.ru$request_uri;
}

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

# htpasswd -c /etc/nginx/htpasswd.1c user1c

Если у вас нет в системе утилиты htpasswd, то установите пакет httpd-tools. Она из него. user1c - имя пользователя. Пароль вам предложат задать в консоли.

Теперь можно запускать nginx и проверять доступ к базе 1с по https с дополнительной авторизацией. Так как в конфиге nginx настроен proxy_pass всех запросов через location / , то на самой виртуалке с 1С вы можете публиковать сколько угодно баз через алиасы, например /buh3, /zup3 и т.д. Все они будут автоматом направляться с nginx на apache. При этом на самом nginx конфигурацию менять не придется.


Защита доступа к базе 1С через интернет дополнительным паролем

Работа в базе 1С через браузер по https

Вот и все. Можно относительно безопасно выставлять такую конструкцию в интернет. В случае необходимости можно настроить fail2ban, если кто-то надумает перебирать пароли или просто выполнять непонятные запросы к веб серверу с опубликованными базами. При желании в том же nginx с помощью директив allow и deny можно ограничить доступ к виртуальному хосту с базами на уровне ip адресов. Это на случай, если не умеете делать то же самое на фаерволе. В nginx проще и быстрее.

Не забудьте настроить автоматическое обновление tls сертификатов. Как это сделать, я рассказываю в статье с настройкой web сервера. Ссылку на нее я дал выше.
Какие бывают проблемы с работой в 1С через браузер
В таком режиме у меня уже пару лет работают несколько серверов с 1С. Иногда возникают нюансы с доступом через браузер. Например, не настроить обмен между базами, не зная их локальных путей. Бухгалтера сами его не смогут настроить. Им нужно будет передать информацию по директориям с базами. Понятное дело, что и обновить платформу они сами не смогут, так как нужно будет обновлять и публикацию баз. Когда вы сами подключены через браузер, сделать это невозможно.

Так что некоторые вещи, которые обычно бухгалтера в небольших компаниях способны сделать сами, придется делать тому, кто обслуживает этот сервер. Но бонусом идет то, что на самих пользовательских компьютерах ничего настраивать не надо. Вы просто передаете пользователю адрес в интернете и учетные данные. И он начинает работать в базе 1с.

Платформу ставить обязательно, как и решать вопрос с лицензиями на клиентах.

Еще один нюанс, связанный с обменом между базами. После обновления платформы на сервере, он перестает работать через браузер. Возникает ошибка доступа к COM объекту. Чтобы это исправить, надо выполнить на сервере регистрацию comcntr.dll примерно так.

 regsvr32 "C:\Program Files\1cv8\8.3.18.1208\bin\comcntr.dll" (тут следует указать актуальную версию платформы)


Сделать это надо в cmd с правами администратора. И повторять каждый раз при обновлении платформы, не забывая указать путь к новой версии файла.

Возможно также получение ошибик при публикации баз с использованием nginx и proxy_pass. Ранее использовался отличный от 80-го порт в apache. Но периодически стали проскакивать ссылки при работе с опубликованной базой 1с примерно такого вида - https://1c.site.ru:81/ в случае, если вы используете 81-й порт. Запросы извне по этой ссылке уходят в никуда и возникают ошибки. На стороне клиента они выглядят так:

Uncaught TypeError: Cannot read property 'toUpperCase'

Uncaught TypeError: Cannot read property 'toUpperCase' of undefined on https://......./mod_main_loader.js

Простейшим способом решения проблемы является установка тонкого клиента 1С Предприятие

Ещё один момент, переодически сервер apache может подвисать или работать медленно, это редко встречается на правильно настроенных серверах, однако рекомедутеся установить период его перезапуска через планировщик Windows - 1 раз в сутки - в 3-4 часа ночи.

 @echo off
sc stop "Apache2.4"
timeout 90
sc start "Apache2.4"


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

Подключение через Платформу 1С:Предприятие к базе 1С, опубликованной в веб

С тонким клиентом всё Причем все отлично заработает даже с дополнительной basic auth в виде еще одной авторизации.

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

Подключение к базе 1С через интернет с помощью платформы

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

Бэкап баз 1С

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

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

Так же для бэкапов вы можете использовать какое-нибудь S3 хранилище, например дополнительную архивацию

Копировать архивы на резервный сервер можно с помощью утилиты rclone. Лучше всего создать несколько контейнеров для хранения архивных данных, например:

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

Таким образом мы загружаем автоматически архивы в разные контейнеры, с указанной частотой и там они будут хранится ровно в указанных промежутках времени.

В итоге:

Мы всегда имеем 7 последних копий, 4 недельные и помесячные. Удобная схема и не очень дорогая. Стоимость хранения можно посчитать тут  в заивисимости от размера ваших баз данных.

Заключение

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

Разделы

  • Реклама. Рекламодатель ООО "АЛЬФА" ОГРН 1157847073405 erid: 2VtzquYGf7w

  • Реклама. Рекламодатель ООО "АЛЬФА" ОГРН 1157847073405 erid: 2VtzqwXpKPw

  • Реклама. Рекламодатель ООО "АЛЬФА" ОГРН 1157847073405 erid: 2VtzqwdmcT3

  • Реклама. Рекламодатель ООО "АЛЬФА" ОГРН 1157847073405 erid: 2Vtzqx4whE8

Закажите консультацию

Подберем оптимальный вариант для Ваших задач

Спасибо за обращение, мы с вами свяжемся!