FreeBSD + 1C 8.3 x86_64

FreeBSD (11.2/12.0/13.0) + 1C 8.3 Server x64 + 1CWebAdmin - без проблем


    Приветствую уважаемые читатели! В данной статье хочу предложить простейший способ установки 1С 8.x Сервер! По поводу PostgreSQL 1C v10 было написано ранее в статье Смотрим здесь

ПРЕДИСЛОВИЕ:
    Немного предисловия почему из коробки не работает 1С 8.3 на FreeBSD, кому не интересно могут перейти сразу к установке!
Ранее была замечательная статья по запуску 1С 8.1 сервера под FreeBSD 1С:Предприятие 8.1 + PostgreSQL на FreeBSD, рецепт действительно работал. Но с версией FreeBSD 11x + 1C 8.3 работать перестало. Почему же не работает? Ведь есть статья  1C 8.3 + FreeBSD 11.2 = черновик? Дело в том, что эта статья видать пиар и так работать не должно, мы раскажем почему, а ну и далее все же как сделать что бы работало! И так дело в том, что с версии FreeBSD 11.x linux_base теперь не Fedora а CentOS - linux_base-c6/7. Казалось бы и что? Да то, что в новых версиях Linux к примеру функции getaddrinfo и getifaddrs сейчас используют системные вызовы netlink вместо ранее использованных ioctl, а ведь linuxator во FreeBSD эмитируется ioctl и не знает про netlink ничего. Т.е. ранее 1С использовала ioctl теперь это netlink. К примеру если в linux пространстве под FreeBSD запустить hostname -I то мы получим сообщение not suported protocol хотя в centos она покажет  ip адрес не обращаясь к /etc/hosts и работает это через netlink. Конечно все дело в glibc и можно скомпилировать изменив getaddrinfo.c на  ioctl вызовы и эта проблема решится и 1С запустится без проблем. Но есть еще одна вещь это когда вы войдете в менеджер кластеров 1С либо через клинское приложение и попытаетесь создать новую базу получив следующую ошибку:

v8stg://c:/1/FileStorage': ./src/storage.cpp ...



Происходит это как не странно тоже из за множества системных вызовов к ядру. Которые в свою очередь работают не так как хочет 1С. В последствие чего 1с не может создавать временные файлы tmp по причине не правильного ответа от ядра. Вот почему и ошибка связанна с  1/FileStorage! Означает это мол ошибка в  файле /tmp/v8xxxx1.tmp.




 
Что же делать любителям проверенной и хорошо отточенной по стандарту POSIX ОС FreeBSD? Ну переписать вызовы к ядру и конечно скомпилировать изменив netlink на ioctl на данный момент библиотеку glibc 2.17 для centos7 к примеру! Или же выбрать способ по проще и мы раскачаем простейший способ запуска данной связки FBSD+1C82/3xx так же легко как и в Linux вот только на FreeBSD.

УСТАНОВКА:

    И так поехали!    
Первым делом смотрим нашу редакцию FreeBSD либо HardenedBSD: 
# uname -rsU
FreeBSD 12.0-RELEASE 1200084

Обновим репозитории:

# pkg update -f

Если вам нужна последняя версия 1С то скачиваем с репозитория kcs либо можете установить собственный скаченные с сайта 1С дистрибутивы с нужной вам версией. Но после установки пакета kcsmod-1cv8server-1.0.txz.

Далее скачиваем бинарный файл  kcsmod-1cv8server-1.0.txz от сюда и устанавливаем, в моем случае под 12.0:

# mkdir -p /var/cache/pkg 2>/dev/null

# fetch --no-verify-peer --no-verify-hostname -o /var/cache/pkg/ https://repo.kazcybersystems.kz/distfiles/finance/FBSD-12-amd64/kcsmod-1cv8server-1.0.txz

устанавливается с коробки на данный момент 1с 8.3 сервер 1644

# pkg install /var/cache/pkg/kcsmod-1cv8server-1.0.txz

Для наглядности сделаем пока заплатку:

