ウェブサイト検索

Debian 11においてNginxをリバースプロキシとして使用したGlassFish Javaサーバーのインストール方法


Debian 11においてNginxをリバースプロキシとして使用したGlassFish Javaサーバーのインストール方法

このチュートリアルはこれらのOSバージョンのために存在します

  • Debian 11 (Bullseye)
  • Debian 10 (バスター)

このページで

  1. 前提条件
  2. Javaをインストールする
  3. Glassfishをダウンロード
  4. GlassfishのためのSystemdサービスファイルを作成する
  5. Glassfish管理者パスワードを設定する
  6. GlassFishウェブインターフェースにアクセスする
  7. GlassfishのリバースプロキシとしてNginxを構成する
  8. 結論

GlassFishは、Javaアプリケーションのデプロイに使用されるオープンソースのアプリケーションサーバーです。JPA、JavaServer Faces、JMS、RMIなど、さまざまなJavaベースの技術をサポートしています。また、多くの他のJavaベースの技術もサポートしています。GlassFishは、Javaアプリケーションおよびそのコンポーネントを管理するためのウェブベースとコマンドラインインターフェースを提供します。GlassFishを使用すると、レガシー技術と簡単に統合できるポータブルでスケーラブルなアプリケーションを作成できます。

このチュートリアルでは、Debian 11 に Nginx をリバースプロキシとして使用して Glassfish サーバーをインストールする方法をお教えします。

前提条件

  • Debian 11を実行しているサーバー。
  • サーバーIPにポイントされた有効なドメイン名。
  • サーバーにはルートパスワードが設定されています。

Javaをインストールする

GlassfishはJavaベースのアプリケーションソフトウェアであるため、サーバーにJavaをインストールする必要があります。もしインストールされていない場合は、以下のコマンドを実行してインストールできます:

apt-get install default-jdk unzip -y

Javaがインストールされたら、以下のコマンドを使用してJavaのインストールを確認できます:

java --version

次の出力が得られます:

openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-post-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.13+8-post-Debian-1deb11u1, mixed mode, sharing)

完了したら、次のステップに進むことができます。

Glassfishをダウンロード

まず、Eclipseのウェブサイトから最新バージョンのGlassfishをダウンロードする必要があります。以下に示すように、wgetコマンドを使用してダウンロードできます:

wget https://download.eclipse.org/ee4j/glassfish/glassfish-6.1.0.zip

ダウンロードが完了したら、ダウンロードしたファイルを /opt ディレクトリに抽出します:

unzip glassfish-6.1.0.zip -d /opt/

完了したら、次のステップに進むことができます。

GlassfishのためのSystemdサービスファイルを作成する

次に、Glassfishサービスを管理するためのsystemdサービスファイルを作成する必要があります。以下のコマンドを使用して作成できます:

nano /usr/lib/systemd/system/glassfish.service

次の行を追加してください:

[Unit]
Description = GlassFish Server v6.1.0
After = syslog.target network.target

[Service]
User = root
ExecStart = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain
ExecStop = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar stop-domain
ExecReload = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar restart-domain
Type = forking

[Install]
WantedBy = multi-user.target

作業が完了したらファイルを保存して閉じてください。その後、変更を適用するためにsystemdデーモンを再読み込みします。

systemctl daemon-reload

次に、Glassfishサービスを開始し、システム再起動時に自動起動するように設定します。

systemctl start glassfish
systemctl enable glassfish

次のコマンドを使用して、Glassfishサービスを確認することもできます:

systemctl status glassfish

次の出力が得られます:

