Home » 1C » Публикация баз 1С в Centos без графического окружения

Публикация баз 1С в Centos без графического окружения

Для работы с 1С сейчас не обязательно использовать Windows на сервере, можно и Linux. Более того, нет необходимости ставить и графическое окружение, если работа с базами будет по протоколу http. Я расскажу, как настроить сервер для 1С и опубликовать файловую базу на сервере Centos 8, не устанавливая саму платформу и графическое окружение. Нам понадобится только web сервер Apache и некоторые компоненты сервера приложений 1С для Linux.

Если у вас есть желание научиться администрировать системы на базе Linux, рекомендую познакомиться с онлайн-курсом «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Подробная информация.

Введение

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

  1. Операционная система Linux. В моем случае это будет Centos 8 или любой ее форк.
  2. Cервер 1С:Предприятия (64-bit) для RPM-based Linux-систем.
  3. Веб сервер Apache, который в rpm дистрибутивах носит имя httpd.
  4. Шрифты Microsoft's Core Fonts.

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

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

Приступаем к настройке. Первым делом нам надо скачать и установить Cервер 1С:Предприятия (64-bit) для RPM-based Linux-систем. Идем на https://releases.1c.ru и скачиваем нужную вам версию.

Скачать Cервер 1С:Предприятия (64-bit) для RPM-based Linux-систем

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

# 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С:Предприятия на Linux

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

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

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

# dnf install httpd

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

# systemctl enable --now httpd

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

Если страница не открывается, скорее всего у вас включен и не настроен 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

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

Все подготовительные действия сделали. Осталось опубликовать саму 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.

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

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

# apachectl restart

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

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

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

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

Error when loading component 'help'

Очень распространенная ошибка, которую вы можете получить - 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.

Если у вас есть желание научиться администрировать системы на базе Linux, но вы с ними никогда не работали и не знакомы, то рекомендую начать с онлайн-курса «Linux для начинающих» в OTUS. Курс для новичков, для тех, кто с Linux не знаком. Цена за курс минимальная (символическая). Информация о курсе и цене.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

28 комментариев

  1. Максим

    Добрый день! Я правильно понимаю, что при такой архитектуре придется использовать однопользовательские лицензии 1с? Успешно опубликовал файловую базу по приведенной выше статье. При первом подключении толстым клиентом появляется окно активации программы. При правильном заполнении всех полей программная лицензия привязывается к машине, на которой запущен толстый клиент, а не к серверу с БД. Получится ли сделать так, чтобы использовалась одна многопользовательская лицензия, привязанная к серверу? Спасибо.

    • Я все нюансы не помню, но веб сервер на каждое подключение использует одну пользовательскую лицензию. Какая она будет вроде бы не принципиально. Последний раз помню, использовал обычные софтовые лицензии на сервере. А толстый клиент разве по web работает? Для этого используется либо браузер, либо тонкий клиент.

      • Максим

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

        • Так Вы через расшаренную папку подключаетесь не через веб сервер, поэтому тратится лицензия толстого клиента на компьютере пользователя. Чтобы веб сервер использовал софтовую лицензию, установленную на сервере, надо и подключаться через веб к опубликованной базе.

  2. Сергей

    Подскажите пожалуйста, публикую базу 1С документооборот 3.0. и через web все отлично, база загружается и пользователи логинятся, но при использовании мобильного приложения "1C документооборот МК" выдает ошибку:
    HTTP: Not found
    Error working with resource
    ../e1cib/login

  3. Александр

    Добрый день. Большое спасибо за ресурс. Очень много полезного для себя узнал.
    По теме. Настроил, опубликовал базу. Открываю в браузере. Но всё что вижу, это белый экран. И заголовок страницы: 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"

  4. К предыдушему посту
    chown: invalid user: 'apache'
    Получается у меня нету такого юзера, так кому должен дать права не подскажете?

  5. Добрый день!
    Делая тоже самое только на ubuntu
    И у меня там где права даете на папку выходит такая ошибка.
    chown -R apache. /var/www/1Cbase

    P.S.
    У меня apt install apache2
    так как httpd не смог поставить на убунту

  6. Здравствуйте, возник такой вопрос поставил 1С 8.3.19-1150 , все хорошо вебморда работает и показывает картинку логина и пароля. Как я понял я базу 1C заливаю в 1Cbase, но почему то все равно пишет что базы нет или не существует? Куда хотя б копать?

  7. Ингвар

    Привет! В статье есть один непонятный момент:

    Srvr=1CSRV;Ref=1cbase; | строка подключения серверной базы

    что за серверная база? откуда имя? спасибо за ответ

  8. Николай

    Владимир! А есть инструкция для NGINX?
    У меня просто везде последний, да и с индейцем я имел дело последний раз лет шесть назад.
    Не хочется лишний раз разводить зоопарк без надобности

    • Для nginx я не видел модуля 1С. Я всегда на apache настраивал. Если нужен nginx, он ставится в качестве reverse proxy, а запросы все равно потом на apache уходят.

  9. Добрый вечер! можете чуть дополнить статью и рассказать про установку сервера 1с на Centos, столкнулся с проблемой, а куда копать не пойму. на убунте все получается, а надо на centos. спасибо

    • Так а что не получается? Разницы принципиальной нет, что centos, что ubuntu. Отличаются только пакеты, которые ставить надо. Настройки все одинаковые.

      • уже в принципе разобрался. но не совсем до конца, облазил весь инет в поисках ответа, но если делать все как написано в типовых статьях, то сервер 1с не хочет стартовать на centos 8 после чистой установки. не хватает библиотек, случайно поставил пакет, где эти библиотеки были, но какие точно так и не понял, вроде что то связанно с этой "libicu", после все стартует прекрасно, если есть желание помочь разобраться, то можно на почту.

  10. Аноним

    А если нужно опубликовать с ws и httpService ?

  11. "Сразу же настроим однопоточную работу apache"
    Скажите, пожалуйста, с какой целью?

    • Сам нашел ответ на свой же вопрос:
      "модуль 1с для веб-сервера — однопоточный. Соответственно, все пользователи 1с, подключенные к этому веб-серверу, встают в единую «очередь» серверных вызовов"

      А если нагородить что-то вроде: балансировщик (haproxy или тот же nginx) --> в docker-ах несколько apache-ей c web-модулем 1С слушающих на разных портах --> база данных 1С

      • Не уверен, что это хорошая идея для файловых баз. Web публикация хорошо страхует от одновременного изменения и блокировки одних и тех же объектов при одновременной работе нескольких пользователей в одной базе. Она все запросы выстраивает в единую очередь. Если мы запустим несколько таких очередей, то могут начаться проблемы.

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

  12. Дмитрий

    https://releases.1c.ru/ - нужен логин и пароль, без этого не скачаешь ничего

    • Это очевидно. А зачем вам все это настраивать, если у вас нет учетки и лицензии 1С? Все равно работать не будет.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar