Установка 1с77 на сервер терминалов Linux

Материал из База знаний Etersoft
Перейти к навигацииПерейти к поиску

(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://alpha6.ru/blog/?p=3

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, то пущай уж и сервер терминалов будет от них же, даром что ли они его делали? Эта версия сервера, также, как и ориги­нал, является бесплатной.

Краткую документацию по установке и настройке сервера можно посмотреть здесь:

http://wiki.etersoft.ru/RX

Приступим к установке. Сначала нужно установить 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 cus­tom 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), исправляем или добавляем следующие строки:

  1. 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 будет подцепляться автоматически:

  1. включаем режим общего win-окружения

ATTACH_MODE="yes"

  1. путь к общему 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С-ки в терминальном режиме необходимо присвоить базам и файлам внутри них определенные права. Сделать это поможет скрипт setwine­share, который устанавливается вместе с пакетом 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

  1. Задаём имя ярлыка

Name=1С Предприятие

  1. Прописываем полный путь к исполняемому файлу EXE вместе с ключами запуска
  1. (если они имеются) в таком виде:

Exec=env WINEPREFIX="/home/<user>/.wine" wine "E:\\1Cv77\\BIN\\1cv7.exe" enterprise

  1. Задаём тип приложения и дополнительные данные

Type=Application

StartupWMClass=Wine

  1. Прописываем полный путь до рабочей папки (в данном случае рабочая папка совпадает с
  1. папкой, где находится исполняемый файл EXE)

Path=/home/<user>/.wine/dosdevices/c:/Program Files/1Cv77/BIN

  1. Прописываем полный путь к иконке для ярлыка:

Icon=/home/<user>/.local/share/icons/6725_1cv7.0.xpm

  1. Если хотите, можно задать имя программы

GenericName[ru_RU]=

Обратите внимание, что во всех строках вместо <user> нужно прописать имя пользователя, а в строках, содержащих адреса, прописать точное название папки и файла запуска, включая заглавные и строчные буквы (поскольку любой путь в системе Linux регистрозависим).

Ну а теперь запускаем оболочку 1С 7.7 и прописываем нужные базы, которые в моем случае на­ходились на диске e:.

Теперь после всех действий переходим к последнему шагу.


ШАГ 4: "Допиливаем" систему

1) если вы хотите, чтобы при подключении к серверу 1С-ка стартовала сразу без загрузки графиче­ской оболочки (при этом создается ощущение, что программа запущена на компьютере пользовате­ля), для этого сначала создаем скрипт:

  1. !/bin/bash
  1. если возникают проблемы с клавиатурой, то раскомментируем строку ниже:
  1. /etc/nxserver/fixkeyboard
  1. настройка переключения с русской клавиатуры на английскую через Ctrl+Shift

setxkbmap -rules xorg -model pc105 -layout "ru,us" -variant "winkeys," -option "grp:ctrl_shift_toggle,grp_led:scroll"

  1. установка точки вместо запятой на дополнительной клавиатуре

xmodmap -e "keycode 91 = KP_Delete KP_Decimal KP_Delete KP_Decimal"

  1. Команда запуска 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

В качестве выхода из такой ситуации предлагается создать скрипт:

  1. !/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:

http://freenx.berlios.de/

Здесь вы найдете последнюю версию сервера 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.aboutubuntu.ru/content/ustanovka-freenx-dlya-udalennogo-administrirovaniya-v-graficheskom-rezhime-na-ubuntu-804

или здесь: 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://www.strangeman.ru/?p=3

http://ubuntuforums.org/showthread.php?t=620057

http://opennet.ru/base/X/freenx_freebsd.txt.html

4) Компания Google тоже выпустила свою версию NX-сервера под названием Neatx. Дело в том, что бесплатный сервер FreeNX написан на нескольких разных языках программирования (Bash, C и Ex­pect), из-за чего он практически не поддерживается сообществом, поэтому основная часть библио­тек "кочует" из одной версии в другую почти в неизменном виде. Компания 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>



Поддубный Виталий http://webcache.googleusercontent.com/search?q=cache:3rhioGxz4HkJ:forum.runtu.org/index.php%3Faction%3Ddlattach%3Btopic%3D4742.0%3Battach%3D2317+nxserver+fixkeyboard&cd=4&hl=ru&ct=clnk&gl=ru&lr=lang_en%7Clang_ru&client=firefox-a