debian8 запускать vnc сервер

Linux > debian8 запускать vnc сервер
07.12.2016 17:30:50



Статья:

Для debian8

Устанавливаем Xfce и VNC server (любители GNOME, KDE, LXDE, etc. устанавливают оболочку по своему вкусу).

# apt-get install xfce4 xfce4-goodies tightvncserver

Создаем пользователя от которого будем запускать vnc сервер.

# adduser vnc

Устанавливаем sudo (в Debian данный пакет не установлен по умолчанию).

# apt-get install sudo

Добавляем пользователя vnc в группу sudo.

# gpasswd -a vnc sudo

Переходим под пользователя vnc.

# su - vnc

Запускаем vnc сервер.

$ vncserver

Если это первый запуск vnc сервера, будет создан конфиг файл и запрошены некоторые параметры:

$ vncserver 

You will require a password to access your desktops.

Password: 
Verify:   
Would you like to enter a view-only password (y/n)? n
xauth:  file /home/vnc/.Xauthority does not exist

New ''X'' desktop is my.server:1



Creating default startup script /home/vnc/.vnc/xstartup

Starting applications specified in /home/vnc/.vnc/xstartup

Log file is /home/vnc/.vnc/my.server:1.log

по умолчанию порт vnc сервера будет 5901, порт каждого следующего дисплея будет увеличиваться на 1 (5902,5903,…).

Проверить запущен ли VNC сервер и на каком порту слушает можно следующей командой.

$ netstat -nltp

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      1054/Xtightvnc 

Убить конкретный дисплей можно так:

$ vncserver -kill :1
Killing Xtightvnc process ID 3246

:1 — какой дисплей нужно убить.

Создание скрипта автостарта vnc сервера.

Сначала убьем запущенный дисплей :1 (если он запущен).

$ vncserver -kill :1  

создаем скрипт запуска

$ sudo nano /usr/local/bin/myvnc

Добавляем следующие строки в файл:

#!/bin/bash
PATH="$PATH:/usr/bin/"
DISPLAY="1"
DEPTH="16"
GEOMETRY="1024x768"
OPTIONS="-depth ${DEPTH} -geometry ${GEOMETRY} :${DISPLAY}"

case "$1" in
start)
/usr/bin/vncserver ${OPTIONS}
;;

stop)
/usr/bin/vncserver -kill :${DISPLAY}
;;

restart)
$0 stop
$0 start
;;
esac
exit 0

если требуется — в скрипте можно изменить глубину цвета или разрешение экрана.

Делаем файл исполняемым.

$ sudo chmod +x /usr/local/bin/myvnc

использование созданного нами скрипта:

$ myvnc start             ###запустить vnc сервер
$ myvnc stop             ###остановить vnc сервер
$ myvnc restart         ###перезапустить vnc сервер

Теперь нужно позаботиться о том, чтобы настроенный нами vnc стартовал после загрузки сервера (запланированной и не очень).
Для этого создаем файл по следующему пути.

$ sudo nano /lib/systemd/system/myvnc.service

Добавляем следующий текст в файл:

[Unit]
Description=MyVnc

[Service]
Type=forking
ExecStart=/usr/local/bin/myvnc start
ExecStop=/usr/local/bin/myvnc stop
ExecReload=/usr/local/bin/myvnc restart
User=vnc

[Install]
WantedBy=multi-user.target

Пояснение

Включаем юнит в автозагрузку при старте системы.

$ sudo systemctl enable myvnc.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myvnc.service to /lib/systemd/system/myvnc.service.

Смотрим статус созданного нами юнита.

$ sudo systemctl -l status myvnc.service
? myvnc.service - MyVnc
   Loaded: loaded (/lib/systemd/system/myvnc.service; enabled)
   Active: inactive (dead)

Дергаем systemd для поиска новых или измененных юнитов.

$ sudo systemctl daemon-reload