gifts2017

Для 1С: Предприятие 7.7 Advantage Database Server 8.1 на Linux

Опубликовал @lex alexeew (@lex) в раздел Администрирование - Системное

Использование разработки hogik - http://infostart.ru/projects/1359/ с использованием сервера на Linux
По просьбе hogik - маленький мануал по использованию его разработки
http://infostart.ru/projects/1359/#comm
с установкой сервера на Linux (Дистрибутив Mandriva-Free 2008).
Все оказалось довольно просто:
1. Устанавливаем сервер Advantage стандартным способом т.е. с помощью
скрипта setup.pl:
# ./setup.pl
и отвечаем честно на все вопросы :), т.е. выбираем свою страну,говорим, запускать или нет демон при загрузке
и вводим коды для триала, взятые с офф сайта.
Затем качаем и ставим adsodbc-8.10.0.18 для Linux, иначе клиент начинает
ругаться на старую версию сервера. (не находит библиотеки libace.so.8.10.0.18 и libadsloc.so.8.10.0.18).
После установки adsodbc они находятся тут /usr/local/ads/odbc/redistribute/. Может, у кого все прошло
иначе - у меня не получилось.
мой ads.conf (/usr/local/advantage/)
//******************************************************************************************
; Advantage Database Server for Linix configuration file
;
; The Advantage Database Server reads this configuration file when
; it is started. Values input after the keyword and equal sign are
; used to configure the daemon. If no value is inserted after a keyword
; and equal sign, the default is used. Command line values will
; override these configuration file values.
;
; Number of Connections
; Default = User Option purchased; Range = 1 - No upper limit
CONNECTIONS=100
;
; Number of Work Areas
; Default = (25 x CONNECTIONS); Range = 1 - No upper limit
WORKAREAS=50000
;
; Number of Tables
; Default = 100; Range = 1 - No upper limit
TABLES=10000
;
; Number of Index Files
; Default = 150; Range = 1 - No upper limit
INDEXES=15000
;
; Number of Data Locks
; Default = (40 x CONNECTIONS); Range = 1 - No upper limit
LOCKS=50000
;
; Number of Worker Threads
; Default = 8; Range = 1 - 1024 (Don't use more than 100 unless necessary)
THREADS=800
;
; Filemask used when creating new files
; Default = 0600 ( -rw------ )
CREATEMASK=0777
;
; Maximum Size of Error Log (in KBytes)
; Default = 1000 KBytes; Range = 1 Kbyte - No upper limit
ERROR_LOG_MAX=1000
;
; Error Log and Assert Log Path
; Default = /var/log/advantage
; The path must be a fully qualified path, starting with '/'. For example, /var/log
; IMPORTANT NOTE: The advantage user must have write privelages to this directory,
; or it will not be able to create or write to the log files.
ERROR_ASSERT_LOGS=/var/log/advantage
;
; Transaction Log Files Path
; Default = /var/log/advantage
; The path must be a fully qualified path. For example, /home/dir_w_all_rights
; IMPORTANT NOTE: The advantage user must have write privelages to this directory,
; or it will not be able to create or write to the log files.
TPS_LOGS=/temp
;
; IP Port number for the Advantage communication socket
; Default = 0; Range 2000 - 65535
; Zero indicates that the next available socket should be used for IP
; communication with Advantage clients. If changing this setting verify
; no other processes are already using the port.
IP_PORT=5300 'порт указан явно
;
; Timeout value for "keep alive" packets
; Default = 240; Range 10 - 65535
CLIENT_TIMEOUT=240
;
; IP Internet port number for Internet connections
; Default = 0; Range 2000 - 65535
; Zero indicates that Internet connection to the Advantage Database
; Server is not allowed.
INTERNET_PORT=0
;
; Lowercase All Paths
; Default = 0 (false)
; Options are: 0 (for false) and 1 (for true)
LOWERCASE_ALL_PATHS=0
;
; Communications compression option
; Default = Internet
; Valid values include:
; Internet: Use compression for AIS connections.
; Always: Use compression unless the client specifically turns it off.
; Never: Do not allow compression for any connections. This setting
; overrides any client compression settings.
COMPRESSION=Never
;
; Maximum Cache Memory setting.
; This configuration entry specifies the maximum amount of memory (RAM) in
; megabytes (MB) the Advantage Database Server will use to cache index files,
; table headers, and memo headers. If this setting is not found, the
; Advantage Database Server will determine an appropriate maximum value by
; dividing the currently available amount of free memory by two at startup
; time. If the currently available amount of memory is not accessible to the
; Advantage Database Server, 50 MB will be used as a default. If the
; configured amount is zero, the Advantage Database Server will not cache any
; file data.
MAX_CACHE_MEMORY=2097152
//***********************************************************************************
Затем ставим пакет Samba, настраиваем как нужно для конкретной конфигурации сети
и делаем расшареную папку примерно с такими параметрами (read list и write list - параметры для домена):
[Share]
read list = "@MYDOMAIN\Domain Users"
write list = "@MYDOMAIN\Domain Users"
path = /mnt/win_c3/share/
writable =yes
csc policy =disable
read only = no
comment = Share
create mask = 0777
directory mask = 0777
locking = yes
veto oplock files = /.*LCK/.*MD/.*mlg/
max connections = 1000

После этого закидываем базу на машину с Windows, и конвертируем с помощью ConvDBF.exe:
через "Пуск - Выполнить": "C:\Program Files\1Cv77\BIN\ConvDBF.exe" C:\папка_с_базой и полученую базу кидаем в
расшару на серваке.
Затем на сервере в корень файловой системы копируем РАСШАРЕНЫЙ КАТАЛОГ!!! т.е.
если база находится по такому пути /mnt/win_c3/share/, то в корне дожен лежать каталог /share.
С раздачей прав пока не экспериментировали, для каталога /share установили владельца advantage (создается
при установке сервера) и права доступа 0777.
Стартуем сервер # service ads start

Теперь на клиентских машинах ставим все компоненты по инструкции hogik, и создаем в каталоге с установленой 1С
C:\Program Files\1Cv77\BIN файл ads.ini примерно следующего содержания:

//***********************************************************************
[SETTINGS]
ADS_SERVER_TYPE = 2 'тип сервера (2-удаленный)
DEFAULT_PROTOCOL = 1 'TCP-IP протокол для работы
COMPRESSION=Never 'без компрессии
[Mylinux_server] 'имя сервера Linux
LAN_IP=192.168.1.x 'его адрес в сети
LAN_PORT=5300 'порт, как указали в ads.conf
//************************************************************************
данный файл может лежать и в каталоге windows, но не всегда находится клиентом, из-за чего возникает
ошибка 6420 - невозможно подключиться к серверу, т.к. клиент, не найдя своих настроек, ищет локальный сервер.

Ну и добавляем базу в 1С с путем к нашей расшаре - \\Mylinux_server\Share, жмем ОК и насладжаемся :).

