LoginSignup
12
18

More than 3 years have passed since last update.

Centos7でVNCserver構築

Last updated at Posted at 2019-02-05

使用環境

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サーバに接続できることを確認する。
image.png

パスワードを求められるので、先ほど設定したパスワードを入力すると、

vnc.png

無事接続完了。

エラーの場合 (実際に起きた事例だけ紹介)

①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

こちらのサイトに書かれているとおりにしたら解決しました。

12
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
18