Java開発用の仮想マシンをセットアップする
今回は、Azure環境にJavaアプリケーションを開発するための仮想マシンをセットアップする。ローカルのPCやほかのサーバ上に用意した環境を使う場合、最初の「仮想マシンをセットアップする」の手順は省略しても構わない。なお、本連載で登場するサンプルを試すにはAzureのアカウント登録が必要になる。
Azureのさまざまなサービスは従量課金制で使用した分だけの料金が発生するが、中には無料で利用できるサービスもある。例えば、さまざまなAPIが提供されるApp ServiceやサーバレスコンピューティングのためのFunctionsなどは、規定の上限に達するまでは無料で利用できる。また、一部の仮想マシンやストレージ、データベース・サービスなども12カ月間は無料で利用できる。
今回セットアップしようとしている環境は以下の通り。
- OS: CentOS 7.7
- 仮想マシンのサイズ: Standard B1s(vCPU 1, メモリ 1GB)
- ストレージ: 30GB(仮想マシン内臓)
- Java実行環境: Azul Zulu 11 (OpenJDK 11)
- ビルドツール: Apache Maven 3.6.3
本稿ではCentOS 7.7を使用するが、Linuxであれば他のOSでもそれほど大きな違いはない。仮想マシンのサイズはひとまずStandard B1sとしておく。Standard B1sであれば1年間無料の範囲に収まるからだ。Javaの開発・実行環境はAzul Systems社が提供しているOpenJDKディストリビューションのAzul Zulu 11を使う。
仮想マシンをセットアップする
それでは、セットアップしてみよう。まず、下記のURLからAzureサービスのポータルにサインインしてホームを開く。ここで、「Azureサービス」の[リソースの作成]をクリックしてリソース作成画面を開く。
Azure Marketplaceのリストから[Compute]を選択し、出てきたリストの中から[Virtual Machine]をクリックする。
次に、仮想マシンの初期設定を行う。初期状態ではリソースグループが存在しないので、[新規作成]をクリックして任意の名前のリソースグループを作成する。仮想マシン名も、好きな名前で構わない。イメージは、今回はCentOS 7.7を使うので[CentOS-based 7.7]を選択する。
仮想マシンのサイズは、[サイズを変更します]をクリックして使用したいものに変更する。今回は、前述のように「Standard B1s」を選んだ。認証方法に[パスワード認証]を選んだ場合は、ユーザー名とパスワードを設定する必要がある。[SSH公開キー]を選ぶ場合は、別途SSHキーを作成して公開鍵入力する。「受信ポート」はアクセスを許可するポートの種類となる。デフォルトでSSHにチェックが入っているが、HTTPとHTTPSも追加しておく。
ここまでできたら、下部の[ディスク]ボタンをクリックする。ディスクの選択画面では、ストレージの追加や種類の選択ができる。CentOSのイメージにはデフォルトで30GBのOSディスクが付属するので、そのディスクの種類を選ぶ。この画面でデータディスクも追加できるが、今回は必要になったら追加する。
ネットワークの設定は、特にデフォルトから変更する必要はないだろう。仮想ネットワーク名などを変更したい場合は、ここで設定しよう。
以降の設定は、特に理由のない限りはデフォルトのままで問題ないはずだ。左下の[検証および作成]ボタンをクリックすると、仮想マシンの作成が始まる。仮想マシンの作成が完了すると、下図のように「デプロイが完了しました」という画面が表示される。
[リソースに移動]ボタンをクリックすれば、仮想マシンの管理画面に移動して、起動や停止を行えるようになる。
パブリックIPアドレスが割り当てられているはずなので、以降はこのIPアドレスを使って、SSH経由で作成した仮想マシンにログインすることができる。
Azul Zuluのインストール
続いて、Javaの開発・実行環境であるJDKをインストールする(以降の作業は、作成した仮想マシンにsshなどでログインした上で行う)。2020年1月時点で、OracleをはじめとしてさまざまなベンダーがJDKの提供を行っているが、そのほとんどはオープンソースで開発されているOpenJDKをベースとしたもので、基本的な機能の違いはない。Azul社が提供しているAzul ZuluもそのようなOpenJDKディストリビューションの1つだ。MicrosoftとAzulの提携によって、Azure環境上では商用版と同等のZuluを追加料金なしで利用することができる。
CentOSではyumを使ってZuluをイストールできる。まず、Azure用のyumリポジトリを追加するが、次の内容で /etc/yum.repos.d/azure-only.repo というファイルを作成する。
/etc/yum.repos.d/azure-only.repo を作成
[zulu]
name=Repository for Zulu JDK
baseurl=https://repos.azul.com/azure-only/zulu/yum/
http://repos.azul.com/azul-repo.key からGPGキーをインポートする。
GPGキーのインポート
$ sudo rpm --import http://repos.azul.com/azul-repo.key
リポジトリとGPGキーが追加できたら、「zulu」のパッケージを検索してみよう。
zuluのパッケージを検索
$ yum search zulu
読み込んだプラグイン:fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
==================================== N/S matched: zulu ====================================
zulu-11-azure-jdk.x86_64 : Azul Systems Zulu JDK
zulu-11-azure-jre.x86_64 : Azul Systems Zulu JRE
zulu-11-azure-jre-headless.x86_64 : Azul Systems Zulu JRE Headless
zulu-13-azure-jdk.x86_64 : Azul Systems Zulu JDK
zulu-13-azure-jre.x86_64 : Azul Systems Zulu JRE
zulu-13-azure-jre-headless.x86_64 : Azul Systems Zulu JRE Headless
zulu-7-azure-jdk.x86_64 : Azul Systems Zulu JDK
zulu-7-azure-jre.x86_64 : Azul Systems Zulu JRE
zulu-7-azure-jre-headless.x86_64 : Azul Systems Zulu JRE Headless
zulu-8-azure-jdk.x86_64 : Azul Systems Zulu JDK
zulu-8-azure-jre.x86_64 : Azul Systems Zulu JRE
zulu-8-azure-jre-headless.x86_64 : Azul Systems Zulu JRE Headless
hunspell-zu.noarch : Zulu hunspell dictionaries
hyphen-zu.noarch : Zulu hyphenation rules
libreoffice-langpack-zu.x86_64 : Zulu language pack for LibreOffice
Name and summary matches only, use "search all" for everything.
Java 7, 8, 11, そして13のパッケージがそれぞれ見つかった。これらのうち、長期サポート(LTS)バージョンは11なので、今回はこれを使うことにする。パッケージ名を指定してインストールする。
Java 11版のzuluをインストール
$ sudo yum install -y zulu-11-azure-jdk.x86_64
java -version と打ってバーション番号が表示されればインストールは成功だ。
JDKのバージョンを確認
$ java -version
openjdk version "11.0.5" 2019-10-15 LTS
OpenJDK Runtime Environment 19.10-(Zulu-11.35+15-linux_x64)-Microsoft-Azure-restricted (build 11.0.5+10-LTS)
OpenJDK 64-Bit Server VM 19.10-(Zulu-11.35+15-linux_x64)-Microsoft-Azure-restricted (build 11.0.5+10-LTS, mixed mode)
Apache Mavenのインストール
次に、ビルドツールとしてApache Mavenをインストールする。Mavenを使う理由は、Azure App Serviceにデプロイするためのプラグインがあり、これと使うことで作成したアプリケーションを簡単にAzure上に展開できるからだ。Mavenの詳細は公式サイトで確認していただきたい。
下記のコマンドで、/opt/apache-maven にMavenをインストールする。本稿執筆時点の最新版は3.6.3だ。
Apache Mavenのインストール
$ cd /opt
$ sudo wget http://ftp.riken.jp/net/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip
$ sudo unzip apache-maven-3.6.3-bin.zip
$ sudo ln -s apache-maven-3.6.3 apache-maven
mvnコマンドをパス無しで実行できるように、/etc/profile.d/maven.sh を下記の内容で作成しておく。
/etc/profile.d/maven.sh を作成
export PATH=$PATH:/opt/apache-maven/bin
CentOSにログインしなおすか、~/.bashrcを読み込み直すことでパスの設定が反映される。完了したら、以下のようにmvnコマンドを実行してみよう。バージョン情報が表示されればインストールは成功だ。
mvnコマンドを実行
$ mvn --version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/apache-maven
Java version: 11.0.5, vendor: Azul Systems, Inc., runtime: /usr/lib/jvm/zulu-11-azure
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1062.9.1.el7.x86_64", arch: "amd64", family: "unix"
次回は、この環境を利用してWebアプリケーションをビルドし、Azureクラウド上にデプロイする方法を紹介する。