P.S. это еще не все, нужно проверить, зачем в расшаре держать базу, если работа идет с каталогом,
находящимся в корне, правильно раздать права и пофиксить долгую загрузку структуры данных программы до
появления окна авторизации 1С.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Andr (andrey995) 11.03.08 15:34
Спасибо за описание,
поправьте пожалуйста описание в теме , а то по названию темы создается ложное впечатление что речь идет о платформе 1С 8.1 а не о 1С 7.7 :)
2. Владимир (hogik) 12.03.08 02:33
Для использования ADS с DBEng32 параметры в файле ads.conf лучше ставить такие:
TABLES=INDEXES и равно общему количеству таблиц всех баз данных обслуживаемых данным сервером ADS одновременно.
WORKAREAS=TABLES * CONNECTIONS
THREADS=8 * КоличествоЯдерВсехПроцессоровСервера
LOCKS=100 * TABLES
3. @lex alexeew (@lex) 12.03.08 08:27
(2)
Спасибо за поправки. Может есть описание параметров ads.conf с вашими комментариями. Вот бы добавить :)
4. Владимир (hogik) 12.03.08 17:15
(3)
У нас не используется файл ads.conf – мы в Windows работаем :-(. А моими добавлениями к описанию я хотел обратить внимание пользователей на то, чего нельзя почерпнуть из описания ADS – особенности 1С+DBEng32.
1) Т.к. в DBEng32 не используются запросы и фильтры (если не использовать РУС), то увеличение значения параметра THREADS не оказывает влияния на производительность системы. Т.е. не существует процессов занимающих THREADS на долгое время.
2) Т.к. в DBEng32 все транзакции для одной базы данных выполняются последовательно, то количество LOCKS это количество заблокированных записей внутри одной транзакции умноженное на количество баз данных. Количество заблокированных записей в транзакции зависит от алгоритма приложения, и вычислить его заранее очень сложно. Но если этот параметр превышается, то система ведёт себя очень плохо.
3) Параметр WORKAREAS вычисленный по приведенной формуле гарантирует работоспособность системы. Но оказывается завышенным, если сервер ADS обслуживает больше одной базы.
5. Антонио (Fragster) 24.04.08 16:27
А у меня вопрос, а symlink не покатит на шару?
6. alexbax (AlexBax) 23.06.10 02:10
Установил на сервер под Ubuntu 10.04 Advantage 9.10 (позже пробовал 10-ю триальную версию с оффсайта).
1С работает тоже под Linux (на том же сервере) через wine@Etersoft - юзеры сидят под линуксовым терминалом.
при подключении к базе пишет Error 7046: Evaluation period expired. axServerConnect
В прикрепленном файле снимок этого дела.
При этом серийник на Advantage рабочий - под Linux коннект без вопросов. Когда пробовал 10-ю версию - там вообще свежий триальный серийник.
Т.о. как я понимаю коннект имеется (в ads.ini прописал IP - пробовал как реальный так и 127.0.0.1, порт) - иначе бы номер ошибки с расшифровкой не выдавал..