# cat<<EOF>/compat/linux/bin/hostname
echo <ip системы> `hostname`
EOF
# chmod +x /compat/linux/bin/hostname



Проверим:

# ls /compat/linux/opt/1C/v8.3/x86_64/ragent 
/compat/linux/opt/1C/v8.3/x86_64/ragent

Грузим пока стандартные модули linux:

# kldload linux linux64 linprocfs linsysfs fdescfs pty

# kldstat | egrep "lin|fdescfs|pty"
22    5 0x0 3308     linux_common.ko23    1 0x0 31b10    linux64.ko24    1 0x0 37850    linux.ko25    1 0x0 48b4     linprocfs.ko26    1 0x0 1a1d     linsysfs.ko
27    1 0x0 1a48     fdescfs.ko29    1 0x0 519      pty.ko

При монтируем псевдофайловые системы в /compat/linux:

# mount -t linprocfs /proc /compat/linux/proc
# mount -t linsysfs /sys /compat/linux/sys
# mount -t devfs devfs /compat/linux/dev
# mount -t fdescfs fdescfs /compat/linux/dev/fd

удалим /compat/linux/etc/hosts и проверим, и запустим:

# sysrc srv1cv83_enable="YES"
# rm -Rfv /compat/linux/etc/hosts
/compat/linux/etc/hosts
# service srv1cv83 start
Starting srv1cv83. :9349
# service srv1cv83 status
Running service. srv1cv83_ras: 4026Running service. srv1cv83: 93495
# ps aux | grep compatusr1cv8   4026   7.4  0.9  789392 34296  -  S    06:31       0:00.12 /compat/linux/opt/1C/v8.3/x86_64/ras clusterusr1cv8  93495   5.6  0.9  323216 37132  -  S    06:31       0:00.14 /compat/linux/opt/1C/v8.3/x86_64/ragentroot     65803   0.0  0.1    6660  2440  0  R+   06:31       0:00.00 grep compat

Как мы видим 1С не запустилась, т.е. rphost и rpmngr отсутствует, а далее ragent падет до конца! И причина тому gibc который идет в коробке с linux_base-c7, а так же который хочет netlink вызовы.

Отучаем glibc от вредной привычки netlink и не забываем выбрать версию для своей редакции ОС с репозитория KCS:

# fetch --no-verify-peer --no-verify-hostname -o /var/cache/pkg/ \
https://repo.kazcybersystems.kz/distfiles/emulators/FBSD-12-amd64/kcslin-addons-1.0.txz/var/cache/pkg//kcslin-addons-1.0.txz         100% of 2100 kB   10 MBps 00m00s
# pkg install /var/cache/pkg/kcslin-addons-1.0.txz
Updating FreeBSD repository catalogue...FreeBSD repository is up to date.All repositories are up to date.Checking integrity... done (0 conflicting)The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED: kcslin-addons: 1.0
Number of packages to be installed: 1
The process will require 7 MiB more space.
Proceed with this action? [y/N]: y[1/1] Installing kcslin-addons-1.0...Extracting kcslin-addons-1.0: 100%

и попробуем еще раз:

# service srv1cv83 start
Starting srv1cv83. :6777
# service srv1cv83 status
Running service. srv1cv83_ras: 16051Running service. srv1cv83: 6777# ps aux | grep compat
usr1cv8  57558   5.8  4.4 1353904 175496  -  I    06:16       0:08.27 /compat/linux/opt/1C/v8.3/x86_64/rphost -range 1560:1591 -reghostusr1cv8  18792   0.1  2.4 1510008  95684  -  I    06:16       0:02.34 /compat/linux/opt/1C/v8.3/x86_64/rmngr -port 1541 -host sigma -rausr1cv8   6777   0.0  1.0  886068  39832  -  I    06:16       0:00.51 /compat/linux/opt/1C/v8.3/x86_64/ragentusr1cv8  16051   0.0  0.9  789436  34392  -  I    06:16       0:00.12 /compat/linux/opt/1C/v8.3/x86_64/ras cluster

