Linux无显示器vnc server部署方案
导言:
Linux服务器一般是不接显示器的,用ssh等文字界面连接管理即可。可是有些软件需要GUI管理,但是不接显示器,xwindows是默认无法启动的,从而导致vnc server连接失败。
本文提供了一种方法,在不接显示器的情况下也可以远程vnc连接服务器,显示服务器桌面
正文:
公司的一台Ubuntu 16.04 LTS的服务器,在连接显示器的情况下,会默认启动到GUI登录窗口,这时启动VNC server,可以在客户端方便登录。但是在拔掉显示器之后,因为xwindows的启动需要显示器,导致vnc server也不能正常启动,导致vnc viewer连接失败。
Ubuntu下的vnc server主要有两套,一套就是第三方的vnc server,比如tigervnc,vnc4server等等。另外就是Ubuntu本身提供的vino解决方案。
vino的设置非常简单,在dash里面搜索 vino,就可以直接打开vino,然后可以用vnc viewer连接了。但是vino有个问题是,它必须等用户登录之后,有了session才能启动。你说这不是悖论吗?所以,很快放弃了此方案。
这个问题的关键在于,要到一个可以自行提供桌面服务,开启一个桌面session的解决方案。自己在网上来去,终于到了vnc4server + xfce4 + xrdp的解决方案。
安装:
sudo apt-get install vnc4server xfce4
安装好之后,用 vncpasswd 来配置一下vnc的登录密码
小学三年级语文下册期末试卷启动vnc server命令:
vncserver -geometry  -alwaysshared :1
来启动一个的桌面,所有登录用户共享一个桌面,桌面号码为1.
这样子启动之后,客户端连接,只会看到一个灰灰的画面,因为现在还没有启动一个配套的桌面session。
用 vncserver -kill :1 来关闭1号桌面。
现在要修改vnc的启动脚本,这是重点:
我的脚本修改后内容如下:
>>###代码开始>>####
#!/bin/sh
# Unment the following two lines for normal desktop:
#unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc
#[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
#[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
#xsetroot -solid grey
#vncconfig -iconic &
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &超级短的暖人心的句子
费启鸣何炅
xfce4-session &
>>###代码结束>>####
xstartup脚本内容
然后在ssh端就可以重新启动vncserver:
vncserver -geometry  -alwaysshared :1
后来可以把这个命令保存为一个shell文件,然后以后直接执行即可。
三岁幼儿教育启动之后,用vncviewer连接,哈哈,看到了一个陌生的桌面系统,但是是完备的哦。屏幕下面是快捷方式区,application是所有程序的开始菜单,桌面是简洁的 垃圾箱,文件系统,主文件夹。
注意IP地址后是桌面号,这个不要忘记
xfce4桌面
上面是菜单,下面是快捷方式
把服务器拔掉显示器,ssh端下命令重启,然后ssh重新连接,手工启动vncserver,再次连接,证明这套方法是可行的。
启动xfce session成功
接下来,所有的GUI程序都可以以这个桌面为x11 server来运行了,比如:
硬盘分区:gnome-disks
查看硬盘信息
系统信息查看:gnome-system-monitor
恋爱ing歌词
文字编辑:gedit
gedit文字处理
虚拟机 virtualbox
安装好virtualbox之后直接执行virtualbox命令管理虚拟机
xfce4里面的xterminal开启tab自动补全功能,因为快捷键冲突,需要在applications -> settings -> windows manager里面keyboard选项卡把冲突的快捷键清空即可。
清除冲突的快捷键来启动tab的自动补全功能
对此问题的思考:
要说起来,作为一个server,去运行一个GUI系统,是大大增加了系统的复杂性。因此,正式的server上,是一般不会出现这种vncserver的解决方案的。
但是或说回来,仅仅用命令行来管理server,无疑增加了系统的学习成本,因此我觉得一个好的解决方案就是用web的方式来配置服务器,比如现在的大部分的无线路由器,都是用web方式提供了一个管理界面,来让用户配置路由器的。
另外的一个例子就是mysql的phpmyadmin管理界面,也非常好的阐述了这一思路。
因此,也不排除将来的server OS level配置也全部移植到web based configuration上,这也符合IT界everything on web的一贯解决思路吗。让服务器软件专注于逻辑实现,让客户端的GUI精美的展现效果,专业的事情,让专业的解决方案去作。
各种人机界面对比黄奕家暴