Настройка терминального сервера RDP для работы с 1С

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску

Статья в разработке
Взято тут и тут
Встал выбор при обновлении сервера 1С: Или покупать Windows 2012R2 + Клиентские + терминальные лицензии. Итого около 100круб или настроить терминальный сервер под Linux. Благо компания 1С выпустила версию под него.
Статей в инете очень много, но я попытаюсь обобщить свой опыт.
И так начнем.

Установка ОС

  1. Для ОС выбираем 16.04 server)
  2. Устанавливаем ОС.
  3. Делаем все обновления.
sudo apt update && sudo apt upgrade -y && reboot

Установим mc и git

sudo apt install mc git

Настраиваем сеть.

Находим название сетевого интерфейса

$ ifconfig
enp0s3    Link encap:Ethernet  HWaddr 08:00:27:58:54:bb  
          inet addr:172.16.130.143  Bcast:172.16.130.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe58:54bb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3423 errors:0 dropped:0 overruns:0 frame:0
          TX packets:878 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1989544 (1.9 MB)  TX bytes:84171 (84.1 KB)

lo        Link encap:Локальная петля (Loopback)  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:166 errors:0 dropped:0 overruns:0 frame:0
          TX packets:166 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:12178 (12.1 KB)  TX bytes:12178 (12.1 KB)

В нашем случае - это enp0s3

$ sudo nano /etc/network/interfaces

auto enp0s3
iface enp0s3 inet static
address 172.16.130.99
netmask 255.255.255.0
gateway 172.16.130.25
dns-nameservers 172.16.130.1 8.8.8.8

Перезапускам сетевой интерфейс и проверяем настройки сети:
Самое смешное, что поменять ip адрес без перезагрузки, я так и не смог. Если у получится - напишите на misha@volmed.org.ru. Буду признателен.

sudo ifdown -a && sudo ifup -a
$ifconfig
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:172.16.130.99  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:126785 errors:0 dropped:0 overruns:0 frame:0
          TX packets:135453 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:116474217 (116.4 MB)  TX bytes:102473947 (102.4 MB)

lo        Link encap:Локальная петля (Loopback)
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:104371 errors:0 dropped:0 overruns:0 frame:0
          TX packets:104371 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:720253620 (720.2 MB)  TX bytes:720253620 (720.2 MB)

Устанавливаем графический стол Xubuntu

sudo apt install xubuntu-desktop

Компиляция пакетов XRDP

Для создания пакетов для установки и установки XRDP используем специальную программку x11rdp-o-matic.
Информацию по ключам установки, можно посмотреть тут

cd ~
mkdir install
cd ~/install
git clone  https://github.com/scarygliders/X11RDP-o-Matic.git
cd X11RDP-o-Matic
sudo su
./X11rdp-o-matic.sh –justdoit --cleanup

стартует долгий процесс скачивания, проверки и компиляции модулей для xrdp, обязательно нужно дождаться завершения процедуры.
После сборки пакетов, в папке /X11RDP-o-Matic/packages/ лежат уже готовые собранные пакеты x11rdp_X.X.X-X_amd64.deb, xrdp_X.X.X-X_amd64.deb, пригодятся при переинсталированнии сервера без необходимости еще раз компилировать и собирать xrdp из исходников.
Проверяем установку xrdp:

sudo /etc/init.d/xrdp restart
netstat -lntp |grep 3389

Ошибки и их устранение

Сервис не стартовал, выдав такую строку.

$ sudo service xrdp restart
A dependency job for xrdp.service failed. See 'journalctl -xe' for details.

Решение Решение нашел тут
Меняем строку

EnvironmentFile=/etc/sysconfig/xrdp

на

EnvironmentFile=/etc/default/xrdp

в файлах /lib/systemd/system/xrdp.service и /lib/systemd/system/xrdp-sesman.service.
После этого

# service xrdp start
Warning: xrdp.service changed on disk. Run 'systemctl daemon-reload' to reload units.
A dependency job for xrdp.service failed. See 'journalctl -xe' for details.
# systemctl daemon-reload
# service xrdp start
# netstat -lntp |grep 3389

При вводе

$ sudo service xrdp restart

Выдавало строку

sudo: /etc/init.d/xrdp: команда не найдена

Решение

sudo cp /home/misha/install/X11RDP-o-Matic/work/xrdp/instfiles/init.d/xrdp /etc/init.d/
sudo chmod +755  /etc/init.d/xrdp

После очередной инсталляции, клиенты перестали подключаться к серверу. В файле /var/log/xrdp.log появились строки