Осталось понять как побороть))

Заранее спасибо независимо от результата
Прикрепленные файлы:
7. @lex alexeew (@lex) 23.06.10 02:35
(6)
1. Один пользователь может работать из-под терминала?
2. Попробовать подключиться по сетке, чтобы платформа на другом компе стояла...

Под терминалом все соединения с сервером получаются от одной машины... может есть ограничения на количество коннектов с одного адреса или локальной машины.

Или нет доступа к каким-то файлам у юзера, от которого запускается WINE.
8. alexbax (AlexBax) 23.06.10 02:49
(7) Ответ
1. нет - никто не может
2. смысла нет - работа по сети в любом случае хуже работы в терминале (с advantage или без него)

поскольку нет даже одного подключения - ограничение на количество коннектов не причем (может потом, когда получится, роль играть будет)

а вот последнее - про права юзера - ща проверю) может быть..
9. alexbax (AlexBax) 23.06.10 02:58
(7) точно.. только прав не хватало юзеру advantage от которого сервис запускается - на создание сокета.. ))
Терь другая бодяга - позже отпишусь если победю))
10. @lex alexeew (@lex) 23.06.10 03:51
(9) Ждем-с... :) Только поподробнее - что за грабли и как решал :)
11. alexbax (AlexBax) 23.06.10 04:54
Значит так.. В ситуации когда из под wine в среде Linux 1C пробует обращаться к Advantage установленным под тем Linux на том же компе, возникает ошибка Advantage can't create file..

Вызвано это тем что при работе с Advantage ему отсылается путь вида "диск:\путь_к_базе\.."
Он добросовестно пытается по этому пути что-то создать (или прочесть), но поскольку работает в Linux - понятное дело выходит облом..

Уважаемые разработчики, конечно имеется ввиду hogik - по идее это не так сложно слегка доработать библиотеки коннекта с Advantage, добавив в настройки еще один файл .ini в каталоге базы, в котором бы можно было указывать unix путь к базе (например со строкой Unix_Path=/bases/work/db).
Логика работы при этом очевидная - если такого файлика в каталоге базы нет - все работает как раньше, а если есть - то из него в начале работы считывается unix путь к базе и дальше в Advantage отсылается все уже в unix варианте файловых путей

И кстати, это же поможет избавиться от ухищрений описанных в изначальном посте, когда чтобы заставить работать Advantage создается шара, копируется в корень и т.д.

В случае с wine описанный в посте вариант решения проблемы не работает - wine не работаетс с путями вида \\server\share. Сетевые пути прописываются как и диски - через символьные ссылки на каталоги host-системы. В итоге получается U:\server\share - и именно это передается Advantage

Учитывая все возрастающее количество linux реализаций 1с под wine - очень многие скажут спасибо..

