CentOS 7.x中安装VNC:VNC安装的是TigerVnc
安装GNOME Desktop
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"
安装TigerVnc
yum install tigervnc-server
TigerVnc主要安装了两个软件包:
rpm -qa | grep vnc
tigervnc-server-minimal-1.8.0-1.el7.x86_64
tigervnc-server-1.8.0-1.el7.x86_64
rpm -ql tigervnc-server-minimal-1.8.0-1.el7.x86_64
/usr/bin/Xvnc
/usr/bin/vncconfig
/usr/bin/vncpasswd
rpm -ql tigervnc-server-1.8.0-1.el7.x86_64
/etc/sysconfig/vncservers #被/usr/lib/systemd/system/vncserver@.service替换
/usr/bin/vncserver
/usr/bin/x0vncserver
/usr/lib/systemd/system/vncserver@.service
/usr/lib/systemd/system/xvnc.socket
/usr/lib/systemd/system/xvnc@.service
Vncserver实际是Xvnc的包装。默认,VNC针对每个用户开一个桌面,每个桌面对应一个端口号,比如桌面号是:1,说明端口对应5901。
模板配置文件:
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=<USER>
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
这个模板配置中已经说明应该如何操作,首先拷贝这个模板文件,把用真实的用户替代,%i就是桌面号(:1),以下是一个针对root用户的模板:
#######################################
# /usr/lib/systemd/system/vncserver@:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=forking
User=root
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill :1
ExecStart=/usr/bin/vncserver :1
PIDFile=/root/.vnc/%H:1.pid
ExecStop=-/usr/bin/vncserver -kill :1
[Install]
WantedBy=multi-user.target
注意这是针对root用户的,所以PIDFile文件位置是/root/.vnc,如果是普通用户应该是/home/xxx/.vnc。
以下一个自动脚本:
cp /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@\:1.service
sed -i 's/%i/:1/g' /lib/systemd/system/vncserver@\:1.service
sed -i 's/<USER>/root/g' /lib/systemd/system/vncserver@\:1.service
sed -i 's/home\/root/root/g' /lib/systemd/system/vncserver@\:1.service
设置密码(注意是在当前用户下),比如是root,就在root下运行vncpasswd,会把密码写入到当前用户的.vnc目录中。
自启动设置:
systemctl enable vncserver@:1.service
systemctl start vncserver@:1.service
systemctl status vncserver@:1.service
systemctl disable initial-setup-text.service
systemctl enable vncserver@:2.service
systemctl start vncserver@:2.service
systemctl status vncserver@:2.service
systemctl disable initial-setup-text.service
以上的脚本实际是/usr/bin/vncserver的包装器,后面的桌面号会锁定到用户,如果进程异常退出,在重启时VNC会自动分配另一个桌面号。锁定的逻辑实际是往tmp中添加一个文件,所以如果进程异常退出需要手动删除锁定文件。
另外,如果修改了/lib/systemd/system/vncserver@\:1.service文件,需要运行systemctl daemon-reload。
命令行用法:
/usr/bin/vncserver -h
usage: vncserver [:<number>] [-name <desktop-name>] [-depth <depth>]
[-geometry <width>x<height>]
[-pixelformat rgbNNN|bgrNNN]
[-fp <font-path>]
[-cc <visual>]
[-fg]
[-autokill]
[-noxstartup]
[-xstartup <file>]
<Xvnc-options>...
vncserver -kill <X-display>
vncserver -list
所以如果需要指定分辨率,可以添加-geometry 1440×900, 如果需要指定颜色深度(会影响网络传输流量),可以指定-depth 24
Root用户无法启动Chrome,修改/usr/bin/google-chrome:
if [[ -n "$CHROME_USER_DATA_DIR" ]]; then
# Note: exec -a below is a bashism.
exec -a "$0" "$HERE/chrome" \
--user-data-dir="$CHROME_USER_DATA_DIR" "$@"
else
exec -a "$0" "$HERE/chrome" "$@" --no-sandbox --user-data-dir
fi
Ubuntu中安装VNC(vnc4server):
更新系统:
apt-get update
apt-get upgrade
Gnome桌面环境安装:
apt-get install x-window-system-core
apt-get install gdm
apt-get install ubuntu-desktop
apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
安装VNC
apt-get install vnc4server
dpkg -l | grep vnc
dpkg -L vnc4server
/usr/bin/x0vnc4server
/usr/bin/vnc4passwd
/usr/bin/Xvnc4
/usr/bin/vnc4config
/usr/bin/vnc4server
修改配置:
cp ~/.vnc/xstartup ~/.vnc/xstartup.bak
vi ~/.vnc/xstartup
#!/bin/sh
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
启动服务,需要指定桌面号(需要切换到具体的用户):
vncserver -kill :1
vncserver :1
Ubuntu中的vnc4server实际没有提供自启动脚本,启动关闭都需要首先切换到具体用户,并且需要准确对应桌面号,为了开机启动,需要在rc.local中加入类似脚本:
su www -c '/usr/bin/vncserver -name xxx -geometry 1366x768 :10’
注:进程如果异常退出,对应的桌面号可能被锁定。