Для работы с 1С сейчас не обязательно использовать Windows на сервере, можно и Linux. Более того, нет необходимости ставить и графическое окружение, если работа с базами будет по протоколу http. Я расскажу, как настроить сервер для 1С и опубликовать файловую базу на сервере Centos 8, не устанавливая саму платформу и графическое окружение. Нам понадобится только web сервер Apache и некоторые компоненты сервера приложений 1С для Linux.
Введение
Ранее я уже рассказывал, как публиковать файловые базы 1С. Схема простая и рабочая, но ее можно упростить еще больше, исключив систему Windows вообще. Все, что нужно для публикации баз 1С, есть в Linux. Рассказываю подробно, как это сделать. Вот что нам понадобится для публикации 1С баз:
- Операционная система Linux. В моем случае это будет Centos 8 или любой ее форк.
- Cервер 1С:Предприятия (64-bit) для RPM-based Linux-систем.
- Веб сервер Apache, который в rpm дистрибутивах носит имя httpd.
- Шрифты Microsoft's Core Fonts.
Собственно и все. Набор софта простой и достаточно узкий. Ничего лишнего. Отдельно не забываем про клиентские лицензии 1С. Они могут быть установлены как на сервере, так и у клиентов. В моем примере лицензии будут клиентские, так что на сервер я их устанавливать не буду. Я проверял данное решение как на аппаратных usb ключах в локальной сети, так и софтовых по одной на каждом клиенте.
Установка компонентов 1С:Предприятия на Linux
Приступаем к настройке. Первым делом нам надо скачать и установить Cервер 1С:Предприятия (64-bit) для RPM-based Linux-систем. Идем на https://releases.1c.ru и скачиваем нужную вам версию.
Передаем архив на сервер и распаковываем.
# mkdir 1c-rpm # tar -C 1c-rpm/ -xzvf rpm64_8_3_18_1289.tar.gz
Нам нужно установить только следующие компоненты:
- 1c-enterprise-8.3.18.1289-server-8.3.18-1289.x86_64.rpm
- 1c-enterprise-8.3.18.1289-common-8.3.18-1289.x86_64.rpm
- 1c-enterprise-8.3.18.1289-ws-8.3.18-1289.x86_64.rpm
Делаем это:
# cd 1c-rpm/ # dnf install 1c-enterprise-8.3.18.1289-{common,server,ws}-8.3.18-1289.x86_64.rpm
Сервер 1С предприятия установили на Centos, переходим к настройке веб сервера для публикации баз.
Настройка apache для публикации баз 1с
Нам необходимо установить непосредственно web сервер apache.
# dnf install httpd
Запустите его и убедитесь, что веб сервер работает. Для этого перейдите по ip адресу сервера в браузере. Вы должны увидеть стартовую страницу apache.
# systemctl enable --now httpd
Если страница не открывается, скорее всего у вас включен и не настроен firewalld. Откройте необходимые порты:
# firewall-cmd --permanent --zone=external --add-port=80/tcp # firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp # firewall-cmd --reload
Сразу же настроим однопоточную работу apache. Для этого открываем конфиг /etc/httpd/conf.modules.d/00-mpm.conf и добавляем туда:
StartServers 1 MinSpareThreads 1 MaxSpareThreads 1
Проверяем конфигурацию apache и перезапускаем его:
# apachectl -t # apachectl restart
У нас почти все готово к публикации баз 1С. Необходимо только установить шрифты Microsoft's Core Fonts.
Установка шрифтов Microsoft's Core Fonts в Centos
Подробная инструкция и информация по установке Microsoft's Core Fonts представлена на странице http://mscorefonts2.sourceforge.net.
# dnf install epel-release # dnf install xorg-x11-font-utils fontconfig # dnf install https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm
Все подготовительные действия сделали. Осталось опубликовать саму 1С базу.
Публикация баз 1С в Centos
В директории /opt/1cv8/x86_64 хранятся бинарники от установки 1С. С их помощью опубликуем файловую базу. Но перед этим нам надо скопировать сам файл с базой в какую-то директорию. Например, в /opt/1Cbase. Выставляем полные права на эту директорию и файлы в ней для веб сервера:
# mkdir -p /opt/1Cbase # chown -R apache. /opt/1Cbase
Так же создадим директорию для веб сервера, где будет располагаться файл для веб публикации базы:
# mkdir -p /var/www/1Cbase # chown -R apache. /var/www/1Cbase
Публикуем файловую базу:
# /opt/1cv8/x86_64/8.3.18.1289/webinst -publish -apache24 -wsdir 1cbase -dir /var/www/1Cbase -connstr "File=/opt/1Cbase;" -confpath /etc/httpd/conf/httpd.conf
Публикуем базу с сервера 1С:
# /opt/1cv8/x86_64/8.3.18.1289/webinst -publish -apache24 -wsdir 1cbase -dir /var/www/1Cbase -connstr "Srvr=1CSRV;Ref=1cbase;" -confpath /etc/httpd/conf/httpd.conf
1cbase | алиас, который нужно будет добавить к адресу сервера для доступа к этой базе |
/var/www/1Cbase | путь к публикации базы, где будет располагаться .vrd файл с описанием подключения к базе через web |
File=/opt/1Cbase; | строка подключения файловой базы |
Srvr=1CSRV;Ref=1cbase; | строка подключения серверной базы |
Если все сделали правильно, должны увидеть сообщение Publication successful.
После этого осталось только перезапустить веб сервер и идти проверять публикацию.
# apachectl restart
Если используете клиентские лицензии на компьютерах, а не на сервере, то через браузер скорее всего получите ошибку получения лицензии. В таком случае используйте установленную платформу, подключая базу через публикацию в web.
Запустится стандартная платформа, которая без проблем найдет локальную или сетевую лицензию, если она установлена.
Error when loading component 'help'
Очень распространенная ошибка, которую вы можете получить - Error when loading component 'help'.
Ее проблема в том, что текст ошибки совершенно не информативен. Но чаще всего она связана с правами доступа к файлам с базой. У вас скорее всего не стоит владельцем файла с базой веб сервер apache. Второй вариант - работает SELinux. В контексте данной задачи я не разбирался с его настройкой, поэтому просто отключал.
Во время написания статьи как раз столкнулся с проблемой SELinux, так как не заметил, что он остался включен на тестовой машине. Все перепроверил и только потом вспомнил про него. Отключил временно в консоли и сразу все заработало:
# setenforce 0
Обновление опубликованной через web базы 1с
Подключившись к опубликованной базе через web, нет возможности обновить ее. Если у вас база на сервере 1С, то это не проблема. Просто подключаетесь толстым клиентом и делаете все, что нужно. Если у вас файловая база, настроенная по предложенному в статье способу, вам нужно будет каким-то образом подключаться к ней через толстого клиента. Проще всего это сделать напрямую, через Samba.
Подойдет любой способ ее настройки. У меня есть статья - быстрая и простая настройка samba. Можете взять подходящий вам способ аутентификации и все сделать. Далее подключаетесь к файловой базе как обычно по сети толстым клиентом и обновляете ее.
Заключение
Не забудьте в таком режиме публикации 1с баз добавить побольше памяти и процессора виртуальной машине с веб сервером. Рекомендую не менее 4CPU и 8G Ram. С каждым релизом 1С хочет все больше и больше ресурсов. Еще во время тестов заметил такую вещь, что виртуалка с 1С не запрашивала больше оперативной памяти, несмотря на то, что было включено динамическое выделение. При этом все жутко тормозило и памяти явно не хватало. Пришлось отключить динамическую память и жестко задать 8G, чтобы все зашевелилось более ли менее быстро.
Для безопасности и удобства, перед Apache можно настроить Nginx в режиме proxy_pass.
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Проверьте себя на вступительном тесте и смотрите подробнее программу по ссылке.
Подскажите пожалуйста, публикую базу 1С документооборот 3.0. и через web все отлично, база загружается и пользователи логинятся, но при использовании мобильного приложения "1C документооборот МК" выдает ошибку:
HTTP: Not found
Error working with resource
../e1cib/login
Добрый день. Большое спасибо за ресурс. Очень много полезного для себя узнал.
По теме. Настроил, опубликовал базу. Открываю в браузере. Но всё что вижу, это белый экран. И заголовок страницы: 1C:Enterprise
Не подскажите, в какую сторону смотреть?
небольшое уточнение:
/opt/1cv8/x86_64/8.3.19.1351/webinst -publish -apache24 -wsdir StateAccounting -dir /web/sites/1sweb.lan/www -connstr "File=/opt/1c-db;" -confpath /etc/httpd/conf.d/1sweb.lan.conf
/opt/1cv8/x86_64/8.3.19.1351/webinst -publish -apache24 -wsdir StateAccounting -dir /web/sites/1sweb.lan/www -connstr "Srvr=IP сервера;Ref=StateAccounting;" -confpath /etc/httpd/conf.d/1sweb.lan.conf
Откройте инструменты разработчика в браузере и посмотрите. Иногда это помогает решить подобную проблему. Там может быть видна ошибка.
You cannot use this browser to work with 1C:Enterprise software
1C:Enterprise
BODY
{
margin: 0;
padding: 0;
border: 0;
font-family: 'MS Sans Serif';
color: #594304;
}
var BASE = "/bgu/ru";
var LANG = "ru";
var REDIRECT = true;
var OPENIDRELYINGPARTY = false;
var SPLASHTOPBRANDINGIMAGE = false;
var SPLASHBOTTOMBRANDINGIMAGE = false;
var HASBRANDING = false;
var EXITURL = "";
var OIDCALLOWSTANDARDAUTHENTICATION = "";
var VERSION = "8.3.19.1351"
var VENDORPREFIX = "1c.";
var ANSQUERY = undefined;
var MSGNOTSUPPORTED = "You cannot use this browser to work with 1C:Enterprise software"
К предыдушему посту
chown: invalid user: 'apache'
Получается у меня нету такого юзера, так кому должен дать права не подскажете?
В Ubuntu веб сервер работает под юзером www-data. Вот тут есть хорошее руководство по Ubuntu и 1С - https://ubuntu-admin.ru/ustanovka-i-nastrojka-1s-na-ubuntu-s-postgresql/
Спасибо
Добрый день!
Делая тоже самое только на ubuntu
И у меня там где права даете на папку выходит такая ошибка.
chown -R apache. /var/www/1Cbase
P.S.
У меня apt install apache2
так как httpd не смог поставить на убунту
Здравствуйте, возник такой вопрос поставил 1С 8.3.19-1150 , все хорошо вебморда работает и показывает картинку логина и пароля. Как я понял я базу 1C заливаю в 1Cbase, но почему то все равно пишет что базы нет или не существует? Куда хотя б копать?
Проверьте сначала не через web, а толстым клиентом, работает ли у вас база.
Привет! В статье есть один непонятный момент:
Srvr=1CSRV;Ref=1cbase; | строка подключения серверной базы
что за серверная база? откуда имя? спасибо за ответ
Это имя базы в Сервере 1С. Ее видно в консоли управления кластером.
Владимир! А есть инструкция для NGINX?
У меня просто везде последний, да и с индейцем я имел дело последний раз лет шесть назад.
Не хочется лишний раз разводить зоопарк без надобности
Для nginx я не видел модуля 1С. Я всегда на apache настраивал. Если нужен nginx, он ставится в качестве reverse proxy, а запросы все равно потом на apache уходят.
Добрый вечер! можете чуть дополнить статью и рассказать про установку сервера 1с на Centos, столкнулся с проблемой, а куда копать не пойму. на убунте все получается, а надо на centos. спасибо
Так а что не получается? Разницы принципиальной нет, что centos, что ubuntu. Отличаются только пакеты, которые ставить надо. Настройки все одинаковые.
уже в принципе разобрался. но не совсем до конца, облазил весь инет в поисках ответа, но если делать все как написано в типовых статьях, то сервер 1с не хочет стартовать на centos 8 после чистой установки. не хватает библиотек, случайно поставил пакет, где эти библиотеки были, но какие точно так и не понял, вроде что то связанно с этой "libicu", после все стартует прекрасно, если есть желание помочь разобраться, то можно на почту.
А если нужно опубликовать с ws и httpService ?
"Сразу же настроим однопоточную работу apache"
Скажите, пожалуйста, с какой целью?
Сам нашел ответ на свой же вопрос:
"модуль 1с для веб-сервера — однопоточный. Соответственно, все пользователи 1с, подключенные к этому веб-серверу, встают в единую «очередь» серверных вызовов"
А если нагородить что-то вроде: балансировщик (haproxy или тот же nginx) --> в docker-ах несколько apache-ей c web-модулем 1С слушающих на разных портах --> база данных 1С
Не уверен, что это хорошая идея для файловых баз. Web публикация хорошо страхует от одновременного изменения и блокировки одних и тех же объектов при одновременной работе нескольких пользователей в одной базе. Она все запросы выстраивает в единую очередь. Если мы запустим несколько таких очередей, то могут начаться проблемы.
Как это все будет работать с серверной базой, не знаю. Там подобных проблем с блокировкой и одновременным доступом нет. Так что возможно будет рабочее решение.
https://releases.1c.ru/ - нужен логин и пароль, без этого не скачаешь ничего
Это очевидно. А зачем вам все это настраивать, если у вас нет учетки и лицензии 1С? Все равно работать не будет.