AL2023(Amazon Linux 2023)にnginxをインストールしてみた。

AL2023(Amazon Linux 2023)にnginxをインストールしてみました。nginxをインストールするにはリポジトリの登録から行います。/etc/yum.repos.d 配下に nginx.repo ファイルを作成して以下の内容を記載します。Stable版とMainline版では記載内容が異なります。作業はrootユーザーで行いました。

# cd /etc/yum.repos.d
# vi nginx.repo

Stable版の記載内容


[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/amzn/2023/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
priority=9

Mainline版の記載内容


[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/amzn/2023/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
priority=9

僕はStable版のほうで作業を進めました。Mainline版でもテストは十分されているようなので、最新のものが良い場合はMainline版で良いかと思います。

記載ができたら yum info nginx でパッケージの内容を確認します。

# yum info nginx

以下が2024年6月時点のStable版のものです。バージョンは 1.26.1 のものがインストールされます。

それでは、yum install nginx でインストールを行います。

# yum install nginx
 :
(インストールログは省略)
 :

途中でGPG鍵のインポートについての確認を求められます。GPG鍵の受入れを求められたら、フィンガープリントが 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62 と一致することを確認し、一致する場合は受入れます


 :
GPG 鍵 0x7BD9BF62 をインポート中:
 Userid     : "nginx signing key <signing-key@nginx.com>"
 Fingerprint: 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
 From       : https://nginx.org/keys/nginx_signing.key
これでよろしいですか? [y/N]: y
鍵のインポートに成功しました
 :

やってみたところ3つの鍵の受入れの確認がありました。すべて受入れても問題はないかと思いますが。

インストールが完了したらバージョンの確認をしてみます。

# nginx -v
nginx version: nginx/1.26.1

これで準備が整いましたのでnginxを起動させます。

# systemctl start nginx

ウェブブラウザから「http://nginxのIPアドレス」のURLを入力してnginxにアクセスします。以下の画面が表示されればnginxは稼働しています。

もしブラウザから繋がらない場合は、ファイアウォールが遮断していないかを確認してみてください。

TomcatのWebアプリケーションのフォルダ構成

TomcatのWebアプリケーションのフォルダ構成についてです。Tomcatのバージョンは 9.0.x のものです。OSはlinuxを想定しています。

Tomcatをインストールすると、その配下には bin、conf、lib、logs、webapps などのフォルダが配置されます。conf配下の server.xml は tomcat全体の設定をするものです。logs配下の catalina.out にはtomcat起動時、終了時のログが出力されます。Webアプリケーションは webapps配下になります。以下はwebapps配下にtoolsというWebアプリケーションを配置した例です。

META-INF配下の context.xml とWEB-INF配下の web.xml について記載しておきます。

context.xml にはWebアプリケーションの設定を記載します。自動リロードの設定やデータベースの設定をする際に使います。web.xml はWebアプリケーションの動作設定を記載するファイルです。サーブレットのURLや初期化パラメータ、フィルターなどの設定を行います。META-INF、および、WEB-INFのフォルダはブラウザからURLを指定して開くことはできません。ユーザーにはこの配下のファイルを隠蔽します。

Webアプリケーション自体のソースファイルは src配下、クラスファイルはclasses配下に配置します。この例ではsample01はパッケージを表しており、他のパッケージ(例えば、sample02、sample03)を追加することができます。その際はフォルダを追加します。

クラスファイルのコンパイルですが、独自に compile.sh というものを用意しました。src配下にソースファイルを配置して compile.sh を実行すると(実行権限をつけてください)、classesフォルダにクラスファイルを生成します。

以下が compile.sh の中身です。サーブレットをコンパイルするために servlet-api.jar へクラスパスを通しています。


#!/bin/bash
export CLASSPATH="../../../../lib/servlet-api.jar"
javac -encoding utf-8 -d ../classes -sourcepath ./ $1

Tool1.java をコンパイルする例です。srcファイル配下で実行してください。

$ ./compile.sh sample01/Tool1.java

実行するとclassesフォルダ配下にsapmle01フォルダ、および、 Tool1.classが自動生成されます。

クラスファイルとURLとの紐づけですが、WebServletアノテーションで設定するか、web.xml にURLを記載するかの方法があります。Tool1.java の中で、@WebServlet(urlPatterns={“/sample01/tool”}) と記載した場合、Tool1.class へのブラウザからのアクセスは以下のようになります。

http://localhost:8080/tools/sample01/tool

WEB-INF配下の libフォルダにはサーブレットが必要なjarファイルを配置しておきます。データベースに接続する際にに必要なJDBCドライバのjarファイルなどです。