3
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

オープンソースのグループウェア「GroupSession」をAWS EC2のAmazon Linux2環境に構築してみる

概要

とある事情から、あまりお金が掛からない、若しくは無料のグループウェアが無いか調べることとなりました。
完全無料のグループウェアでR-GROUPという製品があり、これはSaaSで提供される本当にいろんなものが無制限で利用できる非常に魅力的なグループウェアでした。
ただ、サイボウズLiveのこともあり、完全無料とはいえ、またどこかで移行しなきゃいけない事案が発生したらどうしよう。。。などと不安もあり、他に手は無いものかと調べていたら、オープンソースのグループウェアGroupSessionを見つけました。

さくらVPSでも契約して、ちゃちゃっと作ってもよかったのですが、GroupSession単体の構築はあんまり難しくなさそうだったので、せっかく検証するなら、自分のスキルアップにも役立てたいと思い、AWS EC2のインスタンスを作り、そこにGroupSessionの環境を構築してみようと思います。

環境情報

  • GroupSession 4.9.6
  • AWS EC2
  • インスタンスのOSは Amazon Linux2 x86_64
  • AdoptOpenJDK 11.0.7 ※GroupSessionの仕様で、AdoptOpenJDKのver11が指定されているため。
  • Tomcat 9.0.35

事前準備

【AWS】 知識ゼロから無料で始めるEC2を参考に、AWSの無料アカウント作成や、IAMユーザーの作成→ログインまでの手順は済ませた状態にしておきます。

AWS EC2の環境構築

EC2のインスタンスを新規作成

仮想マシンを起動するを押下
スクリーンショット 2020-06-05 20.36.00.png

念のため無料利用枠のみのチェックを付けて、Amazon Linux 2 AMIを選択
スクリーンショット 2020-06-05 20.40.36.png

t2.microを選択して確認と作成ボタンを押下
スクリーンショット 2020-06-05 20.43.24.png

起動ボタンを押下
スクリーンショット 2020-06-05 20.44.43.png

新しいキーペアの作成を指定し、任意のキーペア名を入力してから、必ずキーペアのダウンロードを行い、その後インスタンスの作成ボタンを押下する。
スクリーンショット 2020-06-05 20.46.03.png

インスタンスの作成ボタン押下後はこんな画面の表示になります。
ついでに、予想請求額の通知を受け取るという設定があるようなので、請求アラートの作成リンクを押下して設定しておきます。
スクリーンショット 2020-06-05 20.48.31.png
スクリーンショット 2020-06-05 20.49.45.png

SSHでインスタンスに接続

ダウンロードしたキーペアのファイルを、以下のコマンドを実行してコピーし、権限を変更する。

$ cp -p ./YamaEC2KeyPair.pem ~/.ssh/
$ chmod 400 ~/.ssh/YamaEC2KeyPair.pem 

デフォルトで作成されているユーザーec2-userで初回はアクセスします。

$ ssh -i ~/.ssh/YamaEC2KeyPair.pem ec2-user@ec2-3-19-218-51.us-east-2.compute.amazonaws.com
The authenticity of host 'ec2-3-19-218-51.us-east-2.compute.amazonaws.com (3.19.218.51)' can't be established.
ECDSA key fingerprint is SHA256:/A0EkFRSlC/QxREuiCLULK71rhGO7FulAt+/AoQAFk8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'ec2-3-19-218-51.us-east-2.compute.amazonaws.com,3.19.218.51' (ECDSA) to the list of known hosts.
Last login: Fri Jun  5 21:05:14 2020 from softbank060125073203.bbtec.net

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-172-31-24-75 ~]$ 

ec2-3-19-218-51.us-east-2.compute.amazonaws.comの部分はEC2のインスタンスのパブリックDNSの部分を指定します。
スクリーンショット 2020-06-06 15.50.34.png

初期設定をいろいろ

## まずはパッケージのアップデート
$ sudo yum update -y

## タイムゾーンをAsia/Tokyoに変更
$ sudo timedatectl set-timezone Asia/Tokyo
$ timedatectl status
      Local time: 金 2020-06-05 21:11:00 JST
  Universal time: 金 2020-06-05 12:11:00 UTC
        RTC time: 金 2020-06-05 12:11:00
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

## 日本語ロケールの設定
$ sudo localectl set-locale LANG=ja_JP.UTF-8
$ sudo localectl set-keymap jp106
$ localectl status
   System Locale: LANG=ja_JP.UTF-8
       VC Keymap: jp106
      X11 Layout: jp
       X11 Model: jp106
     X11 Options: terminate:ctrl_alt_bksp

特にec2-userはそのまま残して、別途ユーザーを追加したり削除したり、という面倒な作業は今回割愛します。

いったんスナップショットを作成

初期設定まで完了したので、いったんスナップショットを作成します。(この後も色々といじるし、怖いので。)
EC2ダッシュボードにアクセスして、アクション -> インスタンスの状態 -> 停止から、インスタンスを停止します。
スクリーンショット 2020-06-05 21.21.53.png

停止するとstoppedとなります。
スクリーンショット 2020-06-05 21.23.19.png

インスタンスの画面下部にある情報から、ルートデバイス -> /dev/xvda -> EBS IDを選択する
スクリーンショット 2020-06-05 21.25.21.png

ボリュームの画面に遷移するので、アクション -> スナップショットの作成を選択する
スクリーンショット 2020-06-05 21.26.30.png

適当に説明を入力して、スナップショットの作成ボタンを押下する。
スクリーンショット 2020-06-05 21.28.05.png

なんか、日本語入れたら怒られたんで、英語でコメントを入れてスナップショットを作成します。
スクリーンショット 2020-06-05 21.29.35.png

スナップショットの作成が完了すると以下のようになります。
スクリーンショット 2020-06-05 21.29.48.png

オープンソースグループウェア GroupSession のセットアップ

AdoptOpenJDKのインストール

https://groupsession.jp/support/setup_linux.html
のインストール手順として、AdoptOpenJDKのバージョン11がインストールされている必要があるとのこと。

AdoptOpenJDKをAmazonLinux2に対してyumでインストールしたいので、リポジトリを追加する。

[ec2-user@ip-172-31-24-75 yum.repos.d]$ sudo cat <<EOF > /etc/yum.repos.d/adoptopenjdk.repo
> [AdoptOpenJDK]
> name=AdoptOpenJDK
> baseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/amazonlinux/2/$(uname -m)
> enabled=1
> gpgcheck=1
> gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
> EOF
-bash: /etc/yum.repos.d/adoptopenjdk.repo: Permission denied

ec2-userでやったらエラーになったので、rootにsuして実行する。

$ sudo su -
[root@ip-172-31-24-75 ~]# cat <<EOF > /etc/yum.repos.d/adoptopenjdk.repo
> [AdoptOpenJDK]
> name=AdoptOpenJDK
> baseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/amazonlinux/2/$(uname -m)
> enabled=1
> gpgcheck=1
> gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
> EOF

# cat /etc/yum.repos.d/adoptopenjdk.repo
[AdoptOpenJDK]
name=AdoptOpenJDK
baseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/amazonlinux/2/x86_64
enabled=1
gpgcheck=1
gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public

リポジトリを追加したので、リストを確認してみる。

# yum list adoptopenjdk*

読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
利用可能なパッケージ
adoptopenjdk-11-hotspot.x86_64                                                    11.0.7+10-1                                                              AdoptOpenJDK
adoptopenjdk-11-hotspot-jre.x86_64                                                11.0.7+10-1                                                              AdoptOpenJDK
adoptopenjdk-11-openj9.x86_64                                                     11.0.7+10.openj9_0.20.0-1                                                AdoptOpenJDK
adoptopenjdk-11-openj9-jre.x86_64                                                 11.0.7+10.openj9_0.20.0-1                                                AdoptOpenJDK
adoptopenjdk-11-openj9xl.x86_64                                                   11.0.7+10.openj9_0.20.0-1                                                AdoptOpenJDK
adoptopenjdk-11-openj9xl-jre.x86_64                                               11.0.7+10.openj9_0.20.0-1                                                AdoptOpenJDK
adoptopenjdk-12-hotspot.x86_64                                                    12.0.2+10-1                                                              AdoptOpenJDK
adoptopenjdk-12-hotspot-jre.x86_64                                                12.0.2+10-1                                                              AdoptOpenJDK
adoptopenjdk-12-openj9.x86_64                                                     12.0.2+10-1                                                              AdoptOpenJDK
adoptopenjdk-12-openj9-jre.x86_64                                                 12.0.2+10-1                                                              AdoptOpenJDK
adoptopenjdk-12-openj9xl.x86_64                                                   12.0.2+10-1                                                              AdoptOpenJDK
adoptopenjdk-12-openj9xl-jre.x86_64                                               12.0.2+10-1                                                              AdoptOpenJDK
adoptopenjdk-13-hotspot.x86_64                                                    13+33-1                                                                  AdoptOpenJDK
adoptopenjdk-13-hotspot-jre.x86_64                                                13+33-1                                                                  AdoptOpenJDK
adoptopenjdk-13-openj9.x86_64                                                     13+33-1                                                                  AdoptOpenJDK
adoptopenjdk-13-openj9-jre.x86_64                                                 13+33-1                                                                  AdoptOpenJDK
adoptopenjdk-13-openj9xl.x86_64                                                   13+33-1                                                                  AdoptOpenJDK
adoptopenjdk-13-openj9xl-jre.x86_64                                               13+33-1                                                                  AdoptOpenJDK
adoptopenjdk-14-hotspot.x86_64                                                    14.0.1+7-1                                                               AdoptOpenJDK
adoptopenjdk-14-hotspot-jre.x86_64                                                14.0.1+7-1                                                               AdoptOpenJDK
adoptopenjdk-14-openj9.x86_64                                                     14.0.1+7-1                                                               AdoptOpenJDK
adoptopenjdk-14-openj9-jre.x86_64                                                 14.0.1+7-1                                                               AdoptOpenJDK
adoptopenjdk-14-openj9xl.x86_64                                                   14.0.1+7-1                                                               AdoptOpenJDK
adoptopenjdk-14-openj9xl-jre.x86_64                                               14.0.1+7-1                                                               AdoptOpenJDK
adoptopenjdk-8-hotspot.x86_64                                                     8u252_b09-1                                                              AdoptOpenJDK
adoptopenjdk-8-hotspot-jre.x86_64                                                 8u252_b09-1                                                              AdoptOpenJDK
adoptopenjdk-8-openj9.x86_64                                                      8u252_b09.openj9_0.20.0-1                                                AdoptOpenJDK
adoptopenjdk-8-openj9-jre.x86_64                                                  8u252_b09.openj9_0.20.0-1                                                AdoptOpenJDK
adoptopenjdk-8-openj9xl.x86_64                                                    8u252_b09.openj9_0.20.0-1                                                AdoptOpenJDK
adoptopenjdk-8-openj9xl-jre.x86_64                                                8u252_b09.openj9_0.20.0-1                                                AdoptOpenJDK

version11が指定されているので、adoptopenjdk-11-hotspot.x86_64をインストールする。

# yum -y install adoptopenjdk-11-hotspot.x86_64
# java -version
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.7+10, mixed mode)

yumでインストールされたjavaは/usr/lib/jvm/adoptopenjdk-11-hotspot/に格納されているっぽいですね。

https://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz

# cd /usr/local/src
# wget https://ftp.jaist.ac.jp/pub/apache/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz
# tar -xzvf apache-tomcat-9.0.35.tar.gz
# mv apache-tomcat-9.0.35 /usr/local
# ln -s /usr/local/apache-tomcat-9.0.35 /usr/local/tomcat
# useradd -s /sbin/nologin tomcat
# chown -R tomcat:tomcat /usr/local/apache-tomcat-9.0.35
# chown -h tomcat:tomcat /usr/local/tomcat

tomcat.serviceを新規で作成する。

/usr/lib/systemd/system/tomcat.service
# Systemd unit file for default tomcat
#
# To create clones of this service:
# DO NOTHING, use tomcat@.service instead.

[Unit]
Description=Apache Tomcat Web Application Container
After=syslog.target network.target

[Service]
Type=oneshot
PIDFile=/usr/local/tomcat/tomcat.pid
RemainAfterExit=yes
#EnvironmentFile=/etc/tomcat/tomcat.conf
#Environment="NAME="
#EnvironmentFile=-/etc/sysconfig/tomcat
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
ExecReStart=/usr/local/tomcat/bin/shutdown.sh;/usr/local/tomcat/bin/startup.sh
SuccessExitStatus=143
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

Tomcatを自動起動にする。

# systemctl enable tomcat.service

Tomcatを起動する

# systemctl start tomcat.service

EC2で8080ポートを開放する。

スクリーンショット 2020-06-06 16.35.18.png
スクリーンショット 2020-06-06 16.36.14.png
スクリーンショット 2020-06-06 16.38.50.png
※ここでも日本語を使うとエラーになるので注意

Tomcatにアクセスしてみます。
http://ec2-3-19-218-51.us-east-2.compute.amazonaws.com:8080
スクリーンショット 2020-06-06 16.39.59.png
これでTomcatまでの環境構築が完了。

GroupSessionをセットアップ

GroupSessionのwarファイルをダウンロードしてホットデプロイするだけのようです。

# cd /usr/local/src
# wget http://dl1.gs.sjts.co.jp/v4/download/files/4.9.6/gsession.war
# cp -p /usr/local/src/gsession.war /usr/local/tomcat/webapps/
# systemctl stop tomcat
# systemctl start tomcat

以下にアクセスすることでGroupSessionのログインページが表示されます。
http://ec2-3-19-218-51.us-east-2.compute.amazonaws.com:8080/gsession
スクリーンショット 2020-06-06 16.48.07.png

admin / admin でログインすることができるようです。
ログインするとこんな画面になっています。
スクリーンショット 2020-06-06 16.49.35.png

あとはユーザーを追加したりするだけっぽいですね。

あとがき

adminでログインした後、グループを1つ作り、ユーザーを1つ作り、ユーザーでログインすると以下のような画面が出てきました。
adminだと管理者としての機能しか触れないようで、一般ユーザーで入ると、ちゃんとグループウェアっぽい画面となりました。

スクリーンショット 2020-06-06 17.02.57.png

GSモバイルという有償オプションがあり、それを利用するとスマホ対応のブラウザ表示や、Android/iPhoneアプリからのGroupSessionへのアクセスが可能となるようです。
特に無償のままでも、PC版の画面のままであれば、スマホのブラウザからもアクセスできました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
3
Help us understand the problem. What are the problem?