昨天在我的CentOS7测试机上安装配置了VNC服务器,参考了网上很多资料,但都有一定的缺陷,特别是在配置root账户远程VNC连接的配置文件时,几乎没有什么参考文档提醒PIDFile的配置要去掉/home,导致我配置的时候一直报错,折腾了一天,最后在一篇参考文档的报错解析中得到启发,最后完成了配置,先将我的实际操作整理成文档供大家参考,也供自己以后查阅。正文如下:


1、如果第一次安装tigervnc,可以跳过第2步;
2、如果以前安装过,需要通过以下几步删除tigervnc:
    卸载原安装的服务器软件:yum remove tigervnc-server
    删除/etc/systemd/system文件夹下的配置文件:vncserver@:1.service等
    删除可远程VNC连接的账户home目录下的.vnc文件夹:remove -rf ~\.vnc
    查看/tmp/.X11-unix目录,将X[1-9]的文件删掉,注意X0不能删除
    最后重启OS
3、安装tigervnc:yum install tigervnc-server

--------------------------以上为root用户操作事项-------------------------------------------
--------------------------以下分别以root账户和其它账户进行配置-----------------------------

【root账户:操作均在root账户下执行】
4、在/etc/systemd/system文件下创建配置文件
     cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service
     这里需要注意的是上面这个1代表服务端口号,可取其它值,此处的1代表开放的服务5901端口,以此类推
     
5、编辑配置文件:vim /etc/systemd/system/vncserver@:1.service,更改如下两行(红色行),将改为root, 将PIDFile=后面的/home去掉
[...]
[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 -c "/usr/bin/vncserver %i"  
# PIDFile=/home//.vnc/%H%i.pid

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 || :'
6、设置vnc远程连接密码:vncpasswd
7、添加防火墙规则
     firewall-cmd --permanent --zone=public --add-service vnc-server
     firewall-cmd --reload
     如果提示firewalld没启动,请运行firewalld启动防火墙,再运行上面两条命令;
8、设置启动
     systemctl daemon-reload 重启daemon使上述配置生效
     systemctl enable vncserver@:1.service 使服务自动启动
     systemctl start vncserver@:1.service 启动服务


【其它账户:以账户名为cs1为例】
 4、在/etc/systemd/system文件下创建配置文件[root账号下操作]
     cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:2.service
     这里需要注意的是上面这个2代表服务端口号,可取其它值,此处的2代表开放的服务5902端口,以此类推
     
5、编辑配置文件[root账号下操作]:vim /etc/systemd/system/vncserver@:1.service,更改如下两行(红色行),将改为cs1
[...]
[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 -c "/usr/bin/vncserver %i"
# PIDFile=/home//.vnc/%H%i.pid

ExecStart=/sbin/runuser -l cs1 -c "/usr/bin/vncserver %i"
PIDFile=/home/cs1/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
6、设置vnc远程连接密码[cs1账号下操作]:vncpasswd
7、添加防火墙规则[root账号下操作](如果以前已添加,此步骤可省略)
     firewall-cmd --permanent --zone=public --add-service vnc-server
     firewall-cmd --reload
     如果提示firewalld没启动,请运行firewalld启动防火墙,再运行上面两条命令;
8、设置启动[root账号下操作]
     systemctl daemon-reload 重启daemon使上述配置生效
     systemctl enable vncserver@:2.service 使服务自动启动
     systemctl start vncserver@:2.service 启动服务
     
参考:
http://www.centoscn.com/p_w_picpath-text/install/2016/0407/7008.html
          http://www.cnblogs.com/h2zZhou/p/5209948.html