Сегодня расскажу про удобную и эффективную схему работы с базами 1С для малого бизнеса. Я настрою публикацию файловых баз 1С через веб сервер с использованием https и защитой доступа дополнительным паролем. Тут не будет каких-то особенных откровений или филигранных решений. Просто расскажу, как я обычно это все настраиваю в комплексе со всем остальным.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Введение
Допустим, у вас небольшой рабочий коллектив и вам нужно работать с базами 1С. Одновременно там будет работать 2-3 человека, редко 5. В общем, в этих пределах. Вам надо купить как минимум 5 софтовых лицензий для сотрудников. Но куда их ставить, если у каждого сотрудника свой компьютер, а сервер терминалов поднимать не было в ваших планах. Во-первых, он денег стоит, во-вторых, его надо настраивать, обслуживать, защищать от угроз извне, если доступ будет по rdp. В общем, на маленьких масштабах это пушкой по воробьям. Чего уж говорить о клиент серверной установке 1С с использованием сервера баз данных mssql или postgresql. Для небольших компаний это перебор как по цене, так и функционалу. Я предлагаю решение значительно проще.
На помощь приходит публикация баз 1С на веб сервере с доступом пользователей через браузер. Лицензии ставятся на один компьютер. На него устанавливается веб сервер, публикуются базы 1С и настраивается доступ. Пользователям достаточно будет передать только ссылку для работы в базах. Это удобная схема работы, плюс в целом быстродействие файловых баз при одновременной работе нескольких пользователей будет выше. Ко всему прочему еще и пользователям на компьютер не нужно ставить платформу и обновлять ее.
Схема установки
Я предлагаю следующую схему работы с базами 1С при их публикации. Доступ нужен будет отовсюду через интернет. Для этого арендуется выделенный сервер, например в selectel. Достаточно будет сервера примерно за 4000р. с 2 ssd дисками и 32g оперативной памяти. Туда ставится гипервизор proxmox. И настраиваются минимум 3 виртуальные машины:
- Любая windows система, где работает 1С. Если для подстраховки нужен терминальный доступ по rdp, то ставится windows server.
- Linux система, где будет работать nginx в качестве revers proxy. На ней будет настроен https с валидным сертификатом и при необходимости парольная защита.
- Любая система по вашему вкусу для бэкапов баз 1С. Они нужны будут для защиты основной виртуалки от шифровальщиков и прочей вирусни, которая может повредить базы данных. Смысл этой виртуалки в том, что тут бэкапы будут изолированы с ограниченным доступом. На этой же виртуалке настраивается передача этих бэкапов куда-то еще. Не должно быть так, что все архивные копии хранятся на одном физическом сервере у одного хостера.
Это минимальный набор виртуалок. Сюда же можно добавить мониторинг либо еще какой-то сервис, необходимый вашей компании. Например чат или ip телефония. Производительности дедика хватит для небольшой компании.
Публикация баз 1С на веб сервере
Идем на виртуалку с windows и работаем там с 1С. Кстати, если хотите обойтись вообще без windows, то есть возможность настроить публикацию баз 1С на linux на примере Centos.
Для начала устанавливаем технологическую платформу и не забываем выбрать Модули расширения веб-сервера.
Создаем там необходимую вам базу данных. Я покажу на примере публикации типовой базы Бухгалтерия 3.0. При первом запуске необходимо будет установить на этот компьютер софтовые лицензии. Они будут использоваться при доступе к базам через браузер.
Установка и настройка Apache 2.4 в Windows
Теперь устанавливаем apache 2.4. С ним опубликовать базы 1С проще и быстрее, чем с iis. Качаем apache отсюда - https://www.apachelounge.com/download/
Если у вас не установлен 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://1c.server.ru:81. Подобные ссылки невозможно открыть. Это приводит к ошибкам в работе некоторых разделов базы, где эти ссылки вылезают. Подробнее этот момент я рассмотрю ниже, в разделе с возможными ошибками.
Если вы настраиваете apache на Windows Server, то скорее всего 80-й порт у вас будет занимать Служба веб-публикаций (World Wide Web Publushing Service) или W3SVC. Ее можно остановить и отключить.
Для того, чтобы точно узнать, кто занимает тот или иной порт в Windows, можно воспользоваться командой в консоли:
netstat -ao
Дальше через диспетчер задач смотрите, какой процесс имеет указанный pid. В моем случае это apache. Если это какой-то системный процесс, у него будет pid 4.
Итак, конфиг apache отредактировали, порт 80 указали. Теперь установим apache 2.4 как службу windows. Для этого открываем командную строку от администратора (это важно), переходим в каталог C:\Apache24\bin и выполняем:
httpd.exe -k install
Вы можете увидеть ошибку, связанную с отсутствием 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.
Убедимся, что веб сервер нормально работает. Для этого в браузере достаточно открыть страницу http://localhost.
Вы должны увидеть сообщение It works! Если видите, то все в порядке.
Дальше выполняем непосредственно публикацию базы 1С через web сервер apache. Открываем базу через Конфигуратор, выбираем Администрирование -> Публикация на веб-сервере. В качестве каталога можно указать тот же, где лежит сам файл с базой.
Все настройки можно оставлять дефолтными. Сохраняем изменения. После этого должен быть выполнен перезапуск службы apache автоматически. Но если платформа была запущена не от администратора, то у нее не хватит прав это сделать. Надо сходить в Службы и перезапустить вручную.
После этого можно зайти в браузере по адресу http://localhost/buh3 и увидеть локальную файловую базу, которую мы только что опубликовали.
Теперь с ней можно работать через браузер, но пока только с этого компьютера, либо по локальной сети. Далее сделаем так, чтобы доступ был и через интернет.
Доступ к файловой базе 1с через интернет в браузере
Теперь перемещаемся на виртуальную машину с nginx. Предварительно не забудьте добавить dns запись в каком-то домене, по которой вы будете ходить в базу через интернет. Она нам нужна, чтобы выпустить бесплатный tls сертификат, чтобы ходить в базу по https. Я не буду привязываться к какой-то конкретной операционной системе и рассказывать, как все делать именно в ней. Систему выбирайте на свой вкус. Настройка будет одинаковой. Нам нужны будут в системе 2 пакета: nginx и certbot. Установите их:
# yum install nginx certbot
или
# apt install nginx certbot
На данную виртуальную машину должны быть проброшены 80 и 443 порты с внешнего ip адреса. Как это будет сделано, зависит от ваших сетевых настроек. В случае с proxmox я настраиваю подобный проброс с самого хоста с помощью iptables. Пример настройки iptables читайте в отдельной статье. Там есть и про проброс. Не буду на этом задерживаться в статье про 1С.
Теперь нам нужно получить сертификат. Для этого запускайте в консоли 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 конфигурацию менять не придется.
Вот и все. Можно относительно безопасно выставлять такую конструкцию в интернет. В случае необходимости можно настроить fail2ban, если кто-то надумает перебирать пароли или просто выполнять непонятные запросы к веб серверу с опубликованными базами. При желании в том же nginx с помощью директив allow и deny можно ограничить доступ к виртуальному хосту с базами на уровне ip адресов. Это на случай, если не умеете делать то же самое на фаерволе. В nginx проще и быстрее.
Какие бывают проблемы с работой в 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' of undefined on https://......./mod_main_loader.js
Ошибка совершенно не гуглится, так что потратил много времени на ее решение. Помог режим отладки в chrome. Я просто проверил все запросы и нашел ошибочные с кривыми урлами. И так и сяк пытался их решить редиректами на веб серверах, но в итоге пришлось в apache переехать на 80-й порт и ошибка ушла.
Ну и еще одно отмечу. Иногда apache зависает или начинает сильно тупить. Обычно после долгого аптайма в несколько недель. Я подробно не разбирался в проблеме. Предпочел просто перезапускать его раз в сутки ночью. Для этого сделал обычный bat файл и настроил запуск через планировщик Windows.
@echo off sc stop "Apache2.4" timeout 90 sc start "Apache2.4"
Понятно, что это грубый костыль, но проблему решает. Ночью все равно с 1С никто не работает. Это история не про отказоустойчивость, резервирование и работу 7/24/365.
Подключение через Платформу 1С:Предприятие к базе 1С, опубликованной в веб
Упомяну одну важную вещь, про которую я сам узнал не сразу. С опубликованной в web базой 1С не обязательно работать через браузер. Можно подключиться через обычную платформу, если она у вас установлена на компьютере. Причем все отлично заработает даже с дополнительной basic auth в виде еще одной авторизации.
Чтобы добавить такую базу в платформу, достаточно указать, что тип расположения информационной базы - веб-сервер.
При подключении к такой базе вам сначала нужно будет ввести пароль на доступ к веб сайту, а потом уже появится авторизация самой 1С. Удобно выходит. И субъективно кажется, что через платформу 1С работать с опубликованной базой немного быстрее. Быстрее отклик на действия пользователя.
Бэкап баз 1С
Для полноты картины расскажу, как легко и быстро забэкапить файловые базы 1С. Пошаговую инструкцию не буду писать, так как у всех свои ситуации и каждый делает по-своему. Я на словах расскажу, как можно поступить с архивными копиями. Сам я каждый раз придумываю разные решения для бэкапов 1С в зависимости от обстоятельств.
Для меня важно держать где-то недалеко от рабочего сервера несколько архивных копий баз, чтобы их можно было оперативно загрузить на сервер и работать с ними. Для этого у меня на этом же гипервизоре отдельная виртуальная машина исключительно для бэкапов. Доступ к ней максимально ограничен. Она сама забирает все бэкапы к себе. С windows машины к ней доступа нет. Сделано это для простейшей защиты от шифровальщиков. Если какой-то вирус попадет на сервер и зашифрует базы 1С, я очень быстро смогу их восстановить из архивных копий, которые хранятся на этом же гипервизоре, только в другой виртуальной машине.
На windows сервере можно просто расшарить директорию с базами 1С, а на виртуалке для бэкапов подключить ее. Я обычно использую Linux систему для этого. В ней монтирую шару по smb. Как это сделать рассказываю в отдельной статье - Как быстро подмонтировать сетевой диск в Linux. После того, как подключили папку с базами 1С к бэкап серверу, можете делать с ними все, что угодно. Например, куда-то копировать с помощью rsync и сохранять изменившиеся базы. Подробно схему бэкапов с помощью rsync описываю тоже отдельно - настройка rsync для бэкапа. Обязательно одну копию держу локально на сервере с бэкапами, вторую отправляю куда-то в удаленный приемник. После этого шару отмонтирую. Она подключена только для копирования баз с windows машины на linux.
Так же для бэкапов вы можете использовать какое-нибудь S3 хранилище, например у того же Selectel. По моим недавним сравнениям по ценам там наиболее выгодные условия из известных хостеров. По крайней мере я дешевле не нашел. Заливать бэкапы в S3 можно с помощью утилиты rclone. У Selectel еще очень удобно сделано в плане настройки времени хранения данных в контейнерах. Я обычно создаю 3 разных контейнера:
- Day - в него заливаются архивы каждый день. Срок хранения файлов в этом контейнере - 7 дней. Настраивается это штатно в панели управления. На стороне хоста, с которого заливаются данные, ничего делать не надо.
- Week - архивы заливаются раз в неделю и хранятся 31 день.
- Month - архивы заливаются раз в месяц и хранятся условно бесконечно.
Таким образом мы просто каждый день льем файлы в S3 в разные контейнеры, а там они автоматом ротируются. Мы всегда имеем 7 последних копий, 4 недельные и помесячные. Удобная схема и не очень дорогая. Стоимость хранения можете сами прикинуть по калькулятору хранилища.
Еще один вариант бэкапа - копировать базы по nfs на какой-то сервер. В общем, тут вариантов может быть очень много. Я для этого и использую такую схему - подключение директории с базами к linux серверу, а там уже возможности по работе с бэкапами безграничные. Можно на тот же Яндекс.Диск их передавать. Вот тоже статья по этому поводу - бэкап на яндекс диск. Правда там речь идет про сайт, но принципиальной разницы нет.
Заключение
Это все, что я хотел рассказать по поводу публикации файловых баз 1С в интернет. Постарался дать не только технические данные но и свои личные подробности, основанные на опыте подобных эксплуатаций. Я хоть и пытаюсь дистанцироваться от 1С, но она настолько популярна в России, что так или иначе сталкиваешься с этим продуктом. Да я и свою бухгалтерию ИП сам веду в 1С :)
Если захотите себе настроить что-то подобное, то обращайтесь ко мне. Я могу подобрать подходящее решение под ваш бюджет и выполнить настройку. Это будет дешевле быстрее и скорее всего лучше, чем вам настроят через франчайзи. По крайней мере то, что я видел, чаще всего было настроено так себе. Без акцента на безопасность и удобство, лишь бы работало.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Владимир, добрый день. Настроил публикацию базы 1С Управление нашей фирмой по вашей инструкции. База лежит на Win Server 2022.
При подключении к ней с компьютеров локальной сети после ввода пароля пользователя 1С вылетает такая ошибка:
Ошибка разбора XML: - [1,1]
Фатальная ошибка:
Extra content at the end of the document
Причем такая ошибка возникает при попытке авторизации под любым пользователем.
Причем, если обращаться к веб-серверу через браузер, то ошибки нет. Она возникает именно при запуске 1с в режиме веб доступа.
Владимир, подскажите, а есть ли возможность публикации сервисов без публикации авторизации?
Не понял вопрос. Что значит публикация сервисов в контексте работы с базой 1С?
Здравствуйте Владимир. Первая часть была очень понятно - увидел It Works - думал победа. но как только перешли на пункт "а теперь переходим на nginx сервер" - тут сразу все оборвалось... куда и зачем еще переходить, если мы уже на сервере ?
подскажите пожалуйста , вот в такой конфигурации: у меня 1С - стоит на виртуалке(hyper-v) и ОС Windows Server. Туда же я поставил apache.
Apache - это же веб-сервер тоже, зачем еще какойто дополнитлеьный nginx. Могу ли я обойтись всеми нужными сервисами внутри этой-же виртуалки. или надо все таки отдельный веб-сервер устанавливать на контроллера домена ?
главная задача для публикации - это не работа пользователей через интернет, а интеграция с Битриксом.
прошу прощения за "нубский" вопрос. но я реально не понимаю что делать с nginx и споткунулся на этом шаге. Был уверен, что после it works - останется только пробросить порты на микротике и будет доступ по внешнему IP.
СПАСИБО
В вашем случае Nginx не нужен. Это необязательный компонент. Он нужен исключительно для удобства и бОльшей безопасности. При его использовании в интернет смотрит только Nginx и передаёт все запросы на сервер с Windows + Apache.
Да, Владимир спасибо большое за ответ! Действительно в моем случае я сделал все по первой части до установки nginx. споткнулся там , написал вам, а потом просто с уже имеющимся apache просто пробросил порты на роутере и база завелась. Еще раз спасибо за такую инструкцию
Да, кстати забыл уточнить, т.к. сейчас http - почти не используется и нужен https - можно ли по этой же инструкции в apache установить 443 порт ? или может можно паралельно ? буду признателен если скажете как лучше исправить конфиг при уже имеющемся 80м порту. надо ли снова ззаходить в конфигуратор и публиковать повторно после перенастройки на 443 порт. Спасибо
Вот как раз для того, чтобы настроить https я и использую Nginx. Там быстрее и проще настроить получение и автоматическое продление бесплатных сертификатов от let's encrypt. Как это на Windows + Apache делать, не знаю. Никогда там не настраивал. Настройка https это не только открыть 443 порт, но и добавить в настройку сертификаты, которые нужно либо самому сделать, либо где-то получить.
Владимир, интересует такой вопрос. Хочу использовать данный способ обращения к базе в локальной сети. На двух машинах в этой сети подключены ОНЛАЙН кассы. Конфиг 1С Управление нашей фирмой. Как будет происходить взаимодействие 1С с кассовым оборудованием при варианте подключения через веб сервер?
Я никогда не работал с торговлей и кассами, так что не знаю, что сказать.
Попробовал, всё отлично работает)
Есть ли возможность ограничить подключение только тонким клиентом, и не пускать браузеры к базам
Простое средство не знаю. Штатно наверное такого нет, так как используется один и тот же http протокол. Теоретически можно настроить на веб сервере какую-то фильтрацию. Например, посмотреть юзерагент тонкого клиента и пускать только его.
Где-то натыкался что можно в тонком клиенте сразу забить логин/пароль пользователя апач, что-то типа https://user@pass и далее. Не знаете такой схемы?
Это раньше 100% было. Я помню, что настраивал. Но недавно на свежей платформе не смог найти места, где бы можно было указать учётку от basic_auth. Похоже убрали эту возможность.
Здравствуйте Владимир, а как обновляется Apache? ставится поверх установленной? или после установки надо заново прописывать все по статье?
Да, просто поверх ставится новая версия. Ничего перенастраивать не придётся.
Владимир, добрый день! Все завелось по вашему гайду, бухгалтерия довольна. Скорость возросла в разы! Можете прояснить один момент, - если надо обновить платформу 1С? Сначала обновляем на сервере (где apache), а потом у пользователей? Само обновление, это просто установка новой версии и все? службы останавливать не надо и публиковать базы заново?
Надо заходить на сервер и обновлять платформу, потом делать заново публикацию. Там меняется путь к библиотеке, которая прописана в настройке apache. А потом уже пользователям. В целом, ничего особенного, просто не забывать публиковать заново базу после обновления.
Спасибо!
Добрый день! может быть глупый вопрос, но все же - сколько можно так баз опубликовать? допустим на работе 2 базы.
Сколько угодно. Никаких ограничений тут нет.
Еще такой вопрос, при веб-сервере, как синхронизировать базы?
Сейчас выдает ошибку 2147221005(0x800401F3)
Если кому будет полезно решение данной ошибки - в настройках транспорта обмена данными, указываем подключение через Интернет и прописываем там http://ip/путь до базы. Все работает!
PS.
Интернет (Web service)— транспортом является веб-служба. Одна информационная база подключается к веб-сервису, веб-сервис подключается к второй базе и транспортирует сообщение. Для осуществления такого транспорта необходимо иметь установленный веб-сервер (IIS или Apache).
Небольшое дополнение о том как сервисы запускать для свежих платформ.
https://infostart.ru/public/1341653/
Zerox, такой вопрос.
Можно ли базу опубликовать через IIS, но не в Default Web Server?
Просто когда так делаю, то у меня на localhost все работает нормально, но при доступе извне, получаю ошибку, что с базой работать нельзя. если все оставить на вебсервер по умолчанию. то проблем нет. все работает.
Можно сделать как угодно. Все настройки можно сделать вручную так, как удобно. Там по сути только компоненту 1С надо подгрузить к веб серверу и всё. Никакой магии с 1С нет.
А вот нет. без публикации со стороны 1С не пускает в базу. а публикация идет только на Default Web Site (
Добрый день. Вопрос. Настраивали ли вы когда-нибудь WEB- публикацию базы 1С, но с доменной авторизацией? Расскажите подробнее, спасибо!
Доменная авторизация в самой базе или в веб сервере?
Добрый день.
Можно к одной и той-же базе подключиться по rdp (толстым клиентом), а часть сотрудников перевести в web доступ ?
Да, без проблем. Главное, чтобы лицензий клиентских хватало. Каждая открытая вкладка базы в браузере требует отдельной клиентской лицензии.
Лицензий хватает.
Есть сотрудники которые только смотрют в 1С - ничего не вносят,
а чем дальше тем платформа больше забирает под себя оперативку.
Спасибо !!!
буду экспериментировать...
inna.newsfitmoopa@ya.ru
Приветствую, А возможно ли публикация баз 1с-windows на стороннем сервере nginx ? ( без apache и iis как в поиске выдается). А только с этими двумя серверами!
1с-windows и отдельно Linux-nginx!
Публикация может быть сделана на любом сервере, откуда есть доступ к самим базам 1С. Но поддержки Nginx нет, только Apache.
Ясно, благодарю за оперативный ответ
Доброго дня, подскажите, публикация возможна только для конфигураций 1С на управляемых формах?
Я точно не знаю. Давно уже не видел конфигураций без управляемых форм.
Добрый день!
Если я публикую базу на сервере Linux через апачи, при этом сам сервер 1с с базой лежат на другом хосте.
Как тогда можно настроить публикуемые сервисы?
Подскажите, почему при выборе в 1С печати документа (допустим счет), при загрузке формы наблюдаются дикие тормоза до 1 минуты если работает через обратный прокси, убираю прокси и делаю на прямую в Apache - все как должно быть менее 5 сек.
Как победить, где искать? все на Linux две машины разнесены на разные виртуалки.
Не знаю, в чем проблема. Не сталкивался. Надо лог прокси смотреть. Может там зацикливание какого-то редиректа идёт.
> Но периодически стали проскакивать ссылки при работе с опубликованной базой 1с примерно такого вида - https://1c.site.ru:81/ в случае, если вы используете 81-й порт.
В документации по 1С "Руководство администратора > Глава 8. Настройка веб-серверов для работы с «1С:Предприятием»" эта проблема легко решается настройкой дополнительных заголовков:
Для «восстановления» HTTP-запроса: при переадресации HTTP-запроса соответствующим образом формировались заголовки запроса X-Forwarded-Port, X-Forwarded-Host и X-Forwarded-Proto.
Привет!
>Я хоть и пытаюсь дистанцироваться от 1С
золотые слова )
В размещении сервера внутри компании за Микротиком и VPN для удаленных пользователей есть свои преимущества, например скорость при локальной работе. Но и в размещении сервера в облаке есть свои преимущества: у провайдера, как правило, быстрее Интернет, физическая недоступность сервера, повышенная надежность. Так, что зря спорил @Инк Дело конкретной ситуации. У меня в офисе 100Мбит Интернет, а дома уже 1Гб, так что, я в некотором роде могу быть лучше офиса и провайдера, но спорить не буду )
Теперь мои соображения по сути:
1. Схема может быть упрощена, а именно, перемещением баз данных 1С на сам гипервизор и экспортом папки с файлами в качестве NFS-папки. Тогда ее могут монтировать все госты: как веб-сервер, так и сервер Windows, так и бэкап-сервер. Да и доступ на чтение и запись будет быстрее. Тут стоит поднимать virtio-драйвер сети для ускорения работы, а не эмулированные сетевухи. Плюс, если на хосте будет zfs, то включение компрессии lz4 также ускорит работу, ни и снапшоты...
2. На Linux vm уже есть apache, который увидит файлы, подмонтированные по NFS. Таким образом не нужно ставить его на Windows, где, как видно, он чувствует себя не в своей тарелке. Не нужен реверс прокси, так как вам вообще не нужен 80й порт, поскольку https это 443, который и надо пробрасывать на firewalle proxmox'a. Ведь, прокс работает не на 443 порту, а на 8006.. и 443 у него не занят (проверил, не занят). Или я что-то не так понял?
3. VPN всегда лучше любой web-аутентификации, тем более с прицелом на прочие сервисы (камеры, телефония, чат и т.п.) поэтому, я бы не усложнял htpasswd + fail2ban, а попросту поднял VPN, тем более, что на проксе есть уже готовые шаблоны контейнеров с разными vpn-ами. Да и на хосте vpn можно поднять. Все лучше vpn+ssh, чем просто ssh. А sshd открывается только на адреса vpn диапазона, забываем про hosts.allow...
4. @Andmisha вообще предложил отказаться от машины с Windows, я так понял. Снимаем вопрос "шифровальщиков", который, по-идее, может и в Винде сниматься тем, что она попросту не видит Интернета ) хотя, это никак не отменяет backup посредством rsync.
Как-то так. В любом случае, спасибо за статью!
1. NFS обычно синоним медленно. Там где можно обойтись без nfs, лучше обходиться без него.
2. Реверс прокси ставится для безопасности и удобства управления.
3. VPN в общем случае замедляет работу, так как добавляется шифрование всего трафика. Если вы можете обойтись без vpn, лучше обойдитесь. Это если смотреть с точки зрения быстродействия.
4. К linux тоже есть шифровальщики. Но в целом, если можно обойтись без винды, это неплохо. Другое дело, что нужен линуксовый админ. Если он есть, то хорошо, а если нет, то это лишние расходы в будущем для организации.
Дабы не ввязываться в дискуссию, скажу только, что синтетические тесты говорят о преимуществе NFS перед SMB:
https://ferhatakgun.com/network-share-performance-differences-between-nfs-smb/
https://blog.ja-ke.tech/2019/08/27/nas-performance-sshfs-nfs-smb.html
У меня есть и то и другое, надо будет как-нибудь померять. У меня NFS папка пробрасывается в виртуальную машину, на которой с ней работает Domino server. Это папка с базами данных. Еще раз передам мысль: файлы на хосте работают гораздо быстрее, чем в гостях. ИМХО
Я nfs не с smb сравнил. В статье то у меня прямой доступ к файлам с базами. Они лежат тут же, на виртуалке. Если нужен сетевой доступ, то лучше использовать блочное устройство, например через iSCSI, а не сетевой по nfs или smb. NFS и SMB медленные, а для файловых баз это критично. Пользователей 1С из-за этого и сажают в терминал, чтобы не работать с файловыми базами по smb.
ЭхЩа
Добрый день. А как же публикация аппаратных ключей для отчётности? Без них бухгалтера работать не смогут.
Технически схема красивая, в реальности - очень вряд ли. Сейчас экономят на всём, проще поставить сервер у себя и настроить доступ - за последнее время несколько раз такое делал.
Не понял, при чем тут аппаратные ключи и отчетность? Если нет возможности использовать usb ключи, лицензии покупаются программные. Где и какой сервер арендовать, каждый выбирает для себя сам исходя из своих возможностей и желаний. Это не принципиально в контексте данной статьи.
Ключи не 1С, а для авторизации отчётности.
Все равно не понял. Какой именно отчетности? Сертификаты для обмена с налоговой не обязательно должны быть аппаратные.
Добрый день
как Вы думаете если кол-во пользователей 1с около 100 лучше Apache или все такие IIS ? И стоит ли при этом выделять для web сервера отдельную виртуалку или можно совместить все с сервером 1с ?
Я нигде не видел сравнение производительности веб серверов при таком режиме работы. Мне кажется, что узким местом тут будет не веб сервер, так что не принципиально. Это мое предположение. Вы 100 человек хотите к файловой базе подключить?
Я бы сначала все сделал на одном сервере и понаблюдал. Не факт, что вынесение веб сервера на отдельную виртуалку увеличит производительность. Тут надо тестировать. Скорость может наоборот упасть. Не знаю точно, как веб сервер взаимодействует с 1С и сколько только он требует ресурсов. Мое предположение, что в разы меньше, чем сама 1С.
VPN + шустрый ПК сервер + бекап в облако - в разы дешевле и проще описанной выше схемы.
А ПК вы куда поставите? В статье тоже все настроено на ПК, только арендованном. И vpn нет, так что не понятно, почему это будет проще. Без vpn как раз проще. Не надо пользователям голову забивать настройкой vpn.
ПК с базой где удобно там и стоит, VPN клиент/сервер сейчас настраивается почти на любом микротике за пару кликов, даже не имея белого IP. Доступ внутри VPN жестко ограничевается фаерволом того же роутера.
При такой схеме не будет описанной вами проблемы: "Если какой-то вирус попадет на сервер и зашифрует базы 1С" т.к. база не смотрит в интернет :)
Вы пишите, что так проще, но лично я вижу, что так сложнее, в том числе и для конечного пользователя. Ваша схема имеет право на жизнь. У нее как свои плюсы, так и минусы. Нет смысла обсуждать, что лучше, поставить сервер у себя дома за 3 копейки, или в ЦОД. Отключение электричества или интернета дома, а так же поломка компа разрешит этот спор сама.
Тот же vpn можно настроить на виртуалке c nginx и тоже полностью скрыть базу из интернета. Но в описанной задаче, которую решал в статье, я не ставил такой цели. Наоборот, хотелось сделать безопасно без использования vpn, чтобы упростить обслуживание.
Цена решения - основной фактор для 90% мелко-средних компаний!
Сервер в офисе, если отключат свет, то работа офиса встанет полностью. Для "удаленных" сотрудников ИБП решит проблему. В нормальных офисах интернет имеет резервный канал, 4G в роутер на край.
Поломка ПК работающего 24/7/365 явление крайне редкое, но если случилось в офисе имеется второй ПК с настроенным апачем, и РИБом основной базы 1С.
И как показывает моя практика в ЦОДах простои в прошлом году случались гораздо чаще )))
Напишите статью о "бюджетных" решениях! Думаю лишним не будет.
Я постоянно работаю с арендованным железом. Этот рынок растет год от года. Компании отказываются от своего оборудования в пользу арендованного. Можно долго спорить о целесообразности этих действий, но факт в том, что динамика рынка именно в эту сторону - переход к тем или иным хостерам. Я сам работаю в сфере малого и среднего бизнеса и у меня большинство оборудования арендовано в цодах. Статистически вероятность простоя там в разы меньше.
Да я так же работаю в мелко-среднем бизнесе и с прошлого года у меня наблюдается обратная тенденция. Тут наверное от региона зависит, в Москве и Питере рост есть, а вот в остальных регионах все не так радужно.
У более менее средних компаний затишье, у мелких спад и срезание бюджетов.
Мне ваше решение кажется более верным, мелкий бизнес, особенно начинающий, это купить и поддерживать оборудование, обслуживание серверов. А если бизнес не пошел? Куда это все девать?
Кстати, ошибка "Uncaught TypeError: Cannot read property 'toUpperCase' of undefined on https://......./mod_main_loader.js" не имеет место быть при подключении к базе через платформу.
Да, все верно. Она возникает из-за особенностей работы браузеров. Более того, она и возникала то только в хроме. Но тем не менее, кривые ссылки никуда не деваются, а ошибка их следствие. В других местах эти ошибки просто игнорируются, а хром вываливает такую ошибку.
Известно, что файловая база гораздо быстрей серверной, если пользователей немного. А сервер укатает файловую при большом количестве пользователей. В этом варианте получается как бы и серверная (веб-сервер) и файловая. Только вместо MSSQL или PostgreSQL используется файловая база от 1С. Сколько пользователей, судя по Вашему опыту выдержит такая база, прежде чем начнет тормозить. Вернее сколько пользователей выдержит веб-сервер ? Ясно, что это зависит от производительности сервера. Например сколько пользователей держит сервер который Вы описали. Где по Вашему граница перехода на настоящий сервер ? У меня 30 пользователей легко работали в терминале, но дальше начались тормоза.
"Известно, что файловая база гораздо быстрей серверной, если пользователей немного."
Мне такое не известно. Это откуда информация? Есть тесты? По моим наблюдениям, если в базе работает одновременно более 5-ти человек, надо переходить с файловой. Но все, конечно, же, зависит от характера работы и активности в базе.
Я имел ввиду тест Гилева. В нем файловый и серверный вариант - две большие разницы. Но это не показатель, все зависит от реальной нагрузки. А тесты я проводил. Файловый вариант быстрее при определенных условиях - небольшая база (не десятки Gb) и 2-3 пользователя. Жаль результаты не сохранил. Вы подтвердили и мое мнение, это вариант для небольших компаний, 5, максимум 10 пользователей. Спасибо за ваш труд. Регулярно читаю ваши статьи.
Если не брать web доступ, то даже от 2-3 человек, работающих в файловой базе, подключенной по сети, начинаются очень сильные тормоза. Web версия ускоряет подобный режим работы, то есть по сети, но через браузер, эти же 2-3 человека могут работать более комфортно. Но, к примеру, если 1 человек работает одновременно с базой, то обычное прямое подключение будет быстрее, чем через web. При нескольких пользователей web последовательно выполняет запросы к базе и из-за этого совместная работа комфортней. При этом в любом случае, с файловой базой даже 10 человек это перебор. Работать будет медленно. Нужно на серверный вариант переходить.
у меня на такой схеме (публикация через вебсервер) не взлетают внешние обработки.. что там нужно с ними делать я не понимаю).
Я тоже не знаю, но и не сталкивался с этим. Не беру на поддержку нетиповые базы вообще. Не хочу погружаться в тему 1С. Это отдельное направление. Мне нравится только инфраструктуру настраивать.
разумный подход)
Как Вы делаете backup ? Можно поподробней - копируете *.cd или выгружаете в *.dt ? Сами скрипты меня не интересуют, важен сам принцип.
Я копирую *.cd. На моей памяти ни разу с этим проблем не испытывал, даже если люди в базе сидят, а ты копируешь файл. С выгрузкой в *.dt очень много нюансов и только на нее нельзя полагаться. Идеально так:
1. Копия файла с базой.
2. Выгрузка dt.
3. Регулярный тест базы на ошибки.
Все это не сложно реализуется через bat файлы в windows.
Владимир, а как вы в такой конфигурации управляете proxmox? Ставите на хосте vpn или выставляете его веб-интерфейс в интернет? Статья понятная и, безусловно, полезная, но я почти уверен, что заказать у того же selectel одну виртуалку с виндой и пару виртуалок с линукос было бы и проще и дешевле, чем городить огород со своим гипервизором и полноценным выделенным сервером.
Заказать готовые виртуалки однозначно проще, тут и обсуждать нечего. Я даже статью с обзором хостера делал, где ты то же самое получаешь в один клик. Просто заказываешь в личном кабинете виртуалку и базу 1С и получаешь доступ по rdp или через браузер - https://serveradmin.ru/obzor-oblachnogo-hostinga-serverspace/#Dostup_cerez_brauzer
Покупая дедик, получаешь ряд преимуществ:
1. Это дешевле за те же вычислительные ресурсы. Причем значительно дешевле, в 2-3 раза. Уточняю, что речь именно про ресурсы. Надо понимать, что настраивать и поддерживать дедик тоже денег стоит. Но на круг все равно дешевле выйдет.
2. Гарантированная производительность. В обычной виртуалке ты ее никогда не получишь. Она может работать то быстрее, то медленнее. Невозможно прогнозировать.
Proxmox обычно управляю напрямую через браузер через внешний ip адрес. На самом гипервизоре настраиваю iptables и настраиваю ограничение по ip адресам для ssh и web интерфейса proxmox. Через этот iptables настраивается и проброс портов в виртуалки. Это самый простой случай.
Если посложнее, то берется виртуалка, настраивается как шлюз для виртуальных машин и самого гипервизора. А дальше на этом шлюзе уже все делается под задачи. Может быть vpn настроен для пользователей, а может и для объединения в единую сеть с другими гипервизорами.
У Proxmox собственный ТРЕХУРОВНЕВЫЙ firewall (datacenter, host, vm),к-ый настраивается прямо в вебке.
Даже в ком строку лезть не надо и рукми крутить iptables.
А есть опыт публикации бд на линуксе ? допустим связка centos7 nginx и там публикация, быстрее будет работать если сравнивать с виндой?
Чтобы опубликовать файловую базу, нужна платформа 1с. Для ее установки надо gui на linux. Я не знаю, работает ли там публикация базы. Всегда винду использую. Так просто проще. В линуксе потом грабли собирать придется.
Не нужно GUI, достаточно пакетов 1С под Linux common, ws, и server (server нужен чисто для зависмости, демон при этом запускать не надо). Затем публиковать БД примерно так /opt/1cv8/x86_64/8.3.18.1208/webinst -publish -apache24 -wsdir SmallBusinessDemo2 -dir /var/www/SmallBusinessDemo2/ -connstr "File=""/opt/1CBases/SmallBusinessDemo2/"";" -confpath /etc/httpd/conf.d/1cbases.conf.
Можно еще так сделать - поставить только пакет ws и написать скрипт, который будет формировать 2 файла - conf и vrd, затем перезапускать веб-сервер.
Так же я на selinux не даст нормально работать - нужно либо его настроить, либо отключить.
Интересно, не знал об этом. Вы пробовали такой режим работы? Я не пробую и не ставлю 1С на Linux, чтобы не усложнять лишний раз конфигурацию. Потом трудно будет передавать все это кому-то другому. Возрастает конечная стоимость поддержки для заказчика. Сервер под виндой можно любому эникею передать в обслуживание и все.
Да, пробовал, работает, собственно пример команды для публикации выдернул из своей инструкции. Но как вы верно заметили, входной порог возрастает и любому эникею это уже не передать )
Кстати )) справедливости ради замечу, что proxmos передать любому эникею тоже не получится ))
Почему? Там как раз все просто. Управление через браузер. В общем случае его достаточно.
Ну я бы побоялся )) Одно дело кнопочки нажимать в Windows, другое дело понимать, как работает гипервизор. Но это мое имхо как говорится )
Да не, бояться нечего. Я бы как раз рекомендовал proxmox для новичков. Там реально полностью достаточно web интерфейса для простых задач. Тот же hyperv позамороченнее настраивать и разбираться с ним.
Интересен вопрос Windows-авторизации в веб-клиенте, ее каким образом и протоколами можно орагнизовать?
При публикации сталкивались с проблемами неработающего протокола Kerberos для 1С (по журналу видно, что 1С не удалется распознать логин пользователя)
Я не прорабатывал этот момент. С доменом тема не простая, особенно для удаленного доступа.
Если использовать данное решение для работы внутри сети, то лучше всего это работает в связке 1C+IIS, так как включение доменной авторизации по сводится к настройке доменной учетной записи внутри 1С для конкретного пользователя и добавлением Wndows Authentication в настройках IIS.
Вы правы, внутри сети в такой связке работает отлично
Для публикации пока работает только авторизация по 1С
А на ваш взгляд, какой веб сервер апач или ииса?
Имею ввиду лучше)
Что лучше, не знаю. Это субъективно. Тут веб сервер в интернет не смотрит, поэтому не принципиально. Я на 100% предпочитаю больше apache, так как его настраивать проще и быстрее. Все настройки в одном конфиге, при этом он такой же, как и на linux, где я с апачем постоянно работают. У меня даже не стоит такой вопрос.