Amazon Linux2(CentOS)をGUI化する
今回はAmazon Linux2(CentOS 7)で、Mateをインストールし、GUI化してみます。ただGUI化するだけでは味気ないので、Google Chromeをインストールしてネットサーフィンできるようにしたいと思います。
またコマンド操作ではなくWindowsっぽくGoogle chromeでインターネットへアクセスしてWebサイトを閲覧できるようにしていきたいと思います。
今回のゴール
前提環境
- 利用するEC2 AMIはAmazon Linux2 (CentOS)
- EC2はクライアント端末(自宅のWindows 10)からSSHおよびVNCでアクセスできるようにセキュリティグループを設定
- VNCソフトはtigerVNCを利用
- デスクトップ環境はMATE(読み:マテ)をインストールして利用
- VNCクライアントにUltraVNC viewerをインストールする
- VNCログインに利用するユーザはec2-user
手順
- EC2 をデプロイし、SSHで接続できる環境を構築する
- EC2 にGUI化ソフト(MATE),tigerVNC(VNCソフト),Google chromeのパッケージをインストールする
- クライアント端末にUltra VNC viewer をインストールする
- クライアント端末からEC2にVNC接続を行う
実際にやってみた
1.については詳しい記事がたくさんありますので、割愛します。それでは2.から始めていきます。
まずSSHでEC2に接続して、ユーザはec2-userで進めていきます。
# MATEパッケージをインストールします。
sudo amazon-linux-extras install mate-desktop1.x
# MATE をデフォルトのデスクトップとして定義します。またすべてのユーザーに対して MATE を定義します。
sudo bash -c 'echo PREFERRED=/usr/bin/mate-session > /etc/sysconfig/desktop'
# TigerVNC をインストールします。
sudo yum install tigervnc-server
# ec2-userに対して6~8 文字の VNC 固有のパスワードを設定します。
vncpasswd
表示専用のパスワードを入力するかどうかを確認するメッセージが表示されたら、「n」を押します。
# 表示番号 1 で VNC サーバーを起動します。
vncserver :1
# デフォルトで作成されているvncserverのsystemd ユニットをコピーして、別に新しい systemd ユニットを作成します。
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service
# 新しいユニット内のすべての <USER>という記載を 実際に利用するユーザ(ec2-user) に置き換えます。
sudo sed -i 's/<USER>/ec2-user/' /etc/systemd/system/vncserver@.service
# systemd マネージャー設定を再ロードします。
sudo systemctl daemon-reload
# サービスを有効にします。
sudo systemctl enable vncserver@:1
#サービスを起動します。
sudo systemctl start vncserver@:1
これでGUI化の設定は環境です。ただこのままだと英語表記だし、Google chromeがインストールされていないのでデスクトップ環境の日本語化とGoogle chromeのインストールを行います。
# まずデスクトップ環境の日本語化設定を行います。日本語入ができるようにIME ibus と日本語のフォントのgoogle-noto-sans-japanese-fontsをインストールします。
sudo yum install ibus-kkc
sudo yum install google-noto-sans-japanese-fonts
# ibusの設定をbashrcに記載します。
vi ~/.bashrc
# ファイルの最後に以下を追加して、ファイルを保存します。
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx
# ロケールの設定を変更します。
sudo localectl set-locale LANG=ja_JP.UTF-8
# 設定変更反映のため再起動させます。
reboot
これで日本語化は完了です。続いてGoogle Chrome パッケージをインストールしていきます。
ここから先はroot権限のあるユーザでコマンドを実行してください。
#リポジトリファイルを作成します。
sudo vi /etc/yum.repos.d/google-chrome.repo
# ファイル内容は以下を記述します。
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
# yum をアップデートします
sudo yum update
# パッケージをインストールしていきます。
sudo yum install google-chrome-stable
# 正しくインストールできたか確認します。
google-chrome --version
バージョンが表示されればOKです。
これでEC2側で行う設定は全て完了です。あとはクライアント端末にVNC viewerをインストールして、アクセスしてみましょう。
以下サイトからUltraVNC viewerをインストールしてします。
窓の社
Ultra VNC viewerを起動し
["ELastic IPアドレス":5901] という形式で入力し、登録したPWを入力します。
こんな感じで表示されればOKです。
次にGoogle Chromeを起動します。
無事ネットサーフィンできそうです。
これで設定は完了です。
最後に
メモリ1GBでもサクサク動きます(笑)。Linuxってやっぱり軽いですね!
諸事情あって、直接PCからネットワークサーフィンできないときとかに便利かもです。
2022年7月追記
VNC Viewerでログイン後にGoogle Chromeが起動しない場合、Google Chromeをroot権限のユーザで起動している可能性があります。
その場合以下のようなメッセージが表示されます。
[root@ip-xx-xx-xx-xx ec2-user]# google-chrome
[3772:3772:0715/003400.717493:ERROR:zygote_host_impl_linux.cc(90)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
上記の画像にようにずっと起動を待ってもなにも起きないです。
rootでもgoogle chromeを起動できるようにオプションをつけて、起動させてやる必要があります。
やり方としてはVNC Viewerでログイン後に「システムツール」から「MATE端末」を開いて、
google-chrome --no-sandbox
これでGoogle chromeがrootでも起動するようになります。
MATE端末のコンソール画面にはエラーっぽいメッセージが出るのですが、Proxyが云々という内容なので無視しています。
参考にしたWebサイト
Amazon Linux2 にGUIデスクトップ環境(MATE)をインストールする手順
CentOS7×Chromeでスクレイピング環境を構築するチュートリアル
AWS公式
CentOS7・CentOS8 Google Chromeをインストールする