Радуемся 1С сервер запустился и даже можно подключиться через кластер менеджер и увидеть кластер! Но посмотреть список соединений и конечно же  создать базу не получится:
При создании выйдет ошибка: v8stg://c:/1/FileStorage': ./src/storage.cpp ... В интернете по данной ошибки ничего вменяемого нет, мы знаем лишь, что 1с не может создавать правильно временные файлы! И виной всему системные вызовы. Казалось бы ставим крест и миссия не выполнима. Но оказалось существует компания в дебрях "KCS `KazCyberSystems`"  которая фанатично занимается портированием фичей для FreeBSD и HardenedBSD.
Про остальные фичи такие как рабочий vlan trunk filter in BSD - модуль netgraph -a, mydlp под FreeBSD и т.д. мы напишем чуточку по позже! Единственно, что какие то фичи бесплатны какие то платные. И в нашем случае потребуется модули linux с нужными системными вызовами и есть они у данной компании и стоят 20$ , но обрадовало что в придачу они дают webadmin1C.
    Если как и нас - вас не смущает покупка за 20$ дабы получить рабочие модули под 1С для FreeBSD то поехали дальше.
Останавливаем 1С сервер и выгружаем стандартные модули:

# service srv1cv83 stop
# kill -9 `ps aux | grep /compat | awk '{ printf $2 " "}'`
# umount -f /compat/linux/proc
# umount -f /compat/linux/sys
# umount -f /compat/linux/dev
# umount -f /compat/linux/dev/fd
#
kldunload linprocfs linsysfs linux linux64 linux_common

Убедимся что все в порядке:

# kldstat | egrep "lin|fdescfs|pty"
29    1                0x0      519 pty.ko30    1                0x0     1a48 fdescfs.ko# df -h | grep /compat# 

Видим что все ок! Качаем дальше kcslin-kmod-1.0.txz соответсвующей вашей редакцией ОС. В моем случае каманда следующая:

# fetch --no-verify-peer --no-verify-hostname -o /var/cache/pkg/ \
https://repo.kazcybersystems.kz/distfiles/emulators/FBSD-12-amd64/kcslin-kmod-1.0.txz
/var/cache/pkg//kcslin-kmod-1.0.txz           100% of  110 kB   19 MBps 00m00s

Ну и установка:

# pkg install /var/cache/pkg/kcslin-kmod-1.0.txz
Updating FreeBSD repository catalogue...FreeBSD repository is up to date.All repositories are up to date.Checking integrity... done (0 conflicting)The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED: kcslin-kmod: 1.0
Number of packages to be installed: 1
Proceed with this action? [y/N]: y
[1/1] Installing kcslin-kmod-1.0...Extracting kcslin-kmod-1.0: 100%

далее добавим в rc.conf следующие строчки:

# sysrc kld_list="/boot/modules/kcs/linux_common.ko /boot/modules/kcs/linux.ko \
/boot/modules/kcs/linux64.ko /boot/modules/kcs/linprocfs.ko \
/boot/modules/kcs/linsysfs.ko fdescfs pty"
linux64 linux64 -> /boot/modules/kcs/linux_common.ko /boot/modules/kcs/linux.ko /boot/modules/kcs/linux64.ko /boot/modules/kcs/linprocfs.ko /boot/modules/kcs/linsysfs.ko fdescfs pty 

Если у вас ранее добавлены модули linux в loader.conf то запрещаем их:

# sysrc -f /boot/loader.conf linux_load="NO" linux64_load="NO" linux_common_load="NO" linprocfs_load="NO"
linux_load: YES -> NOlinux64_load: YES -> NOlinux_common_load: YES -> NOlinprocfs_load: YES -> NO

Пробуем грузить модули :

# kldload /boot/modules/kcs/linux_common.ko /boot/modules/kcs/linux.ko \
/boot/modules/kcs/linux64.ko /boot/modules/kcs/linprocfs.ko \
/boot/modules/kcs/linsysfs.ko fdescfs pty
kldload: an error occurred while loading the module. Please check dmesg(8) for more details.kldload: an error occurred while loading the module. Please check dmesg(8) for more details.kldload: an error occurred while loading the module. Please check