З.Ы Кто-то возможно скажет что etersoft создал драйвер для трансляции sql запросов в Postgere - так и есть) И если у вас легальная 1С SQL - это оптимальный вариант. Но у меня легальная сетевая версия 1С - нет смысла переходить на Linux ради легальности ПО и подставляться с 1С.. Поэтому для меня разработка hogik - просто находка
12. alexbax (AlexBax) 23.06.10 05:10
(4) сорь в предыдущем посте не указал адресата))
13. alexbax (AlexBax) 23.06.10 05:12
(4) сорь - не указал адресата в предыдущем посте..
14. @lex alexeew (@lex) 23.06.10 05:42
(11) Кстати, как себя ведет семерка под Ethersoft-om? Все работает как надо, или есть грабли или костыли?

P.S. Сетевая работа с advantage происходит очень быстро, за исключением загрузки глобальника ~ 3 минуты ожидания... А все отчеты за период в два года даже формируются практически как на локальной системе (проверяли с трех компов одновременно разные отчеты по всем счетам и со всеми субконто).
15. alexbax (AlexBax) 23.06.10 06:05
(14) 7.7 под etersoft работает нормально, но по сравнению с терминалом win2k3 - медленнее.. Особенно заметно там где идет перебор в цикле документов или справочников - это проблема файловых блокировок.. Хотя по сравнению с обычным wine етерсофтовцы продвинулись далеко вперед - как раз за счет организации этих самых блокировок.. Но до виндов в терминале далеко еще.
Обещают сделать wine@etersoft внедренным в ядро.. Тогда компот с быстродействием будет другой
Но в общем и целом - терпимо.. Если только юзеры не невростенники с ножами))))
16. alexbax (AlexBax) 23.06.10 06:12
(14) Забыл сказать - если 1с sql-ная, то быстродействие не хуже чем в виндах - в связке с Postgere и драйвером от etersoft для трансляции запросов ms sql в Postgere. Только помимо 1С скульной легальной придется etersoft отвалить - у них теперь деление wine@etersoft network и wine@etersoft SQL (SQL соответственно прилично дороже). Причем и та и другая лицензии могут быть как с терминальной лицензией, так и без..
17. Владимир (hogik) 23.06.10 20:21
(14)
"быстро, за исключением загрузки глобальника ~ 3 минуты ожидания"
Загрузки или открытия файлов базы данных?
Медленно при входе первого пользователя после "начального" запуска сервера ADS или в любом случае?
Какой размер 1CV7.DD и 1CV7.MD и сколько DBF файлов в каталоге?
(11)
"слегка доработать библиотеки коннекта"
Попробую сделать. Куда высылать отладочную версию? У меня нет "wine в среде Linux" ;-)
18. alexbax (AlexBax) 24.06.10 00:30
(17) Буду признателен ;)
Отправить отладочную версию можно на sysadmin@arkada-td.ru, копию на alexbax70@mail.ru
Просьба в теме указать hogik - спама много, чтобы по ошибке с ходу не удалил..
Буду ждать и заранее Спасибо :)
19. @lex alexeew (@lex) 24.06.10 02:07
(17) Размер md 20 метров. При входе пользователя в любом случае. Независимо от количества пользователей. Может, антивирус мешает или еще что - конкретно не скажу...
А файлы БД сервер ADS должен открывать и отдавать результаты па запросу от клиента или технология не совсем клиент-сервер получается?
20. Владимир (hogik) 24.06.10 03:54
(19)
"Размер md 20 метров."
Про медленный запуск сессии 1Са - Ваш ответ, на мой вопрос, не полный. Если не очень волнует это, то и не будем разбираться.
"технология не совсем клиент-сервер"
Файлы открывает, читает, пишет, создаёт и т.д. сам сервер ADS. Каталог расположения таблиц приходится ему сообщать, т.к. ИБД 1С создана из "свободных" таблиц, а не в словаре данных. И результат он отдаёт по запросу. Но в нашем случае запросы не являются SQL.
21. @lex alexeew (@lex) 24.06.10 08:18
(20) В ближайшее время постараюсь протестировать начальную загрузку, уточню из-за чего такие тормоза... Пользователей напрягает, думают, что висит программа :). Отпишусь по результатам тут же.
22. AdepTcs 15.05.12 08:02
(18) alexbax,
Видимо, тема уже устарела и неактуальна, но всё же.
Подскажите, получилось ли что-либо с передачей в ADS unix-пути?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа