「UbuntuでApacehのアップグレードが必要になった!」
「aptコマンドだけで最新版のApacheにバージョンアップしたい」
この記事は、上記のような場合に参考となります。
本記事の内容
- Apacheのアップグレードが必要な状況とは?
- aptによるApacheのアップグレード
- Apacheのバージョン確認
それでは、上記に沿って解説していきます。
Apacheのアップグレードが必要な状況とは?
そもそも、Apacheをバージョンアップしないといけないことがあるのでしょうか?
まさに、2021年10月4日にそのような状況がありました。
それに関するツイートが、以下。
経緯としては、Apacheで脆弱性(パストラバーサル攻撃が可能)が見つかりました。
それも、ゼロデイ脆弱性です。
かなりヤバめのセキュリティホールと言えます。
そして、すぐにアップグレードするように声明が出されています。
ただし、このようなときは焦らないにしましょう。
まずは、利用中のバージョンが対象がどうかの確認です。
今回は、Apache 2.4.49が対象になります。
Apache 2.4.49でなければ、今回の脆弱性はスルーしてOKです。
実際、ほとんどの人がスルーでしょう。
Apache 2.4.49は、2021年9月15日にリリースされています。
そのため、影響範囲はかなり狭いと思います。
このようなケース以外では、サポート期限切れがありますね。
サポート期限が切れた場合に備えて、Apacheをアップグレードします。
そうは言っても、サポート期限切れのApacheはたくさん稼働していますけどね。
でも、そこそこ大きい企業などでは律儀にサポート期限を守っています。
以上、Apacheのアップグレードが必要な状況を説明しました。
次は、aptによるApacheのアップグレードを行います。
aptによるApacheのアップグレード
aptによるApacheのアップグレードを行います。
言うまでもないですが、aptでApacheをインストールしていることが大前提です。
検証環境は、以下のUbuntuとなります。
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=20.04 DISTRIB_CODENAME=focal DISTRIB_DESCRIPTION="Ubuntu 20.04.1 LTS"
まずは、利用中のApacheのバージョンを確認します。
$ apache2ctl -v | grep 'Server version' Server version: Apache/2.4.41 (Ubuntu)
これは、上記で挙げたApache 2.4.49ではありません。
そのため、本来であれば緊急性は要しません。
でも、今回はこのApache 2.4.41を最新版のApacheにバージョンアップします。
現時点での最新版は、2021年10月4日にリリースされたApache 2.4.50です。
ちなみに、Apache 2.4.50はApache 2.4.49の脆弱性を解消済みです。
むしろ、そのためにリリースされたようなものでしょう。
肝心のアップグレード方法は、簡単です。
再度インストールするだけとなります。
ただし、テスト環境で事前に検証は入念に行いましょう。
追加したモジュール(mod)が動かないなどは、十分にあり得ることです。
上記記事通りに行えば、それでバージョンアップ完了です。
ただ、その前に各自で設定ファイルのバックは行っておきましょう。
具体的には、/etc/apache2以下です。
面倒なら丸ごとtarで固めてバックアップもありでしょう。
apache2.conf conf-available conf-enabled envvars magic mods-available mods-enabled ports.conf sites-available sites-enabled
あと、Apacheを停止するかどうかということも気になる人がいるかもしれません。
結論から言うと、起動中であってもアップグレードは可能です。
停止する場合は、次のコマンドで停止しておきましょう。
$ sudo systemctl stop apache2
では、ここからは実行したアップグレード(インストール)に用いたコマンドを羅列していきます。
$ sudo add-apt-repository ppa:ondrej/apache2
ここでパッケージの確認。
最新版のApache 2.4.50が、確認できます。
$ sudo apt show apache2 Package: apache2 Version: 2.4.50-1+ubuntu20.04.1+deb.sury.org+1 Priority: optional Section: httpd Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org> Installed-Size: 523 kB Provides: httpd, httpd-cgi Depends: apache2-bin (= 2.4.50-1+ubuntu20.04.1+deb.sury.org+1), apache2-data (= 2.4.50-1+ubuntu20.04.1+deb.sury.org+1), apache2-utils (= 2.4.50-1+ubuntu20.04.1+deb.sury.org+1), lsb-base, mime-support, perl:any, procps Recommends: ssl-cert Suggests: apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, www-browser Conflicts: apache2.2-bin, apache2.2-common Replaces: apache2.2-bin, apache2.2-common Download-Size: 163 kB APT-Sources: http://ppa.launchpad.net/ondrej/apache2/ubuntu focal/main amd64 Packages Description: Apache HTTP Server The Apache HTTP Server Project's goal is to build a secure, efficient and extensible HTTP server as standards-compliant open source software. The result has long been the number one web server on the Internet. . Installing this package results in a full installation, including the configuration files, init scripts and support scripts.
では、インストール。
$ sudo apt-get update $ sudo apt-get install apache2
エラーなく終われば、Apacheのアップグレードは成功です。
以上、aptによるApacheのアップグレードを説明しました。
最後は、Apacheのバージョンを確認しましょう。
Apacheのバージョン確認
次の二つの方法で確認します。
- コマンドによる確認
- PHPによる確認
それぞれを下記で説明します。
コマンドによる確認
複数のコマンドが存在しています。
ただ、一つを覚えれば十分です。
$ apache2ctl -v | grep 'Server version' Server version: Apache/2.4.50 (Ubuntu)
確かに、Apache 2.4.50をインストールできています。
PHPによる確認
この確認を行うには、PHPがApacheで動く必要があります。
PHPのインストールは、次の記事で解説しています。
現時点(2021年10月)ではあれば、PHP 8.1がインストール可能です。
準備が整ったら、次のファイル(ファイル名は何でも)を用意します。
apache_get_version関数で、Apacheのバージョンを取得できます。
index.php
<?php echo apache_get_version() ?>
そして、そのファイルにブラウザでアクセスします。
アップグレードしても、PHPとの連携で動作的には問題ないことを確認できました。
以上、Apacheのバージョン確認について説明しました。