+380 (44) 592-86-88

Узнайте больше
полезная информация

Терминальный сервер на Linux

 

 

Исходные данные

Имеем установленную операционную систему Linux Debian Squeeze с компонентами "Стандартная система" и "Окружение рабочего стола". Системный пользователь, созданный на этапе установки операционной системы - mario.   Задача - настроить терминальный сервер для работы с программой "1С: Предприятие". Зачем же нам еще нужен терминальный сервер!

 

Подготовка системы 

Установим необходимое программное обеспечение:

#apt-get install expect chkconfig binutils cifs-utils ssh

 

 Для того, чтобы пользователи могли подключаться к терминальному серверу, в ssh-сервере должна быть включена опция авторизации по ключу (PubkeyAuthentication yes), проверим это:

#cat /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile %h/.ssh/authorized_keys

 

Установка терминального сервера freenx

 Скачаем необходимые пакеты (в зависимости от версии операционной системы, выбираем соответсвующий каталог) и установим их:

#dpkg -i rx-etersoft*.deb nx*.deb

 

Произведем первоначальные настройки и создадим окружение системного пользователя nx:

#rxsetup

 

В случае возникновения каких-то проблем, файл журнала, rxsetup.log,  создается в папке с файлом rxsetup.

Перезагружаем теминальный сервер:

#/etc/init.d/freenx restart

 

Установим максимальное время жизни для простаивающей сессии два часа. Для этого отредактируем файл /etc/nxserver/node.conf.d/07-misc.conf:

 SESSION_TTL=7200

 

Терминальный сервер установлен. Для этого качаем клиент под вашу операционную систему (на etersoft.ru клиент тщательно обработанный напильником и готов для работы с русскоязычными программами). В настройках подключения указываем ip-адрес сервера (порт 22), графическую среду GNOME, пользователь - mario, все остальное по-умолчанию. Сохраняем, запускаем, проверяем. Если все чисто, сухо и комфортно, идем дальше. Если нет - читаем логи. 

 

Администрирование сервера freenx 

Список текущих подключений:

# nxserver --list

 

Завершение всех подключенных сессий:

# nxserver --cleanup

 

Установка Wine

Стандартный wine для наших целей не подойдет - с ним будет работать все, кроме 1С ))) А вот адаптированный wine от компания Etersoft - как раз то что надо (пакеты нужно устанавливать строго в той последовательности, которая указана в статье):

#mkdir eterwine
#dpkg -i libwine*.deb
#dpkg -i wine*.deb
#dpkg -i fonts*.deb

 

Добавляем пользователя mario в группу wineadmin:

#gpasswd -a mario wineadmin

 

После этого перезагружаем сеанс пользователя mario.

Подготавливаем общий каталог (progs) для установки в него программ (делаем это под пользователем mario):

#wine --admin /var/lib/wine/progs 

 

При этом все необходимые для совместной работы пользователей права будут установлены автоматически (rw-rw-r--).Далее добавляем всех необходимых для работы с терминальным сервером пользователей (под root-ом):

#useradd -s /bin/bash -m user2
#passwd user2

 

После чего добавляем их в группу wineadmin.

#gpasswd -a mario wineadmin

 

 

Логинимся под новыми пользователями и в терминале выполняем следующее:

#wine --attach /var/lib/wine/progs

 

Переходим к установке и настройке 1С.

 

Установка 1С на терминальный сервер Linux

 В примере будем устанавливать 1C: Предприятие 7.7, сетевая версия. Установка 8-ой версии 1С выполняется аналогичным образом (кроме sql-версии).

Итак заходим в систему под пользователем mario, копируем в его домашнюю папку дистрибутив 1С и выполняем в терминале следующую команду (Устанавливаем программу в папку Program files): 

#wine setup.exe

 

Создаем папку для базы:

#mkdir /var/lib/wine/progs/Program\ Files/bases

 

Устанавливаем требуемую конфигурацию 1С в созданную папку. Дабы не учить вашего бухгалтера премудростям работы с операционной системой Linux, создаем скрипт, который позволит нам запускать 1С в режиме единственного приложения и решит вопрос с переключением раскладок клавиатуры (выполняем под пользователем root): 

#vim /bin/run1c.sh
#!/bin/bash
/bin/bash << EOF
#Задаем модель клавиатуры, ее раскладки и последовательность их смены
/usr/bin/setxkbmap -model pc105 -layout us,ua,ru
/usr/bin/setxkbmap -model pc105 –variant
#Переключение раскладок ctrl+shift
/usr/bin/setxkbmap -model pc105 -option -option grp:ctrl_shift_toggle
# Запуск 1с
wine /var/lib/wine/progs/Program\ Files/1Cv77.ADM/BIN/1cv7.exe
EOF

 

Очень важно чтобы на локальных машинах пользователей последовательность смены раскладок совпадала с последовательностью смены в скрипте, тогда текущая раскладка на панели инструментов пользователя будет соответствовать раскладке терминального сервера. Будет складываться впечатление локального запуска 1С. В противном случае - создаем для пользователей отдельные скрипты с индивидуальной раскладкой клавиатуры и копируем в их домашние папки.  

Разрешаем доступ и запуск для всех:

#chmod 777 /bin/run1c.sh

 

Осталось настроить nx-клиент. 

В конфигурации, в закладке General рабочего стола ищем контейнер Desktop и среду GNOME меняем на Custom. Щелкаем по кнопке Settings и выбираем Run the following command. В текстовом поле прописываем run1c.sh. В случае создания индивидуального скрипта для пользователя - прописываем полный путь к скрипту (/home/user2/run1c.sh). Сохраняем, проверяем. Если вы все сделали верно должно появиться окно запуска 1С:Предприятия. Далее добавляем новую базу, прописываем к ней путь, создаем 1С пользователей в конфигураторе и начинаем работать, вот и все.

Проблема, связанная с использованием трех языковых раскладок.

При использовании двух раскладок клавиатуры скрипт run1c.sh работает нормально. При использовании четырех раскладок, языки переключается но не в той последовательности, но с тремя раскладками языки не переключаются совсем. Вот решение этой проблемы:

#vim /usr/share/X11/xkb/symbols/group

 

в нем находим секцию:

xkb_symbols "ctrl_shift_toggle" {
key {
type="PC_BREAK",
symbols[Group1]= [ Shift_L, ISO_Prev_Group ]
};
key {
type="PC_BREAK",
symbols[Group1]= [ Shift_R, ISO_Next_Group ]
};
key { [ Control_L, ISO_Prev_Group ] };
key { [ Control_R, ISO_Next_Group ] };
};

 

изменяем ISO_Prev_Group на ISO_Next_Group и получаем:

xkb_symbols "ctrl_shift_toggle" {
key {
type="PC_BREAK",
symbols[Group1]= [ Shift_L, ISO_Next_Group ]
};
key {
type="PC_BREAK",
symbols[Group1]= [ Shift_R, ISO_Next_Group ]
};
key { [ Control_L, ISO_Next_Group ] };
key { [ Control_R, ISO_Next_Group ] };
};

 

Сохраняем и перезапускаем иксы.