0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめてのアドベントカレンダーAdvent Calendar 2024

Day 19

Amazon Linux 2に最新の安定版Apache 2.4.62をインストールする手順

Last updated at Posted at 2024-12-24

はじめに

Fargate(Amazon Linux 2)にapacheの最新バージョン2.4.62がインストール出来るか確認するために検証しました。

apacheのバージョンを最新の安定版は、バージョン2.4.62です。
https://httpd.apache.org/download.cgi?utm_source=chatgpt.com

前提条件

amazon linux2のOSのEC2を作成する

手順

apacheのバージョンを最新の安定版は、バージョン2.4.62までインストール可能そうです。

※chatGPTから参照

パラメータ名 意味
list 利用可能なパッケージやインストール済みのパッケージの情報をリスト表示
available 現在インストールされていないが、リポジトリ内でインストール可能なパッケージを表示
httpd 検索対象となるパッケージ名。ここではApache HTTP Server(httpd)パッケージに限定して検索します。
--showduplicates 同じパッケージ名であっても、異なるバージョンが複数存在する場合、それらすべてをリストに表示するオプション。
[root@ip-10-0-11-74 ~]# yum list available httpd --showduplicates
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Available Packages
httpd.x86_64                                                    2.4.6-67.amzn2.6.1                                                     amzn2-core
httpd.x86_64                                                    2.4.33-2.amzn2.0.2                                                     amzn2-core
httpd.x86_64                                                    2.4.33-2.amzn2.0.3                                                     amzn2-core
httpd.x86_64                                                    2.4.33-2.amzn2.1.0                                                     amzn2-core
httpd.x86_64                                                    2.4.34-1.amzn2.1.0                                                     amzn2-core
httpd.x86_64                                                    2.4.34-1.amzn2.1.1                                                     amzn2-core
httpd.x86_64                                                    2.4.37-1.amzn2.0.1                                                     amzn2-core
httpd.x86_64                                                    2.4.39-1.amzn2.0.1                                                     amzn2-core
httpd.x86_64                                                    2.4.41-1.amzn2.0.1                                                     amzn2-core
httpd.x86_64                                                    2.4.43-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.46-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.46-2.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.48-2.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.51-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.52-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.53-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.54-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.55-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.56-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.57-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.58-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.59-1.amzn2                                                         amzn2-core
httpd.x86_64                                                    2.4.61-1.amzn2.0.1                                                     amzn2-core
httpd.x86_64                                                    2.4.62-1.amzn2.0.1                                                     amzn2-core
httpd.x86_64                                                    2.4.62-1.amzn2.0.2                                                     amzn2-core

httpd-2.4.62-1.をインストールしました。

# yum -y install httpd-2.4.62-1.amzn2.0.2

Apache/2.4.62のバージョンになりました。

[root@ip-10-0-11-74 ~]# httpd -version
Server version: Apache/2.4.62 ()
Server built:   Aug 13 2024 20:16:58

Fargateでも試しました。

amazon linux2のEC2にAdministratorAccessの権限付与

aws cliをインストール
dockerをインストールする

# yum install docker

EC2の/rootフォルダ配下にapacheのバージョン2.4.62をインストールするdockerfileを定義

cd /root

# cat dockerfile
# Amazon Linux 2 ベースイメージを使用
FROM amazonlinux:2

# 特定バージョンの httpd をインストール
RUN yum -y install httpd-2.4.62-1.amzn2.0.2 && yum clean all

# 必要なポートを公開
EXPOSE 80

# Apache を前景モードで起動
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

ECRにプライベートリポジトリにリポジトリを作成する

サービス >> ECR >> プライベートリポジトリをクリックする。
対象リポジトリをクリックして「プッシュコマンドを表示」をクリックする。
image.png

リポジトリに対してイメージを認証し、プッシュします。

※dockerfileを格納しているフォルダへ移動してから以下のプッシュコマンドを実行する。

aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin <AWSアカウント番号>.dkr.ecr.ap-northeast-1.amazonaws.com

以下のコマンドを実行するにはdockerサービスを起動する必要があります。
以下のコマンドを使用して、Docker イメージを構築します

docker build -t test-apache .