видим что какие то модули не загрузились. Все в порядке это коммерческие модули. Если глянуть dmesg то можно увидеть что дело в лицензиях!

# dmesg
Trying to mount root from zfs:zroot/ROOT/default []...Root mount waiting for: usbus0uhub0: 12 ports with 12 removable, self poweredrandom: unblocking device.em0: link state changed to UPERROR: LICENSE NOT FOUNDERROR: LICENSE NOT FOUNDmodule_register_init: MOD_LOAD (linuxelf, 0xffffffff82833570, 0) error 1ERROR: LICENSE NOT FOUNDERROR: LICENSE NOT FOUNDmodule_register_init: MOD_LOAD (linuxelf, 0xffffffff82833570, 0) error 1ERROR: LICENSE NOT FOUNDERROR: LICENSE NOT FOUNDmodule_register_init: MOD_LOAD (linux64elf, 0xffffffff828318c0, 0) error 1

Идем дальше и не паримся. Качаем не посредственно от сюда kcsweb-1cv8admin-1.0.txz Веб админку для кластеров 1С и устанавливаем. (Не забываем выбирать свою редакцию в дереве):

# fetch --no-verify-peer --no-verify-hostname -o /var/cache/pkg/ \
https://repo.kazcybersystems.kz/distfiles/www/FBSD-12-amd64/kcsweb-1cv8admin-1.0.txz/var/cache/pkg//kcsweb-1cv8admin-1.0.txz      100% of   26 MB 4789 kBps 00m06s
# pkg install /var/cache/pkg/kcsweb-1cv8admin-1.0.txz
Updating FreeBSD repository catalogue...FreeBSD repository is up to date.All repositories are up to date.The following 2 package(s) will be affected (of 0 checked):
New packages to be INSTALLED: kcsweb-1cv8admin: 1.0 sudo: 1.8.26
Number of packages to be installed: 2
The process will require 51 MiB more space.686 KiB to be downloaded.
Proceed with this action? [y/N]: y[1/2] Fetching sudo-1.8.26.txz: 100%  686 KiB 351.0kB/s    00:02    Checking integrity... done (0 conflicting)[2/2] Installing sudo-1.8.26...Extracting sudo-1.8.26: 100%[1/2] Installing kcsweb-1cv8admin-1.0...===> Creating groups.Using existing group 'www'.===> Creating usersUsing existing user 'www'.[1/2] Extracting kcsweb-1cv8admin-1.0: 100%

А так же доставим мод для apache24 опять же с этого сайта и под свою редакцию FREEBSD kcsweb-apache24-1.0.txz:

# fetch --no-verify-peer --no-verify-hostname -o /var/cache/pkg/ \
https://repo.kazcybersystems.kz/distfiles/www/FBSD-12-amd64/kcsweb-apache24-1.0.txz/var/cache/pkg//kcsweb-apache24-1.0.txz       100% of 1668  B 8487 kBps 00m00s
# pkg install /var/cache/pkg/kcsweb-apache24-1.0.txz
Updating FreeBSD repository catalogue...FreeBSD repository is up to date.All repositories are up to date.The following 15 package(s) will be affected (of 0 checked):
New packages to be INSTALLED: kcsweb-apache24: 1.0 apache24: 2.4.37 libnghttp2: 1.35.1 expat: 2.2.6_1 pcre: 8.42_1 apr: 1.6.5.1.6.1_1 gdbm: 1.18.1 db5: 5.3.28_7 mod_php72: 7.2.13 libargon2: 20171227_1 php72: 7.2.13 php72-json: 7.2.13 php72-posix: 7.2.13 php72-sqlite3: 7.2.13 sqlite3: 3.26.0
Number of packages to be installed: 15The process will require 121 MiB more space.25 MiB to be downloaded.
Proceed with this action? [y/N]: y
[1/15] Fetching apache24-2.4.37.txz: 100%    5 MiB 518.7kB/s    00:10    [2/15] Fetching libnghttp2-1.35.1.txz: 100%  111 KiB 113.7kB/s    00:01    [3/15] Fetching expat-2.2.6_1.txz: 100%  116 KiB 118.4kB/s    00:01    [4/15] Fetching pcre-8.42_1.txz: 100%    1 MiB 251.5kB/s    00:05    [5/15] Fetching apr-1.6.5.1.6.1_1.txz: 100%  454 KiB 232.7kB/s    00:02    [6/15] Fetching gdbm-1.18.1.txz: 100%  159 KiB 162.5kB/s    00:01    [7/15] Fetching db5-5.3.28_7.txz: 100%   12 MiB 556.4kB/s    00:23    [8/15] Fetching mod_php72-7.2.13.txz: 100%    1 MiB 304.3kB/s    00:04    [9/15] Fetching libargon2-20171227_1.txz: 100%   63 KiB  64.8kB/s    00:01    [10/15] Fetching php72-7.2.13.txz: 100%    3 MiB 432.4kB/s    00:08    [11/15] Fetching php72-json-7.2.13.txz: 100%   21 KiB  21.6kB/s    00:01    [12/15] Fetching php72-posix-7.2.13.txz: 100%   12 KiB  12.1kB/s    00:01    [13/15] Fetching php72-sqlite3-7.2.13.txz: 100%   18 KiB  18.2kB/s    00:01    [14/15] Fetching sqlite3-3.26.0.txz: 100%    1 MiB 335.3kB/s    00:04    Checking integrity... done (0 conflicting)[15/15] Installing expat-2.2.6_1...Extracting expat-2.2.6_1: 100%[1/15] Installing gdbm-1.18.1...[1/15] Extracting gdbm-1.18.1: 100%[2/15] Installing db5-5.3.28_7...[2/15] Extracting db5-5.3.28_7: 100%[3/15] Installing libnghttp2-1.35.1...[3/15] Extracting libnghttp2-1.35.1: 100%[4/15] Installing pcre-8.42_1...[4/15] Extracting pcre-8.42_1: 100%[5/15] Installing apr-1.6.5.1.6.1_1...[5/15] Extracting apr-1.6.5.1.6.1_1: 100%[6/15] Installing libargon2-20171227_1...[6/15] Extracting libargon2-20171227_1: 100%[7/15] Installing apache24-2.4.37...===> Creating groups.Using existing group 'www'.===> Creating usersUsing existing user 'www'.[7/15] Extracting apache24-2.4.37: 100%[8/15] Installing php72-7.2.13...[8/15] Extracting php72-7.2.13: 100%[9/15] Installing sqlite3-3.26.0...[9/15] Extracting sqlite3-3.26.0: 100%[10/15] Installing mod_php72-7.2.13...[10/15] Extracting mod_php72-7.2.13: 100%[activating module `php7' in /usr/local/etc/apache24/httpd.conf][11/15] Installing php72-json-7.2.13...[11/15] Extracting php72-json-7.2.13: 100%[12/15] Installing php72-posix-7.2.13...[12/15] Extracting php72-posix-7.2.13: 100%[13/15] Installing php72-sqlite3-7.2.13...[13/15] Extracting php72-sqlite3-7.2.13: 100%[14/15] Installing kcsweb-apache24-1.0...===> Creating groups.Using existing group 'www'.===> Creating usersUsing existing user 'www'.[14/15] Extracting kcsweb-apache24-1.0: 100%Message from apr-1.6.5.1.6.1_1:
/!\ ================================================================== /!\
The Apache Portable Runtime project removed support for FreeTDS withversion 1.6. Users requiring MS-SQL connectivity must migrateconfigurations to use the added ODBC driver and FreeTDS' ODBC features.
/!\ ================================================================== /!\Message from apache24-2.4.37:
To run apache www server from startup, add apache24_enable="yes"in your /etc/rc.conf. Extra options can be found in startup script.
Your hostname must be resolvable using at least 1 mechanism in/etc/nsswitch.conf typically DNS or /etc/hosts or apache mighthave issues starting depending on the modules you are using.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- apache24 default build changed from static MPM to modular MPM- more modules are now enabled per default in the port- icons and error pages moved from WWWDIR to DATADIR
   If build with modular MPM and no MPM is activated in   httpd.conf, then mpm_prefork will be activated as default   MPM in etc/apache24/modules.d to keep compatibility with   existing php/perl/python modules!
Please compare the existing httpd.conf with httpd.conf.sampleand merge missing modules/instructions into httpd.conf!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Message from mod_php72-7.2.13:
***************************************************************
Make sure index.php is part of your DirectoryIndex.
You should add the following to your Apache configuration file:
<FilesMatch "\.php$">    SetHandler application/x-httpd-php</FilesMatch><FilesMatch "\.phps$">    SetHandler application/x-httpd-php-source</FilesMatch>
*********************************************************************
If you are building PHP-based ports in poudriere(8) with ZTS enabled,add WITH_MPM=event to /etc/make.conf to prevent build failures.
*********************************************************************

Запускаем apache24 в первый раз, используем обязательно команду kcsweb-apache24:

# sysrc apache24_enable="YES"
# kcsweb-apache24
Generating a 4096 bit RSA private key.................................................................................++.............................++writing new private key to '/etc/ssl/web1c8x.key'-----apache24 not running? (check /var/run/httpd.pid).Performing sanity check on apache24 configuration:Syntax OKStarting apache24.

Открываем свой браузер и переходим по адресу https://<ip машины куда ставилась 1С>:10443 
Видим следующие:

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

После регистрации жмем в левом углу кнопку Добавить продукт и выбираем следующие:


Жмем Добавить и заходим в корзину видим новую лицензию и кнопочку приобрести жмем на нее:
После нажимаем  оплатить и платим удобным для вас способом! 

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



Идем дальше. Мы должны увидеть окно авторизации:
Не авторизуемся, а идем в терминал и догружаем модули которые не загрузились ранее из за отсутствия ключа активации:
# kldload /boot/modules/kcs/linux_common.ko /boot/modules/kcs/linux.ko /boot/modules/kcs/linux64.ko \
/boot/modules/kcs/linprocfs.ko /boot/modules/kcs/linsysfs.ko fdescfs pty
Проверяем:
# kldstat -v | egrep "linux.ko|linux64.ko"
15    1 0xffffffff82825000 23cc0    linux.ko (/boot/modules/kcs/linux.ko)16    1 0xffffffff82849000 21368    linux64.ko (/boot/modules/kcs/linux64.ko)

сново запускаем 1С:
# mount -t linprocfs /proc /compat/linux/proc
# mount -t linsysfs /sys /compat/linux/sys
# mount -t devfs devfs /compat/linux/dev
# mount -t fdescfs fdescfs /compat/linux/dev/fd
# service srv1cv83 start
Starting srv1cv83. :10777
# service srv1cv83 status
Running service. srv1cv83_ras: 16151Running service. srv1cv83: 10777# ps aux | grep compat
usr1cv8  50558   5.8  4.4 1353904 175496  -  I    06:16       0:08.27 /compat/linux/opt/1C/v8.3/x86_64/rphost -range 1560:1591 -reghostusr1cv8  16792   0.1  2.4 1510008  95684  -  I    06:16       0:02.34 /compat/linux/opt/1C/v8.3/x86_64/rmngr -port 1541 -host sigma -rausr1cv8   10777   0.0  1.0  886068  39832  -  I    06:16       0:00.51 /compat/linux/opt/1C/v8.3/x86_64/ragentusr1cv8  16151   0.0  0.9  789436  34392  -  I    06:16       0:00.12 /compat/linux/opt/1C/v8.3/x86_64/ras cluster

Вот теперь возвращаемся к веб админке 1С вводим стандартный логин и пароль admin/admin

Лице зреем следующие:







Видео по установке 1C сервер на FreeBSD на  YouTube и  RuTube.