Web制作・開発会社 プレスマンのスタッフブログ

PRESSMAN*Tech

Amazon Linux 2にデスクトップ環境を入れる

いつの間にかAmazon Linux 2の正式版が公開されていた

んですね。数日経過してから気づきました。

AWSのブログ(長期サポート (LTS) を付随した Amazon Linux 2 が一般公開)を見ると、

Amazon Linux 2 の Extras メカニズムとは、Amazon Linux 2 の安定した基盤上で動く最新のアプリケーションソフトウェアのことです。Extras には、AWS の厳選したソフトウェアバンドル (例えば、MATE デスクトップ環境、Python、MariaDB、Node.js などの一般的なソフトウェアパッケージの最新バージョン) を選択するトピックが用意されています。

らしいです。つまり、PHP7.2 を導入する場合、Amazon Linux(無印)では

$ sudo yum install php72

としていたところを、Amazon Linux 2では

$ sudo amazon-linux-extras install php7.2

というふうになるみたいですね。

・・・ん?MATEデスクトップ?

デスクトップ化

ということでEC2に建てたAmazon Linux 2にMATEをインストールしてVNC接続を試してます。

MATEのインストール

まずはMATEのインストールから

$ sudo amazon-linux-extras install mate-desktop1.x
Installing marco, mesa-dri-drivers, mate-session-manager, mate-terminal, dejavu-sans-fonts, caja, mate-panel, dejavu-sans-mono-fonts, dejavu-serif-fonts
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                              | 2.4 kB  00:00:00
amzn2extra-docker                                                                       | 1.3 kB  00:00:00
amzn2extra-mate-desktop1.x                                                              | 1.3 kB  00:00:00
amzn2extra-mate-desktop1.x/2/x86_64/primary_db                                          | 130 kB  00:00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ caja.x86_64 0:1.20.2-1.amzn2 を インストール
︙
トランザクションの要約
===============================================================================================================
インストール  9 パッケージ (+146 個の依存関係のパッケージ)

総ダウンロード容量: 86 M
インストール容量: 375 M
Is this ok [y/d/N]: y
Downloading packages:
(1/155): adwaita-cursor-theme-3.22.0-1.amzn2.noarch.rpm                                 | 641 kB  00:00:00
︙

完了しました!
  0  ansible2                 available  [ =2.4.2 ]
  1  emacs                    available  [ =25.3 ]
  2  memcached1.5             available  [ =1.5.1 ]
  3  nginx1.12                available  [ =1.12.2 ]
  4  postgresql9.6            available  [ =9.6.6  =9.6.8 ]
  5  python3                  available  [ =3.6.2 ]
  6  redis4.0                 available  [ =4.0.5 ]
  7  R3.4                     available  [ =3.4.3 ]
  8  rust1                    available  [ =1.22.1  =1.26.0 ]
  9  vim                      available  [ =8.0 ]
 10  golang1.9                available  [ =1.9.2 ]
 11  ruby2.4                  available  [ =2.4.2  =2.4.4 ]
 12  nano                     available  [ =2.9.1 ]
 13  php7.2                   available  [ =7.2.0  =7.2.4  =7.2.5 ]
 14  lamp-mariadb10.2-php7.2  available  \
        [ =10.2.10_7.2.0  =10.2.10_7.2.4  =10.2.10_7.2.5 ]
 15  libreoffice              available  [ =5.0.6.2_15 ]
 16  gimp                     available  [ =2.8.22 ]
 17  docker=latest            enabled    [ =17.12.1  =18.03.1 ]
 18  mate-desktop1.x=latest   enabled    [ =1.19.0  =1.20.0 ]
 19  GraphicsMagick1.3        available  [ =1.3.29 ]
 20  tomcat8.5                available  [ =8.5.31 ]

VNCサーバの構築

TigerVNCを使います。

インストール

$ sudo yum install tigervnc-server
︙

完了しました!

設定

$ sudo cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
$ vncpasswd
Password:    <-- パスワードを設定
Verify:      <-- パスワード確認
Would you like to enter a view-only password (y/n)? n
$ sudo vi /etc/systemd/system/vncserver@:1.service

vncserver@:1.serviceを以下のように<USER>のところをec2-userに変更。

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=ec2-user

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=-/usr/bin/vncserver -kill %i
ExecStart=/usr/bin/vncserver %i
PIDFile=/home/ec2-user/.vnc/%H%i.pid
ExecStop=-/usr/bin/vncserver -kill %i

[Install]
WantedBy=multi-user.target

変更後、サービスに登録

$ sudo systemctl daemon-reload

ec2-userの環境設定

$ vi ~/.vnc/xstartup

以下を記述

#! /bin/sh
exec mate-session &

編集後、実行権限を付与

$ chmod +x ~/.vnc/xstartup

サービスの起動

サービスの起動と自動起動設定を行います。

$ sudo systemctl start vncserver@:1.service
$ sudo systemctl enable vncserver@:1.service

接続してみる

予め、EC2インスタンスのセキュリティグループでTCPのポート5901を開放してあげてください。
あとはVNCクライアントから接続するだけです。今回はmacOS標準のVNCクライアント「画面共有」で接続してみます。
Finder > 移動 > サーバへ接続... をクリックします。

サーバアドレスにvnc://<EC2のパブリックIP>:5901と入力し、接続をクリックします。

パスワードが聞かれるのでvncpasswdコマンドで入力したパスワードを入力します。

接続できました。

参考

CentOS7 VNC Server設定のメモ