Сервер терминалов или терминальный сервер FreeNX - предоставляет клиентам вычислительные ресурсы (процессорное время, память, дисковое пространство) для решения задач. Терминальный сервер на CentOS FreeNX для клиентов с операционной системой Windows и Linux позволит Вам снизить расходы на администрирование, повысит безопасность, снизит затраты на программное и аппаратное обеспечение.
Терминальный сервер FreeNX RX@Etersoft позволит организовать режим работы, при котором приложения выполняются на сервере, а на рабочие станции передается только изображение. Возможность подключаться как из Linux, так и из MS Windows. Данные не требуется передавать по сети, они обрабатываются там же, где и хранятся - на сервере. За счёт этого достигается высокая производительность работы ПО.
Этапы настойки:
1. Подготовка к установке терминального сервера FreeNX RX@Etersoft
2. Установка терминального сервера FreeNX RX@Etersoft на CentOS
3. Установка клиента в Windows и настройка подключения к терминальному серверу FreeNX RX@Etersoft в режиме -удалённый рабочий стол.
4. Подключения к терминальному серверу FreeNX в режиме одного приложения - rootless-режим
5. Решение проблемы, с использованием трех языковых раскладок в режиме rootless
6. Настройка передачи данных через буфер обмена (clipboard)
Возможно понадобиться отключить SELinux и фаервол Iptables
И ещё Вам понадобиться wget для загрузки пакетов
Подготовка к установке терминального сервера FreeNX RX@Etersoft
1. Установка X-ов и графического окружения
Установка графической оболочки GNOME, KDE. Рабочий стол в CentOS, Red Hat.
2. Добавить репозиторий RpmForge
Подключение репозиторев EPEL и RPMForge (RepoForge) в CentOS
Установка терминального сервера FreeNX RX@Etersoft на CentOS-6
1. Установка дополнительных пакетов
Возможно понадобится поставить пакеты и зависимости, если CentOS minimal
2. Скачать с официального сайта и установить пакеты FreeNX от RX@Etersoft
Ссылки на скачивание могут быть не актуальными, для скачивания последних пакетов, посмотрите их здесь ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/
CentOS-6wget ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/1.1.2/CentOS/6/*.rpm
Для систем x86_64 строка закачки будет следующей:wget ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/1.1.2/x86_64/CentOS/6/*rpm
CentOS-5wget ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/1.1.2/CentOS/5/*.rpm
Для систем x86_64 строка закачки будет следующей:wget ftp://download.etersoft.ru/pub/Etersoft/RX@Etersoft/1.1.2/x86_64/CentOS/5/*.rpm
У Вас скачаются следующие пакеты, (названия пакетов относительно их актуальности и разрядности системы):
nx-3.5.1-eter6scientific.i586.rpm
nxclient-3.5.0.7-eter4scientific.i586.rpm
nxsadmin-0.2.1-eter5scientific.i586.rpm
rx-etersoft-1.1.2-eter2scientific.i586.rpm
3. Установка пакетов терминального сервера FreeNX RX@Etersoft
Или как Вам удобно
Для систем RedHat 6.4 команда yum install nx*rpm может закончиться ошибкой из-за невозможности поставить графическую утилиту подключений, пакет nxsadmin, этот пакет ставить необязательно.
На момент написания этой статьи, последняя версия rx-etersoft-1.1.3. Сборки можно использовать бесплатно и без ограничений, но перед стартом терминальной сессии будет каждый раз появляться предупреждение об отсутствующем файле лицензии с предложением приобрести её. Что бы от этого избавиться, файл /usr/bin/nxnode
заменить отсюда (http://git.etersoft.ru/people/dimbor/packages/?p=freenx-server.git;a=tree), а я на всякий случай, оставил его себе на память здесь
4. Запустить скрипт настройки
5. Восстановление контекста SELinux по умолчанию (при необходимости, у меня SELinux выключен)
6. Создать пользователя в системе
Установка клиента в Windows и настройка подключения к терминальному серверу FreeNX RX@Etersoft в режиме -удалённый рабочий стол.
Для Windows используется клиентская программа OpenNX или NX Client.
Скачть NX Client или OpenNX можно здесь (ftp://ftp.etersoft.ru/pub/Etersoft/RX@Etersoft/)
Кроме этого OpenNX можно скачать на их официальном сайте (http://opennx.net/download.html)
Процесс установки ничем не отличается от установки любой другой программы. При первом запуске программа предложит вам создать подключение, указав параметры в мастере настроек. Необходимо ввести имя сессии, хост и порт для подключения. В дальнейших запусках программы, можно выбрать существующую сессию из списка, или создать новую. Настройки OpenNX очень богатые.
Вкладка «Общее» содержит все основные настройки подключения: имя/адрес сервера, порт, среду, в которой производится вход в систему. Установка флажка под именем сервера позволит сохранить пароль пользователя во избежание его постоянного ввода при последующих подключениях. Для подключения к linux-серверу с GNOME нужно выбрать UNIX — GNOME. Регулятор скорости соединения позволяет выбрать скорость канала, ориентируясь на тип подключения - от модема до локальной сети. Секция «Display and Keyboard» устанавливает размеры экрана: всё доступное пространство - отличный выбор.
На других вкладках подробно останавливаться не буду, есть простор для экспериментов
Теперь можно подключаться к терминальному серверу.
Подключения к терминальному серверу FreeNX в режиме одного приложения - rootless-режим.
С помощью RX@Etersoft можно организовать режим работы, в котором на сервере запускается только одна программа. Пользователь запускает программу с ярлыка на рабочем столе, и она у него открывается в его рабочем сеансе, представляя собой обычное окно. На самом же деле происходит подключение к серверу и запуск программы на нём, а на рабочий стол пользователя выводится только окно с запущенной программой. Это удобно, когда мощность сервера ограничена и предназначен для выполнения специализированных задач, например, для запуска программы Mozilla Firefox.
Для организации rootless-режима в настройках opennx указывается сочетание UNIX — Пользователь и задаётся выполнение команды, стартующей программу на сервере.
Если для запуска просто вписать команду firefox, то обнаружилась проблема, доступно для ввода только два языка, английский и русский. Меня это не устраивает, так как вместо русского, надо украинский, или три этих языка, а может четыре. Поэтому вместо обычной команды пишем и будем запускать скрипт, который позволит нам запускать Firefox в режиме единственного приложения и решит вопрос с переключением раскладок клавиатуры.
Пишем скрипт и сохраняем в /bin/runff.sh
Важно чтобы на локальных машинах пользователей последовательность смены раскладок совпадала с последовательностью смены в скрипте, тогда текущая раскладка на панели инструментов пользователя будет соответствовать раскладке терминального сервера и будет складываться впечатление локального запуска Firefox. В противном случае - создаем для пользователей отдельные скрипты с индивидуальной раскладкой клавиатуры и копируем в их домашние папки.
Разрешаем доступ и запуск для всех:
Решение проблемы, с использованием трех языковых раскладок в режиме rootless.
Проблема была на CentOS-5. В CentOS-6 этой проблемы не наблюдал
При использовании двух раскладок клавиатуры скрипт runff.sh
работает нормально. При использовании четырех раскладок, языки переключается но не в той последовательности, но с тремя раскладками языки не переключаются совсем. Решаем проблему трёх языков.
Редактируем файл /usr/share/X11/xkb/symbols/group
Находим в нем секцию:
xkb_symbols "ctrl_shift_toggle" {
key <LFSH> {
type="PC_BREAK",
symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
};
key <RTSH> {
type="PC_BREAK",
symbols[Group1]= [ Shift_R, ISO_Next_Group ]
};
key <LCTL> { [ Control_L, ISO_Prev_Group ] };
key <RCTL> { [ Control_R, ISO_Next_Group ] };
};
и меняем ISO_Prev_Group
на ISO_Next_Group
, вот так
xkb_symbols "ctrl_shift_toggle" {
key <LFSH> {
type="PC_BREAK",
symbols[Group1]= [ Shift_L, ISO_Next_Group ]
};
key <RTSH> {
type="PC_BREAK",
symbols[Group1]= [ Shift_R, ISO_Next_Group ]
};
key <LCTL> { [ Control_L, ISO_Next_Group ] };
key <RCTL> { [ Control_R, ISO_Next_Group ] };
};
Сохранить изменения и перезапустить иксы.
Теперь можно подключаться к терминальному серверу в режиме одного приложения
Настройка передачи данных через буфер обмена (clipboard)
В файле /etc/nxserver/node.conf.d/02-restriction.conf
секция
# Enable or disable clipboard:
По умолчанию разрешить буфер обмена между клиентом и терминальным серверомENABLE_CLIPBOARD="both"
Разрешить передачу данных через буфер обмена (clipboard) только от клиента на терминальный серверENABLE_CLIPBOARD="client"
Разрешить передачу данных через буфер обмена (clipboard) только от терминального сервера клиентуENABLE_CLIPBOARD="server"
Зпретить передачу данных через буфер обмена (clipboard) от клиента на терминальный сервер и наобротENABLE_CLIPBOARD="none"