|
|||||||
1С:Предприятие 8.2 + PostgreSQL на Linux Ubuntu
Время создания: 23.06.2014 09:11
Автор: f0s
Раздел: Компьютер - Windows - 1С - 1С и Linux
Запись: xintrea/mytetra_syncro/master/base/1379071499v1w3ebrklo/text.html на raw.github.com
|
|||||||
|
|||||||
1С:Предприятие 8.2 + PostgreSQL на Linux Ubuntu Коротко о структуре сети. Домен ARTPAINT. Контроллер домена на mail.artpaint/kerberos.artpaint, смотреть описание здесь: http://www.lissyara.su/articles/freebsd/programms/ldap+samba_pdc+ddns+dhcp Устанавливаем ОС Linux Ubuntu-server 9.04 amd64. Почему Линукс, спросите вы? Ну, на FreeBSD я уже устанавливал 1С: http://www.lissyara.su/articles/freebsd/programms/1c_8.1+postgresql/ Однако в продакшене это нереально иcпользовать. Во-первых ограничение в 12 подключений (т.к. нет хасп драйвера под freebsd, во вторых нет возможности установить 64-разрядную версию сервера, т.к. все работает в эмуляторе линукса). Другими словами эта статья для тех, кто хочет с первого раза без проблем поднять свой 1С 8.2 сервер-приложений, не покупая windows server+mssql. Итак, включаем поддержку ssh. Настраиваем сеть: f0s@database:/$ cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.10.9 netmask 255.255.255.0 gateway 192.168.10.7 f0s@database:/$ cat /etc/resolv.conf domain artpaint search artpaint nameserver 192.168.10.8 f0s@database:/$ cat /etc/hostname database.artpaint Далее: f0s@database:/$ sudo aptitude update f0s@database:/$ sudo aptitude safe-upgrade Настраиваем в домашнем каталоге пользователя под себя профайл .bashrc Т.к. сервер работает через ИБП APC Smart 1000, хорошо бы настроить корректное выключение, в случае полной разрядки батареи. Здесь нам на помощь придет соответствующий порт: f0s@database:/$ sudo apt-get install apcupsd Редактируем конфиг (я изменил только параметр UPSNAME на database.artpaint) и еще нужно выставить ISCONFIGURED=yes в файле /etc/default/apcupsd После чего можно смело стартовать: f0s@database:/$ sudo /etc/init.d/apcupsd start Устанавливаем samba. f0s@database:/$ sudo apt-get install samba samba-common winbind f0s@database:/$ sudo apt-get install krb5-user libkrb53 krb5-config f0s@database:/$ cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = ARTPAINT dns_lookup_realm = false dns_lookup_kdc = false default_tkt_enctypes = des-cbc-crc des-cbc-md5 default_tgs_enctypes = des-cbc-crc des-cbc-md5 [realms] ARTPAINT = { kdc = kerberos.artpaint:88 default_domain = artpaint } [domain_realm] .artpaint = ARTPAINT artpaint = ARTPAINT .ARTPAINT = ARTPAINT ARTPAINT = ARTPAINT [kdc] profile = /var/kerberos/krb5kdc/kdc.conf [appdefaults] pam = { debug = true ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = false krb4_convert = false } Получаем билетик кербероса: f0s@database:/$ kinit admin Password for admin@ARTPAINT: f0s@database:/$ klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: admin@ARTPAINT Valid starting Expires Service principal 12/21/09 15:18:48 12/22/09 15:18:14 krbtgt/ARTPAINT@ARTPAINT Kerberos 4 ticket cache: /tmp/tkt1000 klist: You have no tickets cached f0s@database:/$ cat /etc/samba/smb.conf [global] workgroup = ARTPAINT server string = security = DOMAIN # Если у вас AD, то используйте следующие опции: # securitu ADS # realm ARTPAINT map to guest = Bad User obey pam restrictions = Yes password server = kerberos.artpaint passdb backend = tdbsam unix password sync = Yes syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192 (!пишем в одну строчку!) dns proxy = No wins server = 192.168.10.8 usershare allow guests = Yes panic action = /usr/share/samba/panic-action %d idmap uid = 10000-20000 idmap gid = 10000-20000 winbind enum users = Yes winbind enum groups = Yes winbind use default domain = Yes [tmp] comment = Temporary files path = /tmp read only = No create mask = 0644 directory mask = 0744 guest ok = Yes [IPC$] path = /tmp hosts allow = 192.168.10.0/24, 192.168.0.0/24, 127.0.0.1 hosts deny = 0.0.0.0/0 В /etc/nsswitch.conf добавляем: f0s@database:/$ cat /etc/nsswitch.conf passwd: compat winbind group: compat winbind Синхронизируем часы: f0s@database:/$ sudo ntpdate kerberos.artpaint Вводим машину в домен: f0s@database:/$ sudo net rpc join -U admin Если у Вас используется в качестве домена Windows AD, то используйте: f0s@database:/$ sudo net ads join -U admin В домен машину включили, запускаем сервисы: f0s@database:/$ sudo /etc/init.d/samba start f0s@database:/$ sudo /etc/init.d/winbind start Все. Теперь можно проверить: f0s@database:/$ wbinfo -t checking the trust secret via RPC calls succeeded f0s@database:/$ wbinfo -u anufrieva [..skip..] plyaka zhurakovskaya usr1cv8 f0s@database:/$ wbinfo -g admins it export reklama [..skip..] Все ок. Теперь можно приступать к следующем этапу. Установка PostgreSQL. Создадим в нашем домашнем каталоге папку install, и в ней еще три подкаталога: 1cv82, postgres, hasp. Теперь скачаем с сайте Etersoft уже пропатченный для 1С postgres (версии отличные от 8.3.8 - работают с 1С не корректно!): f0s@database:/$ cd /home/f0s/install/postgresql f0s@database:~/install/postgres$ wget ftp://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/8.3.8/ x86_64/Ubuntu/9.10/postgresql-8.3eter-contrib_8.3.8-eter2.1ubuntu_amd64.deb (!пишем в одну строчку!) f0s@database:~/install/postgres$ wget ftp://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/8.3.8/ x86_64/Ubuntu/9.10/postgresql-8.3eter-server_8.3.8-eter2.1ubuntu_amd64.deb (!пишем в одну строчку!) f0s@database:~/install/postgres$ wget ftp://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/8.3.8/ x86_64/Ubuntu/9.10/postgresql-8.3eter_8.3.8-eter2.1ubuntu_amd64.deb (!пишем в одну строчку!) Установим дополнительные библиотеки: f0s@database:/$ sudo aptitude -R install libicu38 libxslt1.1 libxml2 Изменяем параметры ядра: f0s@database:/$ sudo /sbin/sysctl -w kernel.shmmax=662020352 f0s@database:/$ sudo /sbin/sysctl -w kernel.shmall=662020352 f0s@database:/$ sudo echo "kernel.shmmax = 662020352" >> /etc/sysctl.conf f0s@database:/$ sudo echo "kernel.shmmall = 662020352" >> /etc/sysctl.conf Выполняем перезагрузку: f0s@database:/$ sudo reboot Устанавливаем PostgreSQL: f0s@database:/$ cd /home/f0s/install/postgres/ f0s@database:~/install/postgres$ sudo dpkg -i * Запускаем СУБД: f0s@database:/$ sudo /etc/init.d/postgresql start Меняем пароль пользователя postgres: f0s@database:/$ passwd postgres Меняем пароль внутреннего пользователя: f0s@database:/$ su -l postgres postgres@database:/$ psql # alter user postgres with password 'YOUR_PASSWORD'; # \q postgres@database:/$ exit Перейдем к редактированию конфига: f0s@database:/$ cat /var/lib/pgsql/data/postgresql.conf # Путь к конфигам: data_directory = '/var/lib/pgsql/data' hba_file = '/var/lib/pgsql/data/pg_hba.conf' ident_file = '/var/lib/pgsql/data/pg_ident.conf' listen_addresses = '*' max_connections = 100 # Дополнительный буфер между диском и процессами Postgre SQL. # Не следует указывать слишком большой объем, # т.к. еще существует системный Кэш, контролируемый ОС. # Значения: # Средний объём данных и 256–512 МБ доступной памяти: 16–32 МБ # Большой объём данных и 1–4 ГБ доступной памяти: 64–256 МБ shared_buffers = 512MB # Буфер под временные объекты, в основном для временных таблиц. # Можно установить порядка 16 МБ temp_buffers = 16MB # Количество одновременно подготавливаемых транзакций. # Для работы 1С этот параметр значения не имеет. max_prepared_transactions = 5 # Специальная память, используется для сортировки и # кэширования таблиц, для одного запроса. # При задании этого параметра следует учитывать количество # конкурентых запросов, выполняемых в один момент времени. # При памяти 1–4Gb рекомендуется устанавливать 32–128MB work_mem = 256MB # Память использующаяся для операций VACUUM, CREATE INDEX, # ALTER TABLE и FOREGIN KEY. # Следует устанавливать большее значение, чем для work_mem. # Слишком большие значения приведут к использованию свопа. # При памяти 1–4Gb рекомендуется устанавливать 128–512MB maintenance_work_mem = 1024MB # Специальный стек для сервера, в идеале он должен совпадать # с размером стека, выставленном в ядре ОС. Установка большего значения # чем в ядре может привести к ошибкам. Рекомендуется устанавливать 2–4MB max_stack_depth = 2MB # Максимальное количество таблиц, для которых будет отслеживаться # свободное место. Выставите параметр в соответствии с количеством # таблиц в вашей базе с запасом. #max_fsm_relations = 1000 # Количество блоков, для которых будет хранится информация о свободном месте. # Информация хранится в разделяемой памяти, для каждой записи требуется # по 6 байт. Использование этого параметра позволяет избежать использования # VACUUM FULL для базы, достаточно будет VACUUM. Этот параметр должен быть # не меньше чем 16*max_fsm_relations. Данный параметр задается автоматически # при создании базы утилитой initdb. Можно задать его и вручную: в качестве # начального приближения можно взять половину от среднего количества записей, # изменяемых (UPDATE или DELETE) между запусками команды VACUUM. max_fsm_pages = 204800 # Данный параметр отвечает за сброс данных из кэша на диск при завершении # транзакций. Если установить его значение fsync=off, то данные не будут # записываться на дисковые накопители сразу после завершения операций. # Это может существенно повысить скорость операций insert и update, но # есть риск повредить базу, если произойдет сбой (неожиданное отключение # питания, сбой ОС, сбой дисковой подсистемы). Используйте эту возможность # только если у вас имеются надежные ИБП и программное обеспечение, # завершающее работу системы при низком заряде батарей. fsync = off # Метод который используется для принудительной записи данных на диск. # Если fsync=off, то этот параметр не имеет значения. Возможные значения: # open_datasync – запись данных методом open() с опцией O_DSYNC # fdatasync – вызов метода fdatasync() после каждого commit # fsync_writethrough – вызывать fsync() после каждого commit игнорирую # паралельные процессы # fsync – вызов fsync() после каждого commit # open_sync – запись данных методом open() с опцией O_SYNC # Не все методы доступны на определенных платформах. По умолчанию # устанавливается первый, который доступен в системе. #wal_sync_method = fsync # Установите данный параметр в off, если fsync=off full_page_writes = off # Количество памяти используемое в SHARED MEMORY для ведения транзакционных # логов. При доступной памяти 1–4GB рекомендуется устанавливать 256–1024kb wal_buffers = 2048kB # Передает данные планировщику запросов об объеме памяти, которая используется # ОС для кэширования файлов, для одного запроса. # (Устанавливаем в половину оперативки) effective_cache_size = 4096MB # Устанавливает глубину статистики по таблицам. БОльшие значения могут # повысить время выполения команды ANALYZE, но улучшат построение плана # запроса. Рекомендуется устанавливать порядка 100 default_statistics_target = 100 # Включает или отключает использование планером ограничений CONSTRAINT в # таблицах при построении запросов. Рекомендуется установить значение on, # при этом, если Вы изменяете CONSTRAINT у таблиц, необходимо обновить их # статистику выполнив ANALYZE, в противном случае будут построены неверные # планы запросов. constraint_exclusion = on # Ниже логи log_destination = 'syslog' syslog_facility = 'LOCAL0' syslog_ident = 'postgres' # Включать ли автовакуум, устанавливать on autovacuum = on # Пауза между запусками Автовакуума. Зависит от того, как часто обновляются # данные в ваших таблицах. Может соствлять порядка 5min, по умолчанию 1min autovacuum_naptime = 5min # Формат даты datestyle = 'iso, dmy' # Кодировка lc_messages = 'ru_RU.UTF-8' lc_monetary = 'ru_RU.UTF-8' lc_numeric = 'ru_RU.UTF-8' lc_time = 'ru_RU.UTF-8' # Дефолтовая конфигурация для текстовго поиска default_text_search_config = 'pg_catalog.russian' # Время жизни взаимных блокировок. Установить порядка 2 секунд. deadlock_timeout = 2s # Количество блокировок за одну транзакцию: установить порядка 200-250 max_locks_per_transaction = 250 # Также необходимо добавить: default_with_oids = on escape_string_warning = off stats_row_level = off # end of file Перезапустим сервер СУБД: f0s@database:/$ sudo /etc/init.d/postgresql restart Приступим к установке 1С:Предприятие 8.2: f0s@database:/$ cd /home/f0s/install/1cv82 Скачиваем с users.v8.1c.ru дистрибутив 1C 8.2.11.229 (это самая последняя версия на 01.06.10) f0s@database:~/install/1cv82$ wget http://v8.1c.ru/get/Info/Platform/8_2_11_229/setupdeb64.rar Для распаковки нам потребуется unrar, установим его: f0s@database:~/install/1cv82$ sudo apt-get install unrar Распакуем: f0s@database:~/install/1cv82$ unrar x setupdeb64.rar ./ f0s@database:~/install/1cv82$ ls -lh -rw-r--r-- 1 f0s f0s 19M 17:23 1c-enterprise82-common_8.2.10-73_amd64.deb -rw-r--r-- 1 f0s f0s 840K 17:23 1c-enterprise82-common-nls_8.2.10-73_amd64.deb -rw-r--r-- 1 f0s f0s 74M 17:23 1c-enterprise82-server_8.2.10-73_amd64.deb -rw-r--r-- 1 f0s f0s 19M 17:25 1c-enterprise82-server-nls_8.2.10-73_amd64.deb -rw-r--r-- 1 f0s f0s 302K 17:25 1c-enterprise82-ws_8.2.10-73_amd64.deb -rw-r--r-- 1 f0s f0s 4,9K 17:25 1c-enterprise82-ws-nls_8.2.10-73_amd64.deb Устанавливаем: f0s@database:~/install/1cv82$ sudo dpkg -i *.deb Добавим локаль: f0s@database:/$ sudo ln -s /usr/lib/locale/en_US.utf8 /usr/lib/locale/en_US f0s@database:/$ sudo ln -s /usr/share/locale/en /usr/share/locale/en_US Изменим права на каталог с 1С: f0s@database:/$ sudo chown -R usr1cv82:grp1cv82 /opt/1C f0s@database:/$ cd /etc/init.d/ f0s@database:/etc/init.d$ sudo chown root:root srv1cv82 Включим логи для сервера 1С:Предприятия. Для этого создадим каталог для хранения логов: f0s@database:~$ sudo mkdir /var/log/1c f0s@database:~$ sudo chown usr1cv82:grp1cv82 /var/log/1c И создадим специальный xml-файл со следующим содержимым: f0s@database:~$ sudo touch /opt/1C/v8.2/x86_64/conf/logcfg.xml f0s@database:~$ chown usr1cv82:grp1cv82 /opt/1C/v8.2/x86_64/conf/logcfg.xml f0s@database:~$ cat /opt/1C/v8.2/x86_64/conf/logcfg.xml <?xml version="1.0" encoding="UTF-8"?> <config xmlns="http://v8.1c.ru/v8/tech-log"> <log location="/var/log/1c/" history="168"> <event> <eq property="name" value="EXCP"/> </event> <property name="all"/> </log> </config> И, в заключением, добавим сервер 1С:Предприятие в автозагрузку: f0s@database:/$ sudo update-rc.d srv1cv82 defaults Перезагружаем сервер: f0s@database:/$ sudo reboot Проверяем что все поднялось. Проверка 1с: f0s@database:/$ ps axj | grep v8 1 ? -1 Ssl 10100 0:00 /opt/1C/v8.2/x86_64/ragent -daemon 2524 ? -1 Sl 10100 0:01 /opt/1C/v8.2/x86_64/rmngr -port 1541 2524 ? -1 Sl 10100 0:01 /opt/1C/v8.2/x86_64/rphost -range 1560:1591 -reghost database -regport 1541 -pid c14c8b52-ee22-11de-6185-003048bb6d90 Проверка PostgreSQL: f0s@database:/$ ps axj | grep postgr 2460 ? -1 Ss 26 0:00 postgres: writer process 2460 ? -1 Ss 26 0:00 postgres: wal writer process 2460 ? -1 Ss 26 0:00 postgres: autovacuum launcher process 2460 ? -1 Ss 26 0:00 postgres: stats collector process Все нормально, все работает. Теперь нам необходимо установить в систему драйвера для ключей HASP (серверный ключ должен обязательно быть установлен на той же машине, что и сервер 1С:Предприятие). Без ключа сервер будет работать только с 12-ю одновременными подключениями. Перед этим необходимо установить библиотеку: f0s@database:/$ sudo apt-get install libc6-i386 Теперь можно приступать к установке драйверов USB-ключей HASP HL и HASP SRM: f0s@database:/$ cd /home/f0s/install/hasp f0s@database:~/install/hasp$ wget ftp://ftp.aladdin.com/pub/hasp/srm/Linux/ HASP_SRM_LINUX_3.50_Run-time_Installer_script.tar.gz (!пишем в одну строчку!) f0s@database:~/install/hasp$ tar -zxvf HASP_SRM_LINUX_3.50_Run-time_Installer_script.tar.gz f0s@database:~/install/hasp$ cd HASP_SRM_LINUX_3.50_Run-time_Installer_script/ f0s@database:~/install/hasp/HASP_SRM_LINUX_3.50_Run-time_Installer_script$ sudo ./dinst . (Обратите внимание на точку вконце). Данный скрипт устанавливает: AksUSBD – общий драйвер для всех ключей HASP и Hardlock. Без него ничего работать не будет! HASPLM – менеджер лицензий для сетевых ключей HASP. WineHASP – программа для взаимодействия локальных ключей HASP с эмулятором Wine. Теперь опишем установку драйверов USB- и LPT-ключей HASP4 f0s@database:/$ cd /home/f0s/install/hasp/ f0s@database:~/install/hasp$ wget http://updates.etersoft.ru/pub/Etersoft/ WINE@Etersoft/1.0.11/WINE/x86_64/Ubuntu/9.04/haspd_3.0-alt4ubuntu_amd64.deb (!пишем в одну строчку!) f0s@database:~/install/hasp$ sudo dpkg -i haspd_3.0-alt4ubuntu_amd64.deb Готово. Теперь можно установить ключи в сервер. Необходимо создать базу. Сделать лучше всего это с windows-клиента. Устанавливаем туда 1C, запускаем, и жмем кнопку "Добавить информационную базу на сервере 1С:Предприятие". Там указываем в кач-ве:
Ставим галку напротив "Создать базу данных в случае ее отсутствия". Жмем ОК. Ура. База создана. Теперь можно войти в конфигуратор и загрузить нашу рабочую базу из бекапа. Вроде бы все сделали, но хорошо бы еще прикрутить такую нужную фичу, как прозрачная авторизация пользователей (чтобы при запуске на клиентских машинах 1С, она не спрашивала пароль и имя, а брала бы эти данных из домена. То есть 1С запускалась бы от того имени, от которого вы залогинены в систему. Настраивается данная опция через конфигуратор). Это очень удобно. Однако для того, чтобы это работало необходимо произвести дополнительную настройку на сервере. Важно заметить, что если у вас домен, как например у меня, на базе samba_pdc+openldap (грубо говоря NT4), то авторизация работать не будет, уж не знаю почему, уж и керберос я прикрутил к домену своему, однако не пашет - и все тут. Если удастся каким-то образом выудить эту информацию у 1с-ников, выложу апдейт к статье. А пока рассмотрим вариант, что у вас Windows AD. В AD необходимо создать учетную запись пользователя, с которой будут ассоциироваться запросы авторизации к серверу 1С:Предприятия. Пусть это будет usr1cv8 с паролем pass1cv8. В свойствах этой учетной записи следует сбросить флажок "Use DES encryption types with this account". Затем для пользователя usr1cv8 следует сгенерировать файл с секретным ключом. Для этого используется утилита ktpass, входящая в состав в пакет Windows Support Tools (Его можно найти в подкаталоге SUPPORT установочного диска Windows). В командной строке запустим утилиту ktpass. В нашем примере командная строка должна выглядеть следующим образом: C:\>ktpass -crypto DES-CBC-CRC -princ usr1cv82/database.artpaint@ARTPAINT -mapuser usr1cv8 -pass pass1cv8 -out usr1cv82.keytab (!пишем в одну строчку!) проверим работу DNS. Для этого выполним команду ping _имя_тачки_где_AD_: f0s@database:/$ ping kerberos -c 1 PING mail.artpaint (192.168.10.8) 56(84) bytes of data. 64 bytes from mail.artpaint (192.168.10.8): icmp_seq=1 ttl=64 time=0.872 ms --- mail.artpaint ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.872/0.872/0.872/0.000 ms Затем необходимо передать файл с секретным ключом usr1cv82.keytab, полученный во время настройки контроллера домена, на центральный сервер кластера 1С:Предприятия. Этот файл следует скопировать в директорию, где установлен сервер 1С:Предприятия: /opt/1C/v8.2/x86_64), и установить права и владельца файла, как показано ниже: f0s@database:/$ cd /opt/1C/v8.2/x86_64/ f0s@database:/opt/1C/v8.2/x86_64$ sudo chown usr1cv82:grp1cv82 usr1cv82.keytab f0s@database:/opt/1C/v8.2/x86_64$ chmod 600 usr1cv82.keytab Изменив переменную SRV1CV8_KEYTAB в /etc/init.d/srv1cv82 можно изменить местоположение keytab-а. С помощью команды klist проверяем, все ли мы сделали правильно. Для этого выполним команду: f0s@database:/$ klist -e -k -t /opt/1C/v8.2/x86_64/usr1cv82.keytab Keytab name: FILE:/opt/1C/v8.2/x86_64/usr1cv82.keytab KVNO Principal ---- --------------------------------------------------------------------- 13 usr1cv82/database.artpaint@ARTPAINT (DES cbc mode with RSA-MD5) Далее проверим возможность работы Kerberos без пароля с использованием секретного ключа. С помощью команды kinit укажем, что надо использовать аутентификационную информацию из файла /opt/1C/v8.2/x86_64/usr1cv82.keytab и прочитать оттуда ключ для сервиса usr1cv82/database.artpaint@ARTPAINT. В результате программа kinit должна отработать без каких-либо сообщений, не спрашивать никаких паролей и вернуть управление обратно в командную строку: f0s@database:/$ kinit -k -t /opt/1C/v8.2/x86_64/usr1cv82.keytab usr1cv82/database.artpaint@ARTPAINT (!пишем в одну строчку!) Делаем симлинк f0s@database:/$ ln -s /usr/lib/libgssapi_krb5.so{.2,} Теперь посмотрим на результаты работы с помощью команды klist. В случае успеха мы увидим примерно следующее: srv1c:~# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: usr1cv82/database.artpaint@ARTPAINT Valid starting Expires Service principal 12/21/09 19:38:31 12/22/09 19:37:59 krbtgt/ARTPAINT@ARTPAINT renew until 01/21/10 19:38:31 Kerberos 4 ticket cache: /tmp/tkt0 klist: You have no tickets cached Если проверка работоспособности прошла успешно, это значит, что с данного момента сервер кластера 1С:Предприятия способен обрабатывать запросы на аутентификацию. Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=47&t=27087&start=0. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|