[20160902-10:01:31] [CORE ] WARNING: Invalid x.509 certificate path defined, default path will be used: /etc/xrdp/cert.pem
[20160902-10:01:31] [CORE ] WARNING: Invalid x.509 certificate path defined, default path will be used: /etc/xrdp/key.pem
[20160902-10:01:31] [CORE ] XRDP cannot read file: /etc/xrdp/rsakeys.ini (check permissions)

Решение
Решение нашел [тут] Выполняем в консоли команду

$sudo xrdp-keygen xrdp /etc/xrdp/rsakeys.ini

Добавление в автозагрузку

Ставим xrdp в автозагрузку:

sudo update-rc.d xrdp defaults
sudo update-rc.d xrdp enable
exit

Установка модуля HASP

Модули HASP для Uuntu 16.04 выпушены только для 32 разрядных систем. Для того что бы они работали в 64 разрядной системе, делаем следующее

sudo su
dpkg --add-architecture i386
apt update && sudo apt upgrade
apt-get -f install
apt install login:i386
apt install make:i386
apt install libusb-1.0.0

Идем сюда и качаем пакеты HASP для нашей версии ubuntu

cd ~
mkdir /hasp
cd hasp
wget http://download.etersoft.ru/pub/Etersoft/HASP/last/Ubuntu/16.04/haspd_7.40-eter9ubuntu_i386.deb
wget http://download.etersoft.ru/pub/Etersoft/HASP/last/Ubuntu/16.04/haspd-modules_7.40-eter9ubuntu_i386.deb

Устанавливаем пакеты

dpkg -i haspd-modules_7.40-eter9ubuntu_i386.deb
dpkg -i haspd_7.40-eter9ubuntu_i386.deb

Мне еще пришлось повозиться, что бы HASP заработал. Напишу что делал чуть позже. Пока же инет Вам в руки.
Проверяем работу модуля

service haspd restart
service haspd status
exit

Если вставляете HASP уже после загрузки сервера, перезапустите демон haspd

service haspd restart

Установка 1С

Распаковываем файлы deb64.tar.gz и client.deb64.tar.gz из дистрибутива 1С 8.3 в одну папку.
Устанавливаем:

sudo dpkg -i 1c*.deb
sudo apt-get -f install
sudo apt-get install ttf-mscorefonts-installer
sudo apt-get install imagemagick

До настройка системы

Добавляем индикатор клавиатуры в верхнюю панель.

Правая кнопка мыши по панели. Выбираем Панель -> Параметры панели
Вкладка Элементы. Жмем Плюс и добавляем Раскладки клавиатуры.

Добавляем иконки

В панели нажимаем кнопку списка программ (самая левая в панели) и в поиске напираем 1С. И перетаскиваем иконку 1С клиент на рабочий стол.
Таким же образом добавляем все нужные программы на рабочий стол.

Настраиваем «скелеты» для пользователей

Выполняем с правами рута

cd /home/Настроенный_Пользователь
cp -R -f -b .config/ /etc/skel/ # настройки lxde
cp -R -f -b Рабочий\ стол/ /etc/skel/ # Содержимое рабочего стола

Добавляем пользователей терминалов

sudo adduser term1 
sudo adduser term2 

Пароли при добавлении пользователей лучше создавать цифровыми, тк иногда может не переключаться раскладка клавиатуры в окне входа терминала.

Решение проблемы с раскладкой

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

setxkbmap -layout "us,ru" -model "pc105" -option "grp:alt_shift_toggle,grp_led:scroll"

в файл /etc/X11/Xsession после строки: set -e - не получилось.
Пока сделал костыль: На рабочем столе создал файл klav.sh

#!/bin/sh
setxkbmap -layout "us,ru" -model "pc105" -option "grp:alt_shift_toggle,grp_led:scroll"

И запускаю его, после входа в терминал.

Как быстро снять подвисшую сессию и все процессы пользователя

Можно одной командой снять сессию и все процессы связанные с данным пользователем. Такой способ снятия очень быстрый и эффективный:

/usr/bin/killall -9 -u ИмяПользователя

Взято тут.

Еще некоторые ссылки

  1. Настройка звука в XRDP для Linux Ubuntu
  2. Решение проблемы запуска сессий новых пользователей в XRDP
  3. Генерация штрих-кода для вставки его в 1С при работе в Linux
  4. Генерация изображения штрих-кода в 1С при работе в Linux.
  5. Вывод отладочной информации запуска 1С8.3 в Linux
  6. Настройка окружения LXDE для терминальных пользователей XRDP в Linux Ubuntu
  7. Создание кросс-платформенной и кросс-браузерной карты Google, выводящей много точек через 1С
  8. Снятие терминальной сессии пользователя в XRDP (Linux) и 1C
  9. Простейший способ создания штрих-кода в формате PNG из командной строки в Linux Ubuntu