Публикация базы данных 1С Предприятия на WEB сервере Apache
Установка 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:
соответственно в браузере мы будем набирать следующий адрес для доступа к приложению: http://nash_ip_adres/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.
Настройка веб сервера для публикации базы 1С
Запустим конфигурационную утилиту, которая внесет изменения в файл /etc/conf/httpd.conf и создаст настроечный файл default.vrd. В последующих ваших экспериментах лучше править вручную эти файлы, так как при использовании повторно данной утилитой в файле /etc/conf/httpd.conf приходилось комментировать лишнюю строку #for requests without a known для удачного запуска веб сервера.
- -wsdir – имя алиаса веб-сервера для соединения с базой, в последствии мы будем обращаться к ней набирая в браузере http://адрес.сервера/base
- -dir – директория где будут располагаться файлы web-интерфейса 1с (точнее один файл default.vrd);
- -connStr – строка соединения с базой 1с предприятия;
- -confPath – расположение конфигурационного файла web-сервера apache.
Задаем владельца для файла default.vrd:
Перезагрузим сервера 1с и апач:
Убедимся, что все сервисы (daemon, rmngr, rphost) удачно стартовали:
Установка 1С 8.3 в файловом варианте на CentOS 7.3 и публикация базы через WEB сервер APACHE
В данной статье мы рассмотрим установку, настройку и оптимизацию программы 1С 8.3 на сервере CentOS 7
Установка будет производиться на CentOS-7-Minimal
На фаерволе должен быть открыт 80 порт TCP
Сервер должен быть настроен на корректную синхронизацию времени
Для начала установим необходимые репозитории и пакеты:
yum -y install epel-release
yum -y install wget zip unzip ntp httpd
yum -y install curl cabextract libgsf ImageMagick policycoreutils-python ImageMagick.i686 unixODBC
Далее установим необходимые для работы 1С шрифты:
rpm -i https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm
Скачиваем с сайта 1С сервер 1С:Предприятия (64-bit) для RPM-based Linux-систем в папку /tmp
Далее устанавливаем сервер 1С Предприятие:
cd /tmp
yum localinstall *.rpm
Файловые базы храним в папке /home/1c
Даём необходимые права на папки:
chown -R apache:apache /opt/1C
chown -R apache:apache /var/www/html
chown -R apache:apache /home/1c
Разрешаем необходимые сервисы:
systemctl enable httpd
Далее публикуем базу 1С:
cd /opt/1C/v8.3/x86_64
./webinst -apache24 -wsdir base -dir ‘/var/www/html/base/’ -connStr ‘File=»/home/1c/base/»‘ -confPath /etc/httpd/conf.d/base.conf
Где:
-dir — путь к папке вебсервера
-connStr — путь к расположеныю файловой базы 1С
-confPath — путь к файлу конфигурации вебсервера (файл должен быть предварительно создан и быть пустым!)
Для корректной работы 1С должна быть установлена политика SELinux:
Создайте файл httpd_1c.te со следующим содержимым:
module httpd_1c 1.0;
#. This avc is allowed in the current policy
allow httpd_t httpd_sys_content_t:file write;
#. This avc is allowed in the current policy
allow httpd_t user_home_t:dir < add_name create read remove_name rmdir write >;
allow httpd_t user_home_t:file rename;
#. This avc is allowed in the current policy
allow httpd_t user_home_t:file < create lock open read setattr unlink write >;
#. This avc can be allowed using the boolean ‘httpd_tmp_exec’
allow httpd_t httpd_tmp_t:file execute;
Далее, сомпилируйте и установите политику:
checkmodule -M -m -o httpd_1c.mod httpd_1c.te
semodule_package -o httpd_1c.pp -m httpd_1c.mod
semodule -i httpd_1c.pp
Запускаем сервер Apache:
systemctl start httpd
Теперь 1С доступна в браузере по адресу http://example.ru/base
Или через тонкий клиент 1С по тому же адресу.
Для оптимизации работы 1С рекомендуется произвести дополнительный тюнинг системы:
Создадим временную папку в оперативной памяти, для этого добавим строчку fstab:
vi \etc\fstab
tmpfs /tmp tmpfs size=1g,nr_inodes=200k,mode=01777,nosuid,nodev 0 0
И отредактируем файл default.vrd
vi /var/www/html/base/default.vrd
добавив после строки base=»/base» строку:
temp=»/tmp/sc»
после чего перегрузим сервер командой reboot.
После этих манипуляций, сервер Apache будет создавать временные папки не в папке базы 1С, а в папке /tmp
Для обновления платформы 1С скачиваются новые файлы сервера 1С:Предприятия (64-bit) для RPM-based Linux-систем в папку /tmp и выполняется команды:
cd /tmp
rpm -U *.rpm
Если у вас возникли какие либо вопросы, вы можете обратиться к нам и мы произведём весь комплекс работ по поставке аппаратного и программного обеспечения и запуску 1С.
Публикация информационной базы и веб сервисов на Apache2 в CentOS
Данная статья не претендует на оригинальность и не является конечным решением. Подходы решения задач и их примеры несут исключительно обучающий характер. |
Сколько бы ни было написано статей на тему работы 1С и Linux, никогда не поздно написать еще одну!
- Сервер на CentOS 7, тут про него писал;
- Платформа 8.3.12.1714;
- Пустая база на БСП;
- Всякие утилиты для работы по SSH: PuTTY и FileZilla.
Все выше у меня уже было установлено, настроено и стабильно работало. Теперь сразу перейдем к установке и настройке веб сервера Apache2.
Установим apache2 и выполним предварительные приготовления:
Теперь нам нужно подготовить файл VRD для публикации. Вот как его получить:
- Открыть Конфигуратор 1С (можно на windows);
- Открыть меню Администрирование -> Публикация на веб сервере;
- Если выдал ошибку, что нет модуля для веб сервера, значит переустановить клиент 1С и выбрать модуль для работы с веб сервером (доступен для выбора в полном дистрибутиве платформы);
- Соглашаемся с тем, что написано;
- Перед нами открываться окно, где галочками можно выбрать, что публикуем; Я выбрал все;
- Жмем Сохранить;
- Сохраняем файл default.vrd себе на диск.
Полученный файл нужно скорректировать в текстовом редакторе (правильно указать имя базы и заменить адрес сервера на localhost):
Подробнее про Apache2 на CentOS 7:
- Проверить установленную версию можно следующей командой: $ httpd -V
- Версия, которая поставилась по умолчанию — «Server version: Apache/2.4.6 (CentOS)» (12.05.2019)
- Папка для сайтов и прочего контента публикации: «/var/www»
- Корневая директория веб сервера: «/var/www/html» (если закинуть сюда html файл, то он будет доступен по имени через слеш от имени хоста в браузере)
- Папка с настройками: «/etc/httpd»
- Путь к httpd.conf: «/etc/httpd/conf/httpd.conf» — менять сам файл для публикации 1С не нужно!
- Путь к конфигурационным файлам: «/etc/httpd/conf.modules.d» — именно тут и добавим файл .conf для загрузки модуля 1C в apache2.
Подробнее о стандартной утилите 1С для публикации в Linux (webinst):
- Корневая папка: «/opt/1C/v8.3/x86_64» — собственно там, где и вся платформа;
- Имя исполняемого файла: «webinst»;
- Аргументы:
- -apache24 — без значения, передает версию веб сервера;
- -wsdir 1СDB_test1 — имеет значение 1СDB_test1, передает адрес, по которому база будет доступна по HTTP, пример: http://centos-s-1vcpu/1CDB_test1/ru_RU/ или http://публичный IP сервера/1CDB_test1/ru_RU/
- -dir /var/www/1c-web/1CDB_test1/ — имеет значение, папка куда положить сгенерированный default.vrd;
- -connstr «Srvr=localhost;Ref=1CDB_test1; — имеет значение, привычная всем строка соединения;
- -confPath /etc/httpd/conf.modules.d/00-1c.conf — имеет значение, конфигурационный файл httpd, но мы не будем менять стандартный, мы просто создадим еще один, а веб сервер подтянет его сам!
Собственно что webinst прописывает в файл .conf:
И файл /var/www/1c-web/1CDB_test1/default.vrd по умолчанию:
После работы с webinst бестолковый файл /var/www/1c-web/1CDB_test1/default.vrd можно заменить на тот, который мы сохранили с конфигуратора. Для этого поможет FileZilla.
Заменили файл, прекрасно! Запустим сервер httpd:
Теперь можно переходить по адресу, где опубликована база, и если на сервере установлена программная лицензия, то она откроется в веб клиенте. Если добавить базу в тонкий клиент 1С по http — тоже откроется.
Если в конфигруаторе, на форме публикации, пред сохранением файла VRD выбрали веб и http сервисы, они также будут доступны.
Также если мы опубликовывали веб сервисы они тоже будут доступны.
Настройка CentOS 7 для сервера 1С 8.3
После установки CentOS 7 приступим к ее настройке.
Для настройки системы воспользуемся подключением по SSH используя клиент PuTTy или другой SSH клиент.
Начальная настройка CentOS 7
Так как CentOS 7 у нас гостевая ОС ESXi 6.5, то нужно установить VMware tools:
Для дальнейшего удобства установим файловый менеджер Midnight Commander:
В CentOS 7 minimal все утилиты, такие как dig, host, nslookup, теперь включены в пакет bind-utils, поэтому установим этот пакет:
меняем значение SELINUX=enforcing на SELINUX=disabled . Сохраняем и выходим.
Для вступления изменений в силу перезагрузим ОС:
Настройка сетевого интерфейса сервера
Сервер 1С:Предприятие будет находится в пределах локальной сети и его вполне можно использовать с отключенным файрволом без большой угрозы безопасности.
Отключаем firewalld:
В файле /etc/hosts не должно быть записей формата localhost.localdomian или относящихся к IPv6, в случае отсутствия DNS-сервера, в нем должно быть прописано четкое соответствие IP-адрес сервера – FQDN имя – короткое имя. Пример правильного файла hosts:
127.0.0.1 localhost
192.168.xxx.yyy SERVER_NAME.DOMAIN.LOCAL SERVER_NAME
Что бы новые параметры вступили в силу нужно перезагрузить сервер.
После перезагрузки имя сервера должно разрешаться в IP-адрес.
Подключение репозиториев
Для инсталляции различных пакетов ПО необходимо подключить репозитории в CentOS. Добавим популярный EPEL:
Настройка и синхронизация времени
Настроим время сервера. Узнать, какое время на сервере можно с помощью команды date:
Чтобы сменить часовой пояс на +3, воспользуемся специальной утилитой, которая входит в комплект CentOS 7:
Установим утилиту для синхронизации времени chrony:
Запускаем chrony и добавляем в автозагрузку:
Установка дополнительных пакетов
Добавим несколько полезных утилит, которые могут пригодиться в процессе эксплуатации сервера.
iftop показывает в режиме реального времени загрузку сетевого интерфейса:
Установим также необходимые пакеты отсутствующие в поставке:
Скачиваем необходимые шрифты и устанавливаем их:
Публикация общей папки
Для удобства установим Samba и добавим в автозагрузку:
Далее создадим папку, к которую дадим общий доступ и настроим Samba:
Настроим Samba внеся в smb.conf следующий текст:
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = Server1C
security = user
map to guest = bad user
dns proxy = no
guest account = nobody
browseable = yes
log file = /var/log/samba/log.%m
max log size = 50
comment = FS
path = /home/public
readonly = no
guest ok = yes
public = yes
guest only = yes
writable = yes
Добавляем Samba в автозагрузку:
Если не отключать Firewall, то нужно добавить следующие правила:
Установка веб сервера
Для работы сервисов, имеющих веб интерфейс, установим веб сервер Apache:
Добавляем apache в автозагрузку:
Запускаем apache в CentOS 7:
Проверяем, запустился ли сервер:
Установим популярные модули для php:
Выполним перезапуск apache:
Базовая настройка CentOS 7 закончена
Поделиться ссылкой:
Похожее
Настройка CentOS 7 для сервера 1С 8.3: 13 комментариев
Скажите. Вы когда-нибудь пробовали на такой связке формировать этикетки со штрих кодами. Интересуют управляемые формы. Суть в том, что на сервере нужна компонента, которая «нарисует» штрих код и отправит его клиенту. Такой компоненты там нет, и при попытке распечатать любой ШК клиенту выйдет сообщение об ошибке «Ошибка подключения компоненты».
В случае сервера на винде там все понятно, а вот под центом не могу найти где взять эту компоненту и как ее поставить.
Нет, не пробовал. У меня на данный момент похожая проблема с криптопровайдером. Под линуксом криптопровайдер не цепляется, тоже вываливается ошибка подключения динамической библиотеки. Я не уверен, но в Вашем случае скорее всего проблема подключения COM объектов, которые, как я понял, не поддерживаются в Linux. Возможно надо найти обработчик под CentOS.
День добрый.
Решили проблему с криптопровайдером?
Нет, забил. В итоге из-за ЭДО пришлось сервер 1с выносить отдельно на виртуальную машину с windows 10 с более частотным процессором
А что конкретно не работало? 1С отчетность для сдачи в ФНС ФСС и прочее или что-то свое?
Да, 1С отчетность. Мне нужно было чтобы сервер раздавал эцп, чтобы сотрудники не имели физ доступа к ней, но не сложилось
Добрый день.
Для чего служат пакеты из команды
yum install policycoreutils-python wget bzip2 ntp net-tools unixODBC ImageMagick fontconfig-devel ?
Как определили их необходимость?
policycoreutils-python — инструменты для работы с selinux, но selinux обычно отрубают;
wget — консольный менеджер загрузок, в статье используется для скачивания файла;
bzip2 — консольный архиватор;
ntp — сервер времени, думаю не нужен так как установлен chrony;
net-tools — сетевые утилиты например ifconfig;
unixODBC — компоненты для доступа к данным на основе ODBC, если нужно выгрузить/загрузить данные в сторонние базы не обязательно 1С;
ImageMagick — набор инструментов для работы с изображениями, нужен в тонком клиенте и наверно в web тоже;
fontconfig-devel — для работы со шрифтами, в данном случае с майкрософтовскими.
В целом статья полезна, сам настраиваю таким способом.
Да, 1С отчетность. Мне нужно было чтобы сервер раздавал эцп, чтобы сотрудники не имели физ доступа к ней, но не сложилось
Создаётся впечатление, что все авторы, описывающие установку CentOS в качестве сервера, не владеют ситуацией. Первое, что они предлагают, отключить SELinux и Firewall. А слабо, настроить SELinux? А где открытие портов? Для работы в с ОС Windows, коих подавляющее большинство в сетях, нужна Samba, а для её работы необходимо открыть порты 137, 138, 139, 443 и 445. Для возможности соединения с сервером, через Web интерфейс, необходимо открыть порт 80. Для удалённого управления сервером необходимо настроить SSH, а для исключения возможности несанкционированного доступа к серверу, поменять порт SSH, или на худой коней открыть порт по умолчанию и сформировать надёжный пароль, или доступ по публичному ключу. Где все это. Я даже на домашнем сервере всё это проделал и не отключал SELinux, а настроил её, включил разрешения для работы Samba и SSH, но только те, которые используются в домашней сети.
Спасибо за комментарий. Вы правы, мне этот «блог» нужен для того что бы инфа, которую я собрал в инете была под рукой и эти инструкции делал прежде всего для себя, естественно после успешного внедрения, и если здесь нет инфы о настройке защиты, значит я не нашёл нормальную инструкцию, а сам я ни разу не линуксоид. Да и в моем случае это работает в закрытом контуре сети, поэтому не стал разбираться с защитой. Если дополните будет очень хорошо!
Соглашусь. Если сервер работает только внутри сети и не смотрит наружу, то смысла настраивать все порты и SE не вижу. Больше мороки.
По моему я где-то написал, что не настраивал защиту по причине работы сервера в закрытой сети