##使用環境
CentOS Linux release 7.6.1810 (Core)
*CentOS 6.xの場合はこちら
##VNCserverパッケージのインストール
Root権限で行う。
# yum install tigervnc-server
##VNCserverの設定
インストール後、/lib/systemd/system/にあるvncserver@.serviceを/etc/systemd/systemにコピー
# cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service
コピーした/etc/systemd/system/vncserver@:2.serviceを開いて、ユーザーの設定を行う(使用するユーザー名をhogeとする)。今回はvncserver@:2.serviceなのでポート番号は5902となる。vncserver@:3.serviceの場合は5903。
# vi /etc/systemd/system/vncserver@:2.service
<USER>となっている箇所をhogeにする。
[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=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
画面サイズを変えたい場合はExecStartの箇所に-geometry <画面サイズ>を足すことで変更できる。
ExecStart=/usr/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i -geometry 1920x1200"
##VNCサーバのパスワード設定
hogeユーザーのVNCログイン用のパスワードを設定する。
# su hoge
$ vncpasswd
Root権限に戻ったら、systemctlコマンドを用いてVNCサーバーのサービスの有効化を行う。
# systemctl daemon-reload
# systemctl enable vncserver@:2
# systemctl restart vncserver@:2
##Firewallの設定
以下のコマンドを打ち、successと出れば問題無し(だと思う)。
# firewall-cmd --permanent --add-port=<ポート番号>/tcp
success
# firewall-cmd --permanent --zone=public --add-service=vnc-server
success
# firewall-cmd --reload
success
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: em1
...(略)
##接続確認
VNCviewerなどのVNCクライアントから、ポート番号を指定して、VNCサーバに接続できることを確認する。
パスワードを求められるので、先ほど設定したパスワードを入力すると、
無事接続完了。
##エラーの場合 (実際に起きた事例だけ紹介)
①systemctl restart vncserver@:10.serviceとたたいた後に、以下のエラー出た時
Job for vncserver@:10.service failed because a configured resource limit was exceeded. See "systemctl status vncserver@:10.service" and "journalctl -xe" for details.
ひとまず、ps aux | grep でPIDを確認し、killしたのち、こちらに書かれていることを試したら直りました。
ただ、
vncserver -kill:(ディスプレイ番号)
これをやったら
(EE)
Fatal server error:
(EE) Unrecognized option: -kill:10
(EE)
となりできませんでした(笑)
②VNCviwerを立ち上げて接続しても画面が真っ暗なとき
# systemctl status vncserver@:10.service
これをやるとactive (running)になるのだが、なぜかつながらない・・。~/.vnc以下のログを見てみると、次のエラーが出ていた。
(process:10932): dconf-CRITICAL **: 10:32:58.773: unable to create file '/run/user/1000/dconf/user': Permission denied. dconf will not work properly.
Wed May 22 10:33:00 2019
ComparingUpdateTracker: 0 pixels in / 0 pixels out
ComparingUpdateTracker: (1:-nan ratio)
Killing Xvnc process ID 10452
こちらのサイトに書かれているとおりにしたら解決しました。