В результате исследования проблеммы внедрения сервера терминалов без использования серверного ПО от доблестной компании MS
было рассмотрено множество вариантов с соответствующими выводами:
а) Linux + VNC-server (tightVNC) - тормозит
б) Linux + nxFree - в общем-то стоит денег, бесплатно - только одно подключение. Есть free-аналог freenx - но...нужен напильник размером с дом
в) Linux + Xserver + XMing на удаленном windows-хосте - тормозит еще больше, чем VNC
ну собственно и вариант Г :) Linux (Slackware current) + xrdp (0.4.1) + wine(1.1.19) + 1Сv8.1
Шаг 1: 1С
1C(v8.1) завелась без проблем после замещения стандартных библиотек ( browseui mshtml msls31 ole32 oleaut32 olepro32 rpcrt4 shdocvw shlwapi urlmon ) в каталоге ~/.wine/drive_c/windows/system32 с последующим прописыванием оных в winecfg, доп.установки Gecko и Internet Explorer 6, единственное что не работает, так это интерфейс SQLDMO.
Еще хотелось бы добавить, что по-умолчанию не работало сглаживание шрифтов в 1С, это можно поменять и руками в реестре из под wine, но есть более элегантное (или простое) решение
http://files.polosatus.ru/winefontssmoothing.sh - запускаем в консоли - далее все понятно.
PS: для эстетов загадочных делаем следующее:
выполняем команду wine ~/.wine/drive_c/windows/regedit.exe
и правим следующие параметры
[HKEY_CURRENT_USER\Control Panel\Desktop]
"FontSmoothing"="2"
"FontSmoothingType"=dword:00000002
"FontSmoothingGamma"=dword:00000578
"FontSmoothingOrientation"=dword:00000001
Шаг 2: Xrdp
Далее настраиваем собственно сам xrdp, домашняя страничка находится в плачевном состоянии (http://xrdp.sourceforge.net/), однако оттуда выкачиваем бинарники (на текущий момент
имеется версия 0.4.1). Как обычно - распаковываем make, make install (можно почитать прилагающийся install.txt).
Так как сам xrdp поддерживает терминалы по vnc и по rdp, то ему понадобятся библиотеки от TightVNC, ставим собснно tightVNC - скачиваем - configure && make && make install.
По-умолчанию xrdp ставится в /usr/local/xrdp (бинарниики) и /etc/xrdp (настройки).
В /etc/xrdp/sesman.ini и /etc/xrdp/xrdp.ini всё достаточно прозрачно настраивается. В sesman увеличиваем макс.количество открываемых сессий и (по желанию) пользователя/группу, которым будет разрешено входить на сервер терминалов. В rdp.ini я поставил подключения по rdp (а не по vnc) на первое место (просто вставляем секцию про rdp6 после секции c global-настройкам).
Для работы в режим RDP нужен бинарник X11rdp, собственно заточенный под RDP. Исходников найти не удалось, но есть бинарник http://server1.xrdp.org/temp/X11rdp. Скачиваем, кидаем в /usr/bin
Далее шрифты - этот бинарник ищет шрифты в /opt/X11rdp/lib/X11/fonts
Создаем каталоги /opt/X11rdp/lib/X11, сделал симлинк fonts на папку со шрифтами уже стоящего X-сервера (у меня лежали в /usr/share/X11/fonts).
Сервер уже готов к запуску, но не поддерживает ввод русского языка. Для включения этой непонятной возможности можно использовать утилиту xkbcomp. Ей подсовываем файл со следующим содержанием:
xkb_keymap {
xkb_keycodes { include "xfree86+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+ru(winkeys)+us:2+group(ctrl_shift_toggle)" };
xkb_geometry { include "pc(pc104)" };
};
(допустим назовем его /usr/local/xrdp/rus.map) выполняем команду 'xkbcomp /usr/local/xrdp/rus/map $DISPLAY' в открытой xrdp сессии - и вуяля - получяем переключение по Ctrl+Shift с русского на английский язык.
Прописываем эту команду в конец файла /usr/local/xrdp/startwm.sh.
Кстати, в этом файле можно прописать команду WM, который будет стартовать при открытии сеанса, а также саму 1С :)
Собственно все настройки готовы - запускаем и наслаждаемся.
Еще немного подводных камней:
1. Для нормального запуска 1С под wine, нужно чтобы каждый пользователь запускал свою копию wine. Т.е. нужно каждому пользователю в его домашний каталог установить 1С и оттуда уже запускать. Если запускать из одного места, то 1С начинает конкретно тупить.
2. Под одним пользователем нескольким клиентам работать не получится (у меня запустить по крайней мере не получилось).
3. Иногда замечал, что 1С при запуске начинает кушать 100% процессора. Решение - прибить процесс и перезапустить :)
4. Печать на локальный принтер из сессии не получится. Есть задумки насчет CUPS, но нужно время.
Использован материал:
http://www.opennet.ru/openforum/vsluhforumID15/1638.html