Установка 1с77 на сервер терминалов Linux
(RX@Etersoft+Wine@Etersoft+1C 7.7)
В данной статье изложен процесс установки и настройки сервера терминалов и клиентской части.
Данное описание предназначено для систем Ubuntu 8.04.
Что нам потребуется для установки всего этого хозяйства? В первую очередь дистрибутив Ubuntu, а также купленный Wine@Etersoft Network или SQL, ну и соответственно скачать серверную часть FreeNX и клиентскую NX-Client (все необходимые ссылки будут приведены ниже).
Сначала устанавливаем и настраиваем систему Ubuntu (Runtu3 или InfraLinux). Не будем вдаваться в подробности, как все это делается, а сразу перейдем к установке сервера терминалов. Добавлю лишь, что после установки системы неплохо было бы установить Openbox, и под профилем каждого пользователя, кто будет подключаться к серверу, прописать сеанс Openbox или GNOME/ Openbox. Быстродействие заметно повышается. Сделать это можно, отредактировав файл .dmrc в домашнем каталоге каждого пользователя. Конечный вариант файла будет выглядеть так:
[Desktop]
Session=openbox-gnome
Если же машина, на которой будет устанавливаться сервер терминалов, находится в серверном шкафу, то можно смело прописывать сеанс GNOME/Openbox для всех пользователей через gdmsetup
Источники, которыми я пользовался в процессе написания статьи:
http://www.openkazan.info/1C-Ubuntu-FreeNX-Wine-Etersoft
Форум, на котором обсуждаются проблемы NX-сервера и клиента, а также даются советы и выкладываются патчи для серверной и клиентской части:
http://linuxforum.ru/index.php?showtopic=64076
Выражаю свои благодарности:
dimbor'у за патч NX-клиента и советы;
другим участникам LinuxForum'а за советы и решения по устранению некоторых проблем;
команде ООО "Этерсофт" за доработанную версию FreeNX;
Артему Савонину из Йошкар-Олы за дельные советы;
остальным участикам Linux-сообщества за дополнения, замечания, критику и т.д.
ШАГ 1: Установка сервера терминалов
Хоть и существует несколько различных версий FreeNX и патчей к ним, мы все-таки остановились на разработке RX@Etersoft, которая основана на исходных кодах FreeNX. Эта версия периодически обновляется, в ней устраняются найденные ошибки. Ну и ещё одним аргументом является простое логическое мышление: если мы будем использовать Wine от Etersoft, то пущай уж и сервер терминалов будет от них же, даром что ли они его делали? Эта версия сервера, также, как и оригинал, является бесплатной.
Краткую документацию по установке и настройке сервера можно посмотреть здесь:
Приступим к установке. Сначала нужно установить SSH-сервер:
sudo apt-get install openssh-server
или
sudo apt-get install ssh
(здесь уже не только сервер, но и клиент).
Если есть желание, можете настроить SSH-сервер под свои требования, отредактировав файл /etc/ssh/sshd_config вручную или использовав оболочки типа Webmin. Но две настройки обязательно должны присутствовать:
1) проверьте наличие строки PubkeyAuthentication yes, раскомментируйте ее или добавьте вручную (если она отсутствует);
2) раскомментируйте или добавьте вручную строку AllowUsers, в которой необходимо прописать всех пользователей сервера терминалов, включая пользователя с именем nx; строка должна выглядеть примерно так:
AllowUsers user1@127.0.0.1 user2@127.0.0.1 user3@127.0.0.1 nx
Теперь перезапустим SSH-сервер:
/etc/init.d/ssh restart
Затем нам надо обзавестись последней версией RX@Etersoft. Скачать ее можно отсюда:
ftp://updates.etersoft.ru/pub/Etersoft/RX@Etersoft/
Далее идем в папку в папку c последней версией (или предыдущей) и забираем необходимые пакеты: freenx-server_* и nx_* для нашей системы. До кучи можно дернуть утилиту администрирования запущенных сеансов nxsadmin_* и NX-клиента от Etersoft'а, а в папке Windows можно найти последнюю версию клиента для windows'а. Если же вы хотите использовать самую новейшую, но нестабильную версию (на свой страх и риск), то можете эти пакеты скачать из папки с последней версией (на момент написания статьи это была версия 3.3.0_13-16) и установить поверх старой версии.
Примечания:
1) в некоторых источниках сказано, что перед установкой для во избежание лишних ошибок нужно присвоить файлу ipp права 755:
sudo chmod 755 /usr/lib/cups/backend/ipp
2) также для NX-сервера еще необходимо установить пакеты expect, tcl8.4 и dbus-x11. Рекомендую выполнить эти условия, хуже не будет.
3) если вы планируете пользоваться принтерами и расшаренными ресурсами, то необходимо установить пакеты samba, smbfs, foomatic, foo2zjs, cupsys-bsd и т.д.
Теперь устанавливаем пакеты удобным для вас способом (через графические утилиты или консоль). Если в процессе установки система ругнулась на недостающие пакеты, даем в консоли команду: sudo apt-get install -f
Когда все установится нормально, приступим к конфигурированию. Сначала даем команду установки параметров NX-сервера:
sudo nxsetup --install
(если требуется создать свой ключ и далее импортировать его на каждое клиентское место) или
sudo nxsetup --install --setup-nomachine-key
(в этом случае создастся ключ по умолчанию, который уже будет "зашит" в NX-клиент)
Теперь необходимо настроить системное окружение пользователя nx, от имени которого и происходит вся работа с nxserver. В консоли вводим команду:
sudo /etc/init.d/freenx-server setup
После успешного завершения запускаем сервис:
sudo /etc/init.d/freenx-server start
Убедимся, что все работает нормально:
sudo /etc/init.d/freenx-server status
После проделанных действий в каталоге /var/lib/nxserver/home/.ssh/ должны появиться ключи. Если вы не воспользовались созданием ключа по умолчанию и сгенерировали свой, то необходимо скопировать файл client.id_dsa.key куда-нибудь, например, на флэшку или в расшаренную папку, поскольку его нам в дальнейшем потребуется импортировать в NX-клиент на каждой машине. Если этого ключа нет или по каким-либо причинам вы решили создать новый ключ, его необходимо сгенерировать командой sudo nxkeygen
Затем слегка сконфигурируем сервер. Конфигурирование осуществляется путем редактирования файла /etc/nxserver/node.conf. В этом файле 0 = False, 1 = True.
NX-сервер для авторизации изначально использует пароли системных пользователей, но можно создать свою базу данных пользователей. Раскомментируем и изменим параметр ENABLE_PASSDB_AUTHENTIFICATION c 0 на 1. Этим мы разрешаем аутентификацию при помощи базы паролей nxserver (я это делать не стал, чтобы не плодить тонну лишних паролей).
При попытке повторного подключения в клиенте всегда будет вылезать окошко со списком запущенных сессий. Чтобы не учить бухгалтеров нажимать на кнопку New, изменяем параметр ENABLE_SHOW_RUNNING_SESSIONS на 0. При этом будет автоматом запускаться новый сеанс, а при наличии приостановленных сессий будет выводиться окошко со списком этих самых сессий.
Также обязательно выставляем уровень ведения логов NX_LOG_LEVEL=7 (можно и ниже, какой вам удобнее, но я рекомендую сделать максимальным). И только после того, как настройка полностью завершена, и мы убедились, что все работает нормально, можно отключить ведение логов (ставим обратно 0), чтобы не создавать лишнюю нагрузку на систему.
Если вы для протокола SSH используете не 22-й порт, а какой-либо другой (например, 2222), то его обязательно надо указать в строке SSHD_PORT=2222
Если вы хотите отключить шифрование трафика, то в строке EXTERNAL_PROXY_IP нужно прописать IP-адрес сетевой карты, которая "смотрит" в локальную сеть, а также в файерволле открыть диапазон TCP-портов (от 5500 до ???) на входящий трафик.
В принципе там можно еще кучу всего наредактировать. Проверить правильность конфиг-файла можно командой sudo nxloadconfig --check Программа конечно же ругнется на параметр COMMAND_START_CDE=cdwm, можно на это не обращать внимания (этот параметр — для системы Solaris).
Примечание: если вы планируете использовать сервер терминалов в режиме Desktop (т.е. с загрузкой рабочего стола на клиентской машине), то рекомендую установить до кучи оболочку XFCE4, а ещё лучше — LXDE, а затем в строке COMMAND_START_CDE вместо cdwm прописать startxfce4 или startlxde соответственно, а затем в клиенте выбрать оболочку CDE; это повысит быстродействие клиента (все окна будут прорисовываться гораздо быстрее, особенно с LXDE), да и нагрузка на сервер снизится (поскольку не нужно будет загружать ещё один сеанс GNOME или KDE), и в итоге от этого параметра будет гораздо больше пользы.
Теперь вернёмся к процессу настройки. После всех изменений сохраняем файл и перезапустим сервер:
sudo /etc/init.d/freenx-server restart
Теперь создаем системных пользователей (либо через графическую утилиту, либо командой sudo adduser <имя> ), присваиваем права, вбиваем пароли, в общем делаем все то, что попросит система.
Если вы все-таки решились на то, чтобы авторизация проводилась не системой, а самим NX-сервером, то добавляем пользователей NX-сервера и прописываем пароли для них:
sudo nxserver --adduser <имя>
sudo nxserver --passwd <имя>
Рекомендую имена пользователей и пароли для них делать такими же, как в системе, чтобы не забивать голову лишней информацией ни себе, ни другим.
Примечание: администрировать систему можно при помощи утилиты nxsadmin, которая обязательно должна быть запущена от имени root'а. Поэтому, если вы хотите добавить ярлык админки на рабочий стол, во вкладке "Значок запуска" в строке "Команда" перед командой запуска нужно прописать gksu, и при старте программа будет просить пароль администратора; полностью команда запуска в этой строке будет выглядеть так: gksu /usr/sbin/nxsadmin
Если этого не сделать, то программа запустится, но не получит доступа к модулю nxserver, и вы не увидите запущенных сессий.
Когда все готово, переходим к следующему шагу.
ШАГ 2: Установка клиентов сервера терминалов
Существует несколько различных версий клиентов NX-терминала как для систем Linux, так и для windows. Скачать "родную" последнюю версию клиента от NoMachine можно здесь (на момент написания статьи последней версией являлась 3.3.0-6):
http://www.nomachine.com/download.php
Для этой версии также существует патч от dimbor'a, который устраняет многие проблемы и повышает скорость работы (о ней будет сказано чуть ниже, в п.4.2).
Версию клиента от компании Etersoft, в которую уже включен патч от dimbor'а, можно скачать отсюда:
ftp://updates.etersoft.ru/pub/Etersoft/RX@Etersoft/Windows/
Какую версию использовать, решать вам. Если вы будете устанавливать клиента на Линукс, то лучше скачать "родной" клиент от NoMachine или от компании "Этерсофт"; если же к серверу будут подключаться и виндовые клиенты, то для windows рекомендую воспользоваться сборкой от "Этерсофта" или же пропатчить оригинальный клиент.
Если вы решили установить под Линукс NX-клиент от "Этерсофта" (его можно взять из той же папки, где расположены пакеты серверной части), то вместе с клиентом также необходимо установить пакет nx_3.3.0, причем пакет желательно (но необязательно!) установить той же версии, которая используется на сервере. Если при первом запуске клиент выдаст сообщение, что не может найти некоторые модули, и попросит указать папку, где они расположены, необходимо прописать путь /usr либо /usr/lib/nxclient.
Установка клиента проходит в обычном режиме. После установки запускаем NX Connection Wizard и настраиваем сеанс: вводим имя сессии (например, 1sterm), указываем адрес сервера терминалов и порт, а также тип соединения. В следующем окне указываем систему Unix и оболочку GNOME (либо другую по вашему выбору), разрешение экрана (я оставил параметр по умолчанию); можно установить галочку "Disable encryption of all traffic", тогда сервер будет работать немного быстрее, но для этого нужно сделать одну небольшую настройку в самом сервере (см. шаг 1). А в следующем окне устанавливаем обе галочки и переходим в режим расширенных настроек.
В первой вкладке — General — проверяем все наши настройки, в секции Server можно поставить галочку "Remember my password", чтобы пользователь не набирал свой пароль постоянно при входе, также можно сразу импортировать ключ с сервера, нажав "Key" и выполнив одно из действий (файл с ключом или по умолчанию получить с сервера при первом запуске). Чтобы не было лишних проблем, нужно в этом окне нажать Import и указать файл ключа client.id_dsa.key, который мы успешно сохранили еще со времен выполнения шага 1. В секции Desktop устанавливаем скорость работы (для хороших компьютеров рекомендую устанавливать скорость MODEM или ISDN; для "слабых" компьютеров рекомендую установить скорость ADSL; не рекомендую устанавливать скорость WAN или LAN, поскольку будет высокая нагрузка на сеть, и в результате более низкое общее быстродействие). Ну а в секции Display рекомендую установить галочку "Use custom settings", затем войти в Settings и установить параметры компрессии рисунков и цвета (рекомендую сделать все по минимуму, в частности я установил галочки "Use both JPEG and RGB compression" и "Use custom JPEG Quality" и установил флажок на 0).
Во вкладке Advanced в секции Network можно указать различные параметры соединения и передачи данных, а в секции System — количество оперативной памяти и кэша на диске, которые будут отводиться на сеанс (это очень полезно для "слабых" машин). Если в системах windows процессор загружается на 100%, то нужно также поставить галочку "Disable DirectDraw for screen rendering".
В третьей вкладке — Services — в секции Devices вы можете указать, какие общие принтеры и папки с других компьютеров будут подключаться во время сессии, поставив галочки Enable SMB printing and file sharing и Enable CUPS printing (если у вас имеется сетевой принтер), нажав Add и выбрав необходимые ресурсы из списка; а в секции Multimedia можно включить трансляцию звука на локальный компьютер (что может немного замедлить сеанс).
Более подробно про подключение общих принтеров и папок вы можете прочитать здесь:
http://wiki.etersoft.ru/RXsharingandprinting?v=187q
В следующей вкладке — Environment — можно прописать остальные параметры для NX-клиента.
После всех проделанных действий на рабочем столе вы увидите ярлык на файл <имя_сессии>.nxs (в нашем случае 1sterm.nxs). Запустить сеанс можно, нажав два раза мышкой на этот ярлык.
И вот с этого момента начинается самое интересное... Теперь я опишу, какие "грабли" могут быть в этот долгожданный момент, чтобы вы на них не наступали.
Итак, при первом старте клиент выдаст запрос на импорт публичного ключа сервера SSH (если вы конечно не отключали PubkeyAuthentication), а затем сервера NX, в обоих случаях нажимаем Yes. Если после этого будет выдаваться сообщение типа "The NX service is not available or the NX access was disabled on host ...", жмем Detail и смотрим:
...
NX> 200 Connected to address: 192.168.1.2 on port: 22
NX> 202 Authenticating user: nx
NX> 208 Using auth method: publickey
NX> 204 Authentication failed.
Причина: либо вы не импортировали в NX-клиент ключ client.id_dsa.key с сервера (как это было описано выше), либо на сервере был сгенерирован новый ключ. В любом случае возвращаемся к шагу 1 и читаем про ключи.
Также в процессе подключения может выдаваться сообщение "Authentification failed for user <имя>", но при локальном входе под именем этого же пользователя авторизация проходит нормально. Значит нас не пускает SSH-сервер. Возвращаемся к самому началу шага 1, где описана необходимая настройка SSH-сервера, и выполняем требования.
Следующие грабли, с которыми я столкнулся: при подключении клиент к серверу подцепляется, но "зависает" на стадии "Negotiating link parameter", после чего пишет, что не может подключиться и предлагает "убить" сессию. Причина этого поведения: в клиенте во вкладке Advanced стоит галочка "Disable encryption of all traffic" (о чем было сказано выше). Выход: либо настройте NX-сервер на передачу данных в незашифрованном виде, либо снимите галочку.
В процессе тестирования этой системы со скриптом, описанным на шаге 4А, я наступил на свои же грабли: установил серверную и клиентскую часть на один компьютер (хотел при помощи NX-клиента подцепляться к серверу локально, чтобы показывать потенциальным клиентам, как это будет выглядеть на практике), но не тут-то было: выяснилось, что при таком раскладе линуксовый NX-клиент "зависает": окно сеанса с запущенной 1С-кой темнеет, однако все менюшки открываются нормально, и можно даже выйти из запущенного сеанса (кстати, этот же эффект проявляется при включенном Compiz'е).
Отсюда мораль: никогда не устанавливайте на один компьютер серверную и клиентскую части и не включайте Compiz!
В случае разрыва соединения, если вы попытаетесь снова подключиться к серверу, NX-клиент выдаст сообщение, что ваш сеанс уже запущен. В этом случае у вас есть 2 варианта:
1) продолжить сеанс с места разрыва: выбрать сеанс и нажать Resume;
2) завершить запущенный ранее сеанс и начать новый: выбрать сеанс, нажать Terminate, затем, когда он исчезнет из списка, нажать New.
Подробное описание NX-клиента (правда, на буржуйском) вы можете найти на сайте NoMachine:
http://www.nomachine.com/documents/configuration/client-guide.php
ШАГ 3: Установка 1С 7.7 на сервер
Источник: http://www.etersoft.ru/content/view/56/156/
Сначала нужно установить Wine@Etersoft версии Network Lite, Network или SQL, которую вы приобрели (ну или нелегально стянули с какого-нибудь варезника или торрента; от себя рекомендую честно приобрести нужную версию Wine@Etersoft, поскольку в этом случае вы будете получать обновления, в которых будут устранены различные найденные ошибки). Итак, ставим по очереди все пакеты.
В системах Linux стоит ограничение на количество открываемых файлов, которое можно устранить одним из двух способов:
1) в конфигурационном файле /etc/security/limits.conf выставляются необходимые значения:
soft nofile 5000
hard nofile 5000
В файле /etc/pam.d/common-session прописываем: session required /lib/security/pam_limits.so
Лимит на открытые файлы можно узнать при помощи команд ulimit -n или winediag
2) редактируем файл /etc/sysctl.conf (для Ubuntu 8.10 и выше: /etc/sysctl.d/10-process-security.conf), исправляем или добавляем следующие строки:
- Maximum number of open files permitted
fs.file-max = 104854
Также в этом же файле нужно исправить строку vm.mmap_min_addr: вместо 65536 прописать 0, тем самым мы уберем нижнюю границу маппинга адресов и избавимся от лишних ошибок и предупреждений.
После всех изменений в консоли даем команду sysctl -p для вступления настроек в силу.
Далее будут описаны действия, которые нужно выполнить под профилем каждого пользователя отдельно.
Сначала нужно зайти в систему под именем пользователя и в консоли дать команду wine, чтобы программа создала в домашнем каталоге пользователя нужную конфигурацию.
Теперь устанавливаем платформу 1С 7.7 и конфигурацию. У вас есть 3 варианта:
1) установить и настроить оболочку 1С под профилем каждого пользователя отдельно;
2) установить 1С под профилем одного пользователя, затем создать общий каталог, например /var/1s, в который нужно скопировать оболочку и базы данных, а затем опять же провести настройки под профилем каждого пользователя отдельно;
3) установить 1С в административном режиме: создается общая папка, назначается администратор Wine, остальные "подцепляют" эту папку; администратором устанавливается и настраивается 1С, и все настройки будут действовать на всех пользователей группы Wine.
А вот с этого места более подробно... Итак, при установке Wine автоматически создаются две группы пользователей: wine и wineadmin. Одного пользователя добавляем в группу wineadmin (он и будет администратором Wine), остальных — в группу wine. Если у пользователей в домашних каталогах уже имеется каталог /.wine, его необходимо у всех удалить.
Затем необходимо создать каталог, который потом у всех будет определяться в качестве диска C:\. По умолчанию таким каталогом является /var/lib/wine/default, но вы можете назначить и другой, присвоив ему права 664 (владелец — root, группа — wineadmin).
Теперь администратор Wine должен в консоли дать команду:
wine --admin /<путь>/<до>/<каталога>
После этой команды диском C:\ у администратора становится не /.wine/dosdevices/c:/ в его домашнем каталоге, а указанный в команде каталог; эта команда также присвоит необходимые права файлам и каталогам внутри этого каталога (на каталоги права 2770, на каталог /temp — 1770, на файлы — 0660). Если вы будете использовать файл-сервер, то эту команду необходимо дать на компьютере, где расположены расшаренные базы.
Остальным пользователям теперь только нужно подключиться к общему каталогу Wine, набрав в консоли под своим профилем команду:
wine --attach /<путь>/<до>/<каталога>
Чтобы не заморачиваться с каждым новым пользователем, нужно подредактировать файл /etc/wine/config, исправив в нем приведенные строки, как показано ниже, и тогда у каждого нового пользователя общий каталог Wine будет подцепляться автоматически:
- включаем режим общего win-окружения
ATTACH_MODE="yes"
- путь к общему win-окружению
WINEADMIN="default"
Можно еще упростить себе жизнь:
1) если нужны одинаковые диски для всех пользователей, то в каталоге /etc/wine редактируем скрипт map_devices.sh, добавляем в самый конец строки, где назначим диски через команду map_drive; например, назначим каталог /media в качестве диска D:, строка будет выглядеть так:
map_drive /media d:
2) чтобы настройки Wine можно было применить для всех пользователей сразу, запускаем редактор реестра командой wine regedit и экспортируем нужную ветвь в файл <имя>.reg (например, myconf.reg) и сохраняем в каталоге /etc/wine; все вновь созданные пользователи сразу получат полностью настроенный профиль под Wine.
Все выше перечисленные трюки необходимо выполнять только после полной настройки Wine и установки необходимых программ под профилем администратора Wine. Чтобы эти трюки вступили в действие, нужно под профилем каждого пользователя в консоли дать команду wine --update или wine --attach
Теперь еще пара тонкостей. Для корректной работы 1С-ки в терминальном режиме необходимо присвоить базам и файлам внутри них определенные права. Сделать это поможет скрипт setwineshare, который устанавливается вместе с пакетом wine-etersoft-network или -sql. Итак, заходим в консоль и даем команду
sudo setwineshare --set /var/1s
где /var/1s — каталог, где лежат наши базы.
Вторая тонкость: если вы собираетесь организовывать "смешанный" сервер для 1С (т.е. терминальный + файловый), вдобавок нужно создавать файл-сервер, который работает по протоколу CIFS, и папки с базами нужно монтировать всем пользователям именно по этому протоколу независимо от того, как пользователи будут работать: через терминал или файл-сервер, иначе общего доступа для всех может не получиться. Как организовать такой сервер, будет описано в самом конце в разделе "Приложения".
Подредактируем нашу конфигурацию wine: даем в консоли команду winecfg (либо среди многочисленных менюшек ищем "Настройки Wine"), идем во вкладку "Диски", нажимаем "Добавить" и вводим путь к базам (в нашем случае это /var/1s), запоминаем букву диска, которая будет соответствовать этому пути (лично у меня это диск e:); этим действием мы позволили Wine'у "увидеть" наши базы.
Чтобы было красиво и удобно, можно добавить кнопку запуска 1С на рабочий стол каждого пользователя: Приложения → Wine@Etersoft → Программы → 1С Предприятие 7.7 → в открывшемся меню правой кнопкой мышки щелкаем на "1С Предприятие" и выбираем "Добавить эту кнопку запуска на рабочий стол".
Второй вариант немного сложнее: на рабочем столе пользователя создаем пустой файл с названием <имя>.desktop, затем открываем его и наполняем таким содержанием:
[Desktop Entry]
Version=1.0
Encoding=UTF-8
- Задаём имя ярлыка
Name=1С Предприятие
- Прописываем полный путь к исполняемому файлу EXE вместе с ключами запуска
- (если они имеются) в таком виде:
Exec=env WINEPREFIX="/home/<user>/.wine" wine "E:\\1Cv77\\BIN\\1cv7.exe" enterprise
- Задаём тип приложения и дополнительные данные
Type=Application
StartupWMClass=Wine
- Прописываем полный путь до рабочей папки (в данном случае рабочая папка совпадает с
- папкой, где находится исполняемый файл EXE)
Path=/home/<user>/.wine/dosdevices/c:/Program Files/1Cv77/BIN
- Прописываем полный путь к иконке для ярлыка:
Icon=/home/<user>/.local/share/icons/6725_1cv7.0.xpm
- Если хотите, можно задать имя программы
GenericName[ru_RU]=
Обратите внимание, что во всех строках вместо <user> нужно прописать имя пользователя, а в строках, содержащих адреса, прописать точное название папки и файла запуска, включая заглавные и строчные буквы (поскольку любой путь в системе Linux регистрозависим).
Ну а теперь запускаем оболочку 1С 7.7 и прописываем нужные базы, которые в моем случае находились на диске e:.
Теперь после всех действий переходим к последнему шагу.
ШАГ 4: "Допиливаем" систему
1) если вы хотите, чтобы при подключении к серверу 1С-ка стартовала сразу без загрузки графической оболочки (при этом создается ощущение, что программа запущена на компьютере пользователя), для этого сначала создаем скрипт:
- !/bin/bash
- если возникают проблемы с клавиатурой, то раскомментируем строку ниже:
- /etc/nxserver/fixkeyboard
- настройка переключения с русской клавиатуры на английскую через Ctrl+Shift
setxkbmap -rules xorg -model pc105 -layout "ru,us" -variant "winkeys," -option "grp:ctrl_shift_toggle,grp_led:scroll"
- установка точки вместо запятой на дополнительной клавиатуре
xmodmap -e "keycode 91 = KP_Delete KP_Decimal KP_Delete KP_Decimal"
- Команда запуска 1С:
wine "C:\Program Files\1Cv77\BIN\1cv7.exe" enterprise &
Теперь сохраняем скрипт под любым именем, например term1s, через командную строку или mc делаем его исполняемым и присваиваем права 755. Затем копируем скрипт в домашний каталог каждого пользователя (либо выкладываем куда-нибудь в общую папку, путь к которой нужно будет прописать в клиентах).
Оригинальные варианты скрипта можно посмотреть здесь:
http://forum.ru-board.com/topic.cgi?forum=8&topic=22993#7
http://linuxforum.ru/index.php?showtopic=64076&st=90&p=690350&#entry690350
Затем открываем NX Client, нажимаем "Configure" и именяем настройку "Desktop на Custom; далее жмем Settings", ставим галочку "Run the following command" и в строке ниже прописываем путь к скрипту: /home/<user>/term1s (либо другой, если вы копировали скрипт не в домашний каталог каждого пользователя, а куда-либо еще); в приведенном примере вместо <user> нужно прописать имя пользователя. Смотрим чтобы стояла галочка "Floating window".
Сохраняем настройку, вводим логин/пароль и любуемся на 1С в обрамлении системных окошек.
Примечание: такой режим работы сервера терминалов называется Rootless. Увы, этот режим очень "капризный", например: именно для этого режима делал свой патч windows-версии NX-клиента, который описан в следующем пункте; патч конечно же значительно улучшает работу NX-клиента в режиме Rootless, но все равно до полного идеала пока еще далеко.
Помимо этого было замечено, что на не очень мощных компьютерах (например, с процессором Celeron 2,4GHz Socket478, памятью 512MB и встроенной видеокартой 8MB) 1С-ка работает не очень качественно: появляется эффект "листания" списков вместо гладкого прокручивания (возникает такое ощущение, как будто на видеокарту не установлены драйвера); некоторые клиенты могут смириться с этим, но большинство не хочет. Можно конечно же немного настроить NX-клиент (отключить ZLIB-компрессию, установить максимальное сжатие JPEG и RGB и т.д.), но это мало помогает. На более мощных компьютерах (с 64-битным процессором) и памятью от 1 ГБ ситуация гораздо лучше: окна открываются гораздо быстрее, поэтому эффект "листания" практически не заметен. Дальнейшее устранение этого дефекта возможно в первую очередь путём увеличения памяти на клиентской машине, а также не помешает установка внешней видеокарты (хотя она влияет в меньшей степени).
Поэтому добрый совет: если у вас такое происходит и клиент выражает вам свое недовольство, не выпендривайтесь и используйте режим Desktop, причем настроив его так, как было рекомендовано в примечании в шаге 1, а также порекомендуйте увеличить объем оперативной памяти и установить видеокарту хотя бы за 30 у.е.; в конечном итоге такие затраты будут гораздо ниже, чем затраты на покупку windows-сервера с терминальными лицензиями.
2) если вы используете оригинальную windows-версию NX-клиента от NoMachine, у нее есть несколько проблем, в частности при работе в режиме Rootless в заголовке окна вместо названия программы кракозябры. Устранить проблему можно, пропатчив NX-клиент; последнюю версию патча от dimbor'а можно скачать отсюда (требуется регистрация на форуме):
http://linuxforum.ru/index.php?act=attach&type=post&id=15029
С более полным перечнем устраненных проблем можно ознакомиться по этой же ссылке.
Затем распаковываем архив в папку с установленным NX-клиентом (по умолчанию C:\Program Files\NX Client for Windows\bin\) и заменяем файл NXWin.exe файлом из архива. Данный патч позволяет устранить еще несколько проблем и ускорить работу в режиме Rootless.
Нужно заметить, что самую свежую версию патча со своими достоинствами и глюками всегда можно скачать в пером сообщении или последней ветке этого форума; но перед тем, как пропатчить клиента, обязательно сохраните резервную копию файла NXWin.exe, поскольку патч может привносить свои баги, которые подчас бывают не очень приятными.
Если же вы установили сборку от компании "Этерсофт", то ничего патчить не нужно, поскольку все необходимые патчи в нее уже включены.
3) также в windows имеет место проблема при копировании текста из терминала на локальную машину, когда вместо текста копируются одни знаки вопроса; если эта проблема присутствует, то ее можно устранить, отредактировав реестр на клиентской машине:
ищем ключ [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage], создать строковый параметр (string) с именем 1252 и присвоить значение c_1251.nls
4) также существует проблема автоматического подключения локальных принтеров клиента к серверу FreeNX; в случае, если для клиентских принтеров есть "родные" ppd-файлы для CUPS, делаем следущее:
а) вариант №1: скопировать ppd-файл в домашний каталог каждого пользователя в папку с сессией: /home/<user>/.nx/<имя_сессии>/cups/ppd/<имя_принтера>.ppd
б) вариант №2 (в новых версиях FreeNX-сервера пока что не работает): в каталоге /etc/nxserver создаем каталог ppd и копируем в него файл <name>.ppd; имя файла должно совпадать с именем расшаренного принтера клиента; соответственно внутри PPD-файла должен быть прописан драйвер к нужной модели принтера; после этого при подключении клиента ему станут видны принтеры вида <client>_<printer>.
В случае если "родных" ppd-файлов нет — остается только добавлять принтер на сервер ручками.
Более подробно читаем здесь:
http://linuxforum.ru/index.php?showtopic=64076&st=240&p=740593&#entry740593
5) существует также проблема "несовместимости" систем Linux между собой, т.е. если у нас сервер терминалов установлен на Debian или Ubuntu, а мы пытаемся подключиться к серверу клиентом из другой системы (например Mandriva или Fedora), то возникают косяки с курсором, а некоторые кнопки клавиатуры не работают; проблема обсуждается здесь:
http://linuxforum.ru/index.php?showtopic=91931
В качестве выхода из такой ситуации предлагается создать скрипт:
- !/bin/bash
xmodmap -e "keycode 91 = KP_Delete KP_Decimal KP_Delete KP_Decimal"
xmodmap -e "keycode 111 = KP_Up"
xmodmap -e "keycode 114 = KP_Right"
xmodmap -e "keycode 113 = KP_Left"
xmodmap -e "keycode 116 = KP_Down"
xmodmap -e "keycode 119 = KP_Delete"
xmodmap -e "keycode 115 = KP_End"
xmodmap -e "keycode 117 = KP_Next"
xmodmap -e "keycode 112 = KP_Prior"
xmodmap -e "keycode 110 = KP_Home"
xmodmap -e "keycode 104 = KP_Enter" &
В нём прописаны неработающие кнопки. Затем на клиентской машине поместить этот скрипт куда-нибудь, а в автозагрузку прописать: xmodmap /<путь>/<до>/<файла>
6) также в некоторых системах после обновления может перестать работать setxkbmap под NX-сессией с ошибкой "Error loading new keyboard description".
Решение проблемы: создаем симлинк в нужном каталоге:
sudo ln -snf /var/lib/xkb/compiled /usr/share/X11/xkb/compiled
Взято отсюда: https://bugzilla.novell.com/show_bug.cgi?id=335553
ДОПОЛНИТЕЛЬНЫЕ МАТЕРИАЛЫ
Существует несколько версий сервера терминалов NX, как бесплатные, так и коммерческие варианты. Самый известный коммерческий вариант разрабатывается компанией NoMachine, но есть бесплатная версия — NX Free, которая имеет ограничения всего на 2 сеанса. Стоимость платных версий начинается от 744,5$. Официальный сайт: http://www.nomachine.com
Менее удачный проект получился у компании 2X: последняя версия сервера терминалов была выпущена в августе 2006 г.: http://www.2x.com/terminalserver/
Самым популярным бесплатным проектом стал FreeNX. Существует много веток разработки этого проекта. Есть также российский вариант FreeNX от компании "Этерсофт" — RX@Etersoft, на основе которого мы и вели настройку сервера терминалов. В репозиториях российского дистрибутива ALT Linux также присутствует своя сборка FreeNX.
А вот другие ссылки:
1) Официальный сайт разработчиков FreeNX:
Здесь вы найдете последнюю версию сервера FreeNX, документацию, ссылки на репозитории для различных систем, а также вы можете скачать исходники и собрать все вручную.
Репозиторий для Debian, который подойдет и для Ubuntu: http://packages.debianbase.de/
С документацией по установке и конфигурированию сервера вы найдете на сайте разработчика:
http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_-_FAQ
или на официальном сайте компании NoMachine: http://www.nomachine.com/documents.php
2) Есть также ответвление FreeNX — FreeNX-Team: https://launchpad.net/~freenx-team
Чтобы установить FreeNX-Team, нужно добавить в список источников репозиторий:
deb http://ppa.launchpad.net/freenx-team/ubuntu hardy main
deb-src http://ppa.launchpad.net/freenx-team/ubuntu hardy main
Затем заходим в консоль, обновляем репозиторий командой sudo apt-get update, затем устанавливаем: sudo apt-get install freenx.
Более подробную инструкцию по установке вы можете прочитать здесь:
или здесь: http://www.drtek.ca/freenx-server-ubuntu-hardy
3) Вот еще несколько статеек по установке и конфигурированию сервера FreeNX:
http://forum.ubuntu.ru/index.php?topic=19946.0
http://ru.opensuse.org/FreeNX_Server_HOWTO
http://ubuntuforums.org/showthread.php?t=620057
http://opennet.ru/base/X/freenx_freebsd.txt.html
4) Компания Google тоже выпустила свою версию NX-сервера под названием Neatx. Дело в том, что бесплатный сервер FreeNX написан на нескольких разных языках программирования (Bash, C и Expect), из-за чего он практически не поддерживается сообществом, поэтому основная часть библиотек "кочует" из одной версии в другую почти в неизменном виде. Компания Google решила исправить эту ситуацию, переписав "с нуля" NX-сервер на Питоне, добавив несколько скриптов на Bash и одну программу на C, чтобы в дальнейшем сообществу было проще поддерживать проект.
Сейчас проект находится пока что "в зачаточном" состоянии, но если вам интересно, вы всегда сможете скачать исходный код с официального сайта проекта:
http://code.google.com/p/neatx/
5) Существует еще один проект — x2go. Это уже совсем другой сервер терминалов, который отличается от FreeNX, но он при работает также использует протокол NX. Этот сервер более сложен в конфигурировании, клиент не так гибок в настройках, но зато он легко интегрируется с любым другим сервером, который для хранения профилей пользователей используют PostgreSQL или OpenLDAP (например, контроллер домена).
Сайт проекта: http://www.x2go.org
Подробное описание установки и настройки: http://www.linux4afrika.de/x2go/index.html
ПРИЛОЖЕНИЕ
Настройка файл-сервера Samba для 1С 7.7
Данные, приведенные в этом разделе, взяты из руководства пользователя Wine@Etersoft. Полный вариант инструкции можно прочитать здесь: http://www.etersoft.ru/content/view/56/156/#cifs
Для начала нужно установить установить и настроить сервер Samba. В интернете можно почитать инструкции, как сделать первоначальную настройку, мы же пропустим этот шаг и пойдем дальше.
Как правило, SAMBA-сервер поставляется с настройками по умолчанию, которые подходят для работы WINE, но следует проверить настройки, запустив на сервере команду:
sudo testparam -v
Будут выведены все текущие значения параметров. Изменить их можно в конфигурационном файле /etc/samba/smb.conf
Рекомендуется, чтобы oplocks были включены (включены по умолчанию) — это улучшит производительность в монопольном режиме; kernel oplocks (включены по умолчанию) можно выключить, это немного снизит загрузку на систему. Включенные логи (log level в значении больше 0) могут в несколько раз замедлить производительность. Проверьте, что указано use sendfile = yes. Таким образом пример оптимальных настроек может быть таким:
[global]
- oplocks = yes
kernel oplocks = no
use sendfile = yes
log level = 0
Примечание: для систем ALT Linux можно прописать такие параметры:
blocking locks = yes
kernel oplocks = yes
locking = yes
oplocks = yes
level2 oplocks = yes
posix locking = yes
strict locking = no
Остальные параметры по поводу locks/oplocks должны быть установлены по умолчанию. Параметр strict sync включает выполнение команд по сбросу буфера на диск (flush). По умолчанию он выключен, и это ускоряет работу.
Вот еще один пример файла smb.conf, когда файл-сервер настраивался на FreeBSD, а затем эта система интегрировалась в Active Directory:
http://hidx.wordpress.com/2009/03/26/1c-samba-my/#more-439
Частой проблемой является несоответствие прав, под которым обращается Samba-сервер, с правами на файлы, к которым он обращается. Например, при использовании security = share и обращении к серверу без указания пользователя/пароля он может обращаться к файлам от имени пользователя nobody или pcguest, которые вряд ли имеют права на изменение разделяемых файлов.
В примере ниже Samba с ресурсом sharewine всегда будет обращаться от имени wine:winetester к файлам в каталоге /var/1s:
[sharewine]
path = /var/1s
public = yes
force user = wine
force group = winetester
writable = yes
guest ok = yes
Теперь для Linux-клиентов необходимо собрать модуль CIFS@Etersoft. Для этого необходимо скачать и установить последнюю версию пакета etercifs_*. Скачать можно отсюда:
ftp://ftp.etersoft.ru/pub/Etersoft/CIFS@Etersoft/
После установки сначала отмонтируем все сетевые ресурсы, а затем соберем модуль. Сделать все это можно командой sudo /etc/init.d/etercifs restart. Если скрипт ругнулся на неотмонтированные ресурсы, то отмонтируем их вручную, затем даем команды на сборку модуля sudo /etc/init.d/etercifs build и рестарт.
Если все прошло удачно, переходим к следующему шагу: монтирование расшаренной папки с базами 1С в локальный каталог. Есть несколько различных вариантов; вот некоторые из них:
1) права доступа на файлы и папки будут определяться правами пользователя на компьютере и на сервере (в этом случае важно, чтобы права для пользователя на сервере были такими же):
mount -t cifs //<IP_server>/<share> /<local>/folder -o user=<workgroup/user>,pass=<passwd>,file_mode=0660,dir_mode=02770,uid=<user>,gid=<group>,iocharset=utf8,forcemand,direct
2) права доступа будут определяться на сервере, на локальном компьютере права проверяться не будут (это поможет избежать проблем с несовпадением прав):
mount -t cifs //<IP_server>/<share> /<local>/folder -o noperm,user=<workgroup/username>,pass=<password>,forcemand,direct
3) можно сделать автомонтирование при старте, прописав в /etc/fstab строку:
//<IP_server>/<share> /<local>/<folder> cifs credentials=/etc/cred,rw,iocharset=utf8,noperm,forcemand,direct 0 0
В этом примере показано, что система имя пользователя и пароль будет считывать из файла /etc/cred. Это позволяет не указывать пароль в командной строке в открытом виде, что повышает безопасность системы. Если вы решили использовать этот метод, то в любом каталоге нужно создать пустой файл (в нашем примере это /etc/cred), присвоить файлу права 600 и наполнить содержанием, например:
username=user1
password=123456
После этого следует создать новый виртуальный диск-каталог в ~/.wine/dosdevices, который будет указывать на локальный каталог, куда смонтирована файловая система.
Важное замечание: обратите внимание, что в опциях монтирования обязательно надо указывать параметры forcemand и direct. Более подробно об этих параметрах вы можете прочитать в документации к Wine@Etersoft (ссылка была дана выше).
Для монтирования вручную в пакете CIFS@Etersoft есть очень полезная утилита — etermount. Все, что для этого нужно: для начала в файле /etc/etercifs.conf необходимо настроить параметры монтирования: в строке DEFAUTL_MOUNTPOINT задаем папку, куда будут монтироваться расшаренные ресурсы; в строке MOUNT_OPTIONS прописываем нужные опции монтирования (см. примеры выше) либо оставляем по умолчанию. А затем в командной строке вводим команду:
sudo etermount //<IP_server>/<share>
Если нужно смонтировать ресурсы в другой каталог, то можно указать его в команде:
sudo etermount //<IP_server>/<share> /<local>/<folder>