? glassfish.service - GlassFish Server v6.1.0
     Loaded: loaded (/lib/systemd/system/glassfish.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-11-07 04:56:16 UTC; 8s ago
    Process: 6018 ExecStart=/usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain (code=exited, status=0/SUC>
   Main PID: 6037 (java)
      Tasks: 91 (limit: 4679)
     Memory: 343.0M
        CPU: 13.299s
     CGroup: /system.slice/glassfish.service
             ??6037 /usr/lib/jvm/java-11-openjdk-amd64/bin/java -cp /opt/glassfish6/glassfish/modules/glassfish.jar -XX:+UnlockDiagnosticVMOp>

Nov 07 04:56:10 debian11 systemd[1]: Starting GlassFish Server v6.1.0...
Nov 07 04:56:16 debian11 java[6018]: Waiting for domain1 to start .....
Nov 07 04:56:16 debian11 java[6018]: Successfully started the domain : domain1
Nov 07 04:56:16 debian11 java[6018]: domain  Location: /opt/glassfish6/glassfish/domains/domain1
Nov 07 04:56:16 debian11 java[6018]: Log File: /opt/glassfish6/glassfish/domains/domain1/logs/server.log
Nov 07 04:56:16 debian11 java[6018]: Admin Port: 4848
Nov 07 04:56:16 debian11 java[6018]: Command start-domain executed successfully.
Nov 07 04:56:16 debian11 systemd[1]: Started GlassFish Server v6.1.0.

完了したら、次のステップに進むことができます。

Glassfish管理者パスワードを設定する

デフォルトでは、Glassfishはパスワードなしでアクセス可能です。したがって、管理者パスワードを設定して保護するのが良いアイデアです。次のコマンドを実行することでそれができます:

/opt/glassfish6/bin/asadmin --port 4848 change-admin-password

以下のように管理者ユーザー名を提供するよう求められます:

Enter admin user name [default: admin]>admin

デフォルトの管理者ユーザー名を入力し、Enterキーを押してください。既存の管理者パスワードの入力を求められます:

Enter the admin password> 

エンターキーを押してください。次に、以下のように新しい管理者パスワードを設定するように求められます:

安全なパスワードを設定してEnterを押してください。次の出力が得られます:

Command change-admin-password executed successfully.

次に、GlassfishでHTTPSを有効にすることも推奨されます。次のコマンドを実行することでこれを行うことができます:

/opt/glassfish6/bin/asadmin --port 4848 enable-secure-admin

HTTPSを有効にするために、管理者のユーザー名とパスワードの提供を求められます。

Enter admin user name>  admin
Enter admin password for user "admin"> 
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

最後に、変更を適用するためにGlassfishサービスを再起動してください。

systemctl restart glassfish

完了したら、次のステップに進むことができます。

GlassFishウェブインターフェースにアクセスする

この時点で、Glassfishはインストールされており、動作しています。デフォルトでは、GlassfishのWebインターフェースはポート8080でリッスンし、管理インターフェースはポート4848でリッスンします。まず、次のURLを使用してGlassfishのWebインターフェースにアクセスしてください:http://your-server-ip:8080。次のページが表示されるはずです。

次に、URL https://your-server-ip:4848 を使用して Glassfish 管理インターフェースにアクセスします。Glassfish ログインページにリダイレクトされます:

管理者のユーザー名とパスワードを入力し、ログインボタンをクリックしてください。次のページにGlassfishの管理インターフェースが表示されるはずです:

左ペインのサーバーをクリックすると、次の画面が表示されるはずです。

ここから、Glassfishのログを再起動、停止、表示できます。

左ペインのノードをクリックすると、次の画面にGlassfishノード情報が表示されるはずです:

GlassfishのリバースプロキシとしてNginxを構成する

Glassfishウェブインターフェースにアクセスするために、Nginxをリバースプロキシとして設定するのは良いアイデアです。これにより、ポート8080を使用せずにアプリケーションにアクセスできます。

そうするために、まず次のコマンドでNginxパッケージをインストールします:

apt-get install nginx -y

インストールが完了したら、以下のコマンドを使用してNginxの仮想ホスト設定ファイルを作成します:

nano /etc/nginx/conf.d/glassfish.conf

次の行を追加してください:

upstream glassfish {
  server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     glassfish.example.com;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://glassfish/hello/;
  }
}

ファイルを保存して閉じたら、次のコマンドを使ってNginxに構文エラーがないか確認してください。

nginx -t

すべてが順調であれば、次の出力が得られます:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

次に、変更を適用するためにNginxサービスを再起動します:

systemctl restart nginx

次のコマンドを使ってNginxのステータスを確認することもできます。

systemctl status nginx

次の出力を得るべきです:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-11-07 05:02:58 UTC; 22s ago
       Docs: man:nginx(8)
    Process: 6790 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 6791 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 6873 (nginx)
      Tasks: 3 (limit: 4679)
     Memory: 5.1M
        CPU: 53ms
     CGroup: /system.slice/nginx.service
             ??6873 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??6875 nginx: worker process
             ??6876 nginx: worker process

Nov 07 05:02:58 debian11 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 07 05:02:58 debian11 systemd[1]: Started A high performance web server and a reverse proxy server.

この時点で、Nginxはインストールされ、Glassfishウェブインターフェースを提供するように構成されています。今、URL http://glassfish.example.com を使用してGlassfishウェブインターフェースにアクセスできます。

結論

おめでとうございます!あなたはDebian 11上にNginxをリバースプロキシとして使用したGlassfishサーバーを正常にインストールしました。これで、Glassfishサーバー上にJavaベースのアプリケーションをデプロイできます。質問があれば気軽にお尋ねください。

関連記事: