Исходные данные
Имеем установленную операционную систему 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 ] };
};
Сохраняем и перезапускаем иксы.
11 мая, 2013