[+] Building 21.2s (6/6) FINISHED                                                                                                 docker:default
 => [internal] load build definition from dockerfile                                                                                        0.0s
 => => transferring dockerfile: 200B                                                                                                        0.0s
 => [internal] load metadata for docker.io/library/amazonlinux:2                                                                            1.7s
 => [internal] load .dockerignore                                                                                                           0.0s
 => => transferring context: 2B                                                                                                             0.0s
 => [1/2] FROM docker.io/library/amazonlinux:2@sha256:e43d43164208b96f2ddbe5652b606c944073b76292d73c2f5868312d25bc1e6c                      4.4s
 => => resolve docker.io/library/amazonlinux:2@sha256:e43d43164208b96f2ddbe5652b606c944073b76292d73c2f5868312d25bc1e6c                      0.0s
 => => sha256:e43d43164208b96f2ddbe5652b606c944073b76292d73c2f5868312d25bc1e6c 2.37kB / 2.37kB                                              0.0s
 => => sha256:59a60a81efa119dffb69d057fce03fa9b5581db48e4275d16a2bb77eaca938a1 1.02kB / 1.02kB                                              0.0s
 => => sha256:8c31145513eb307a0391a15836de7602f75a4fb394999f865400e903b13deb4f 556B / 556B                                                  0.0s
 => => sha256:899046e4a240e349763e42464f501b60a1bd429af9f38ccd927d9da2124b98de 62.68MB / 62.68MB                                            0.9s
 => => extracting sha256:899046e4a240e349763e42464f501b60a1bd429af9f38ccd927d9da2124b98de                                                   3.3s
 => [2/2] RUN  yum -y install httpd-2.4.62-1.amzn2.0.2                                                                                     12.0s
 => exporting to image                                                                                                                      2.9s
 => => exporting layers                                                                                                                     2.9s
 => => writing image sha256:76ea342bc6bcd950d323240e8747fd6452c63a1975189648d98e74bb4dd5665f                                                0.0s
 => => naming to docker.io/library/test-apache

構築が完了したら、このリポジトリにイメージをプッシュできるように、イメージにタグを付けます。

docker tag test-apache:latest <AWSアカウント番号>.dkr.ecr.ap-northeast-1.amazonaws.com/test-apache:1

以下のコマンドを実行して、新しく作成した AWS リポジトリにこのイメージをプッシュします:

# docker push <AWSアカウント番号>.dkr.ecr.ap-northeast-1.amazonaws.com/test-apache:1
The push refers to repository [<AWSアカウント番号>.dkr.ecr.ap-northeast-1.amazonaws.com/test-apache]
7381873b1670: Pushed
3f307074c00f: Pushed
1: digest: sha256:70f8bd89102a88344b5e407e3add31347cef1eb3c9e5074761fc706bd92c3d79 size: 741

イメージタグ1でプッシュ出来ていることを確認しました。
image.png

タスク定義を作成する

パラメータ名 意味
タスク定義ファミリー test-task
起動タイプ AWS Fargate
OS Linux/x86_64
コンテナ test-apache
イメージURL 「AWSアカウント番号」.dkr.ecr.ap-northeast-1.amazonaws.com/test-apache:1

※ログ収集の使用はお金がかかるため今回はオフにしました。

image.png

サービスを作成しました

パラメータ名 意味
コンピューティングオプション キャパシティープロバイダー戦略
カスタムを使用 (アドバンスト) FARGATE ウエイト1
プラットフォームバージョン LATEST
タスク定義 test-task リビジョン1
ローリングアップデートにチェックを入れた
ネットワーキングでVPC  サブネット セキュリティグループの設定を行う

ローリングデプロイのため、
新しいリビジョンをデプロイ後、新しいコンテナが実行中になるまでは古いコンテナは停止しないことが分かりました。並行稼働します。そのため、タスクをデプロイして接続断が発生しないように見受けられます

image.png

ECRのリポジトリを更新したら必ずタスク定義も更新する必要があります。
ECRリポジトリを更新
タスク定義を更新 ※ECRリポジトリを選択する。
サービスを更新 ※タスク定義のリポジトリを選択する

ECSにログインしました。

ECS EXECの設定をしました。
以下のサイトが大変参考になりました。
https://blog.serverworks.co.jp/ecs-exec

image.png

以下のコマンドでECSに接続しました。

$ aws ecs execute-command --cluster test \
>     --task d775756b28274b57943289784f784c1c \ ※タスクID
>     --container test-apache \ コンテナ名
>     --interactive \
>     --command "/bin/sh"

ECSにログイン後、httpdのバージョンを確認を行い2.4.62になっていることを確認しました。

sh-4.2# httpd -v
Server version: Apache/2.4.62 ()
Server built:   Aug 13 2024 20:16:58
sh-4.2#
sh-4.2#

この検証でかかった費用

image.png

まとめ

Amazon Linux 2はEC2とFargate含めて最新の2.4.62までバージョンアップできることが分かりました。
Fargateのデフォルトはローリングアップデートで且つレプリカのため、新しいコンテナが実行中になるまでは古いコンテナは停止しないことが分かりました。並行稼働します。そのため、タスクをデプロイして接続断が発生しないように見受けられます

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?