概要
とある事情から、あまりお金が掛からない、若しくは無料のグループウェアが無いか調べることとなりました。
完全無料のグループウェアで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のインスタンスを新規作成
念のため無料利用枠のみ
のチェックを付けて、Amazon Linux 2 AMI
を選択
新しいキーペアの作成を指定し、任意のキーペア名を入力してから、必ずキーペアのダウンロードを行い、その後インスタンスの作成ボタンを押下する。
インスタンスの作成ボタン押下後はこんな画面の表示になります。
ついでに、予想請求額の通知を受け取るという設定があるようなので、請求アラートの作成
リンクを押下して設定しておきます。
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の部分を指定します。
初期設定をいろいろ
## まずはパッケージのアップデート
$ 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ダッシュボードにアクセスして、アクション -> インスタンスの状態 -> 停止から、インスタンスを停止します。
インスタンスの画面下部にある情報から、ルートデバイス -> /dev/xvda -> EBS IDを選択する
ボリュームの画面に遷移するので、アクション -> スナップショットの作成を選択する
適当に説明を入力して、スナップショットの作成ボタンを押下する。
なんか、日本語入れたら怒られたんで、英語でコメントを入れてスナップショットを作成します。
オープンソースグループウェア 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を新規で作成する。
# 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ポートを開放する。
※ここでも日本語を使うとエラーになるので注意Tomcatにアクセスしてみます。
http://ec2-3-19-218-51.us-east-2.compute.amazonaws.com:8080
これで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
admin / admin でログインすることができるようです。
ログインするとこんな画面になっています。
あとはユーザーを追加したりするだけっぽいですね。
あとがき
adminでログインした後、グループを1つ作り、ユーザーを1つ作り、ユーザーでログインすると以下のような画面が出てきました。
adminだと管理者としての機能しか触れないようで、一般ユーザーで入ると、ちゃんとグループウェアっぽい画面となりました。
GSモバイルという有償オプションがあり、それを利用するとスマホ対応のブラウザ表示や、Android/iPhoneアプリからのGroupSessionへのアクセスが可能となるようです。
特に無償のままでも、PC版の画面のままであれば、スマホのブラウザからもアクセスできました。