Red Hat 7 vncserver配置與問題

       首先, 配置好yum源,查詢vncserver需要安裝什麼包,然後安裝。

[root@localhost ~]# yum provides vncserver
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
yum                                                                                                                                             | 4.1 kB  00:00:00     
(1/2): yum/group_gz                                                                                                                             | 134 kB  00:00:00     
(2/2): yum/primary_db                                                                                                                           | 3.4 MB  00:00:00     
yum/filelists_db                                                                                                                                | 3.0 MB  00:00:00     
tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 : A TigerVNC server
Repo        : yum
Matched from:
Filename    : /usr/bin/vncserver
[root@localhost ~]#  yum install  tigervnc-server-1.2.80-0.30.20130314svn5065.el7.x86_64 -y
....
Installed:
  tigervnc-server.x86_64 0:1.2.80-0.30.20130314svn5065.el7                                                                                                             
Complete!

    這樣vncserver就安裝好了,通過命令vncserver可以啓動或進行管理,首次啓動vncserver,會提示修改密碼。此密碼爲vnc客戶端連接時使用。

    

[root@localhost ~]# vncserver 
New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log
    用vncserver啓動,默認會從最低端口(1)啓動,之後依次遞增,如果想指定vnc端口,可以使用ncserver [:<port_number>]
[root@localhost ~]# vncserver  :2016

New 'localhost.localdomain:2016 (root)' desktop is localhost.localdomain:2016

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:2016.log

    通過vncserver -list 可以查看當前運行的vnc信息
[root@localhost ~]# vncserver -list

TigerVNC server sessions:

X DISPLAY #     PROCESS ID
:1              8167
:2016           8670

    通過vncserver -kill :<port_number> 可以關閉vnc端口
[root@localhost ~]# vncserver -kill :1
Killing Xvnc process ID 8167


    當然,客戶端要訪問vnc還得經過防火牆的同意,需要在防火牆放行vnc或者直接關閉防火牆。這裏測試了下,在防火牆放行之後,默認通過vncserver啓動的端口訪問,但是通過vncserver :port_number指定端口啓動的還是無法訪問,求解。

    防火牆配置放行vncserver
[root@localhost ~]# firewall-cmd  --permanent --add-service=vnc-server     
success
[root@localhost ~]# firewall-cmd  --reload
success
    或者關閉防火牆,並且禁止防火牆開機自啓。
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable  firewalld 
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'

    以上,vnc的安裝配置就基本完成了。 接下來需要配置vncserver開機啓動了。

    使用rpm- qc tigervnc-server查詢vncserver的配置。

    得知配置文件被轉移到了/lib/systemd/system/[email protected],文件的頭部有詳細的說明。

[root@localhost ~]# rpm -qc tigervnc-server
/etc/sysconfig/vncservers
[root@localhost ~]# cat /etc/sysconfig/vncservers
# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/[email protected]
[root@localhost ~]# head   /lib/systemd/system/[email protected]  
# The vncserver service unit file
#
# Quick HowTo:
# 1. Copy this file to /etc/systemd/system/vncserver@:<display>.service
# 2. Edit <USER> and vncserver parameters appropriately
#   ("runuser -l <USER> -c /usr/bin/vncserver %i -arg1 -arg2")
# 3. Run `systemctl daemon-reload`
# 4. Run `systemctl enable vncserver@:<display>.service`
#
# DO NOT RUN THIS SERVICE if your local area network is


    配置方法:

        1.複製當前文件(/lib/systemd/system/[email protected])到/etc/systemd/system/vncserver@:<display>.server 這裏<display>爲啓動的端口

        2.編輯複製後的文檔,把兩處<USER>替換成需要啓動的用戶。需要注意的是如果用root啓動,root的家目錄爲/root,而非/home/root

        3.運行systemctl daemon-reload  重新加載配置

        4.運行systemctl enable vncserver@:<display>.service 配置成開機自啓

[root@localhost ~]# cp  /lib/systemd/system/[email protected]  /etc/systemd/system/vncserver@:1.service
[root@localhost ~]# vim /etc/systemd/system/vncserver@:1.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i" #修改此行的用戶名
PIDFile=/root/.vnc/%H%i.pid    #修改此行的用戶家目錄
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl  start   vncserver@:1.service       (此處手動啓動)
[root@localhost ~]# systemctl  status   vncserver@:1.service       (查看運行情況 爲active)  
vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@:1.service; enabled)
   Active: active (running) since Fri 2016-01-22 17:00:34 CST; 7s ago
[root@localhost ~]# vncserver -list  

TigerVNC server sessions:

X DISPLAY #     PROCESS ID
:1              9959
[root@localhost ~]# systemctl enable vncserver@:1.service 確定手動啓動沒問題後加入自啓)
[root@localhost ~]# reboot (重啓測試)

Last login: Fri Jan 22 16:30:36 2016 from 192.168.175.1
[root@localhost ~]# vncserver -list  (重啓後查看vnc 已經啓動了。)

TigerVNC server sessions:

X DISPLAY #     PROCESS ID
:1              1522
[root@localhost ~]# ps -ef |grep vnc
root       1522      1  1 17:10 ?        00:00:00 /usr/bin/Xvnc :1 -desktop localhost.localdomain:1 (root) -auth /root/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -fp catalogue:/etc/X11/fontpath.d -pn
root       1907      1  0 17:10 ?        00:00:00 /usr/bin/vncconfig -iconic
root       3167   3120  0 17:11 pts/0    00:00:00 grep --color=auto vnc

    至此,vncserver的配置就已經完成了。


    過程中,有一次不知道誤操作了什麼,1號端口一直啓動不了。查看不到進程,卻一直提示已經啓動,重啓自啓也失敗。

 [root@kvm02 ~]# systemctl status  vncserver@\:1.service 
   vncserver@:1.service - Remote desktop service (VNC)
   Loaded: loaded (/usr/lib/systemd/system/vncserver@:1.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Fri 2016-01-22 21:28:33 CST; 1min 35s ago
  Process: 1154 ExecStart=/sbin/runuser -l root -c /usr/bin/vncserver %i (code=exited, status=2)
  Process: 1132 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill %i > /dev/null 2>&1 || : (code=exited, status=0/ SUCCESS)
 [root@kvm02 .vnc]# vncserver :1
A VNC server is already running as :1
[root@kvm02 .vnc]# ps  -ef |grep vnc
root      7146  1667  0 22:29 pts/0    00:00:00 grep --color=auto vnc


    最後在一次啓動中發現了/tmp/.X11-unix/下有個文件鎖住了。切換到目錄下刪除文件,就可以了。

    報錯信息:
Warning: kvm02:1 is taken because of /tmp/.X11-unix/X1
Remove this file if there is no X server kvm02:1
    解決:
[root@kvm02 ~]# cd /tmp/.X11-unix
[root@kvm02 .X11-unix]# rm -rf *  (刪除了所有文件,此處衝動了,其實只要刪除X1就好了)
[root@kvm02 .X11-unix]# vncserver  (刪除過後就可以正常啓動了)
xauth: (stdin):1:  bad display name "kvm02:1" in "add" command
New 'kvm02:1 (root)' desktop is kvm02:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/kvm02:1.log


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章