1c + Терминальный сервер на 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 ] }; };
Сохраняем и перезапускаем иксы.