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ポータルのホームからリソースを新規作成

    Azureポータルのホームからリソースを新規作成

Azure Marketplaceのリストから[Compute]を選択し、出てきたリストの中から[Virtual Machine]をクリックする。

  • [Virtual Machine]を選択

    [Virtual Machine]を選択

次に、仮想マシンの初期設定を行う。初期状態ではリソースグループが存在しないので、[新規作成]をクリックして任意の名前のリソースグループを作成する。仮想マシン名も、好きな名前で構わない。イメージは、今回はCentOS 7.7を使うので[CentOS-based 7.7]を選択する。

  • 仮想マシンの名前やOSイメージなどを選択

    仮想マシンの名前やOSイメージなどを選択

仮想マシンのサイズは、[サイズを変更します]をクリックして使用したいものに変更する。今回は、前述のように「Standard B1s」を選んだ。認証方法に[パスワード認証]を選んだ場合は、ユーザー名とパスワードを設定する必要がある。[SSH公開キー]を選ぶ場合は、別途SSHキーを作成して公開鍵入力する。「受信ポート」はアクセスを許可するポートの種類となる。デフォルトでSSHにチェックが入っているが、HTTPとHTTPSも追加しておく。

  • 仮想マシンのサイズやログイン方法などの設定

    仮想マシンのサイズやログイン方法などの設定

  • 仮想マシンのサイズは「B1s」を選ぶ

    仮想マシンのサイズは「B1s」を選ぶ

ここまでできたら、下部の[ディスク]ボタンをクリックする。ディスクの選択画面では、ストレージの追加や種類の選択ができる。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クラウド上にデプロイする方法を紹介する。