Apacheのバージョンアップは、ウェブサーバーのセキュリティや機能を最新の状態に保つために重要です。特に、公式リポジトリからソースコードを取得し、自身の環境に合わせて手動でビルドすることで、細かな設定やパフォーマンスの最適化が可能になります。
本記事では、Apacheをソースコードからビルドし、既存のバージョンを安全にアップグレードする方法を解説します。公式サイトからソースを取得する方法から始まり、必要なライブラリのインストール、ビルド、設定の移行、トラブルシューティングまでを網羅します。
この手順を理解することで、システム管理者や開発者はApacheの最新機能を迅速に活用でき、セキュリティリスクを最小限に抑えることができます。初心者でも実践しやすいように、各ステップを具体的にわかりやすく説明していきます。
Apacheのソースコード取得方法
Apacheをソースコードからビルドするには、まず公式のソースコードを取得する必要があります。Apacheの公式サイトでは、安定版や最新の開発版が提供されており、環境に応じて選択可能です。また、Gitを利用してリポジトリから直接取得する方法もあります。
公式サイトからのダウンロード
- Apache公式サイトのダウンロードページにアクセスします。
- 「Source code」セクションから最新の安定版を選びます。
- 必要に応じて、PGP署名やチェックサムをダウンロードし、整合性を確認します。
.tar.gz
または.zip
形式でソースコードをダウンロードします。
Gitを使用したソースコードの取得
開発版や特定のブランチを取得したい場合は、Gitを使用して直接リポジトリから取得します。
git clone https://github.com/apache/httpd.git
ブランチを指定する場合は以下のようにします。
cd httpd
git checkout 2.4.x
これで、Apacheのソースコードがローカル環境にクローンされます。
ソースコード取得後の確認
取得したソースコードが正しく展開できることを確認するために、次のコマンドでディレクトリを確認します。
ls httpd
必要なファイル(README
やconfigure
など)が揃っていれば、ソースコードの取得は完了です。
必要なライブラリとツールのインストール
Apacheをソースコードからビルドするためには、必要なライブラリやツールを事前にインストールする必要があります。これらのパッケージは、Apacheのコンパイルや動作に不可欠です。
必要なパッケージ一覧
以下のライブラリやツールが必要です。
- GCC(またはClang) – コンパイラ
- Make – ビルドツール
- Perl – ビルドスクリプトで使用
- APR(Apache Portable Runtime) – Apacheの基盤ライブラリ
- APR-util – APRのユーティリティライブラリ
- PCRE(Perl Compatible Regular Expressions) – 正規表現ライブラリ
- OpenSSL – HTTPSを有効にするためのライブラリ(任意)
パッケージのインストール方法
使用するLinuxディストリビューションによってコマンドが異なりますが、主要な環境でのインストール例を示します。
CentOS / RHEL:
sudo yum install gcc make perl pcre-devel apr-devel apr-util-devel openssl-devel
Ubuntu / Debian:
sudo apt update
sudo apt install build-essential libpcre3-dev libapr1-dev libaprutil1-dev openssl libssl-dev
Fedora:
sudo dnf install gcc make perl pcre-devel apr-devel apr-util-devel openssl-devel
インストールの確認
以下のコマンドでインストールが完了したか確認します。
gcc --version
make --version
perl --version
問題なくバージョンが表示されれば、必要な環境が整っています。
トラブルシューティング
インストール中に「パッケージが見つからない」と表示された場合は、リポジトリを追加するか、以下のコマンドでリポジトリを更新します。
sudo apt update
sudo yum update
これで、Apacheビルドの準備が整いました。次はソースコードの展開と構成設定に進みます。
ソースコードの展開と構成設定
Apacheのソースコードを取得し、必要なライブラリをインストールしたら、次はソースコードを展開してビルドオプションを設定します。configure
スクリプトを使って、環境に合わせた構成を行います。
ソースコードの展開
ダウンロードしたApacheのソースコードを/usr/local/src
などの適当なディレクトリに移動して展開します。
cd /usr/local/src
tar -xvzf httpd-2.4.x.tar.gz
cd httpd-2.4.x
これでhttpd-2.4.x
ディレクトリが作成され、ソースコードが展開されます。
構成オプションの設定
ソースコードの展開後、configure
スクリプトを使ってビルドオプションを設定します。必要なモジュールを有効にすることで、用途に応じたApacheを構築できます。
基本的な構成設定は以下のコマンドで行います。
./configure --prefix=/usr/local/apache2 --enable-ssl --enable-so --with-mpm=event
--prefix
– インストール先ディレクトリ--enable-ssl
– SSLモジュールを有効化--enable-so
– DSO(動的モジュール)を有効化--with-mpm=event
– マルチプロセッシングモジュール(MPM)を選択
他にも利用可能なオプションは次のコマンドで確認できます。
./configure --help
構成の確認
構成が完了したら、次のように出力を確認し、エラーがないことを確認します。
Configuring Apache Portable Runtime library ...
checking for APR... yes
checking for APR-util... yes
checking for gcc... yes
...
エラーが発生した場合は、不足しているライブラリやツールをインストールしてから再度configure
を実行します。
次のステップ
構成が完了したら、次はmake
コマンドを使ってApacheをビルドし、インストール作業に進みます。
Apacheのビルドとインストール
ソースコードの構成設定が完了したら、次はApacheのビルドとインストールを行います。make
コマンドでソースコードをコンパイルし、make install
でシステムにインストールします。
Apacheのビルド
ソースコードがあるディレクトリで以下のコマンドを実行してビルドを開始します。
make
この処理には数分かかる場合があります。途中でエラーが発生した場合は、メッセージを確認し、不足しているライブラリや設定を見直します。
ビルドが完了したら、正しくコンパイルされたかを確認します。
ls -l ./support/httpd
httpd
バイナリが生成されていれば、ビルドは成功しています。
Apacheのインストール
次に、ビルドしたApacheをシステムにインストールします。
sudo make install
インストールが完了すると、/usr/local/apache2
(--prefix
で指定したディレクトリ)にApacheが配置されます。
インストール確認
インストールされたApacheのバージョンを確認して、正しくインストールされたかをチェックします。
/usr/local/apache2/bin/httpd -v
バージョン情報が表示されれば、インストールは成功です。
Apacheの初回起動
インストール後、以下のコマンドでApacheを起動します。
sudo /usr/local/apache2/bin/apachectl start
ブラウザでhttp://localhost
にアクセスし、デフォルトのApacheのウェルカムページが表示されれば正常に動作しています。
次のステップ
Apacheが動作していることを確認できたら、次は既存の環境をバックアップし、新バージョンに移行する準備を行います。
既存Apacheのバックアップと設定ファイルの保存
Apacheを新しいバージョンにアップグレードする際には、現在の環境をバックアップしておくことが重要です。これにより、万が一問題が発生した場合でも元の状態に戻せます。特に、設定ファイルやモジュール、SSL証明書などは慎重に扱う必要があります。
Apacheの停止
バックアップを行う前に、現在稼働しているApacheを停止します。
sudo systemctl stop httpd
または、手動インストールの場合は以下のコマンドを使用します。
sudo /usr/local/apache2/bin/apachectl stop
設定ファイルのバックアップ
Apacheの設定ファイルは通常/etc/httpd
または/usr/local/apache2/conf
ディレクトリに保存されています。これらのファイルをアーカイブしてバックアップします。
sudo cp -r /usr/local/apache2/conf /usr/local/apache2/conf.bak
加えて、SSL証明書や仮想ホストの設定もバックアップします。
sudo cp -r /etc/httpd/ssl /etc/httpd/ssl.bak
sudo cp -r /etc/httpd/sites-available /etc/httpd/sites-available.bak
モジュールのバックアップ
Apacheモジュールのバックアップも忘れずに行います。モジュールはmodules
ディレクトリに配置されています。
sudo cp -r /usr/local/apache2/modules /usr/local/apache2/modules.bak
データのバックアップ
ウェブサイトのデータも必要に応じてバックアップします。ドキュメントルート(通常は/var/www/html
)の内容を保存しておきます。
sudo cp -r /var/www/html /var/www/html.bak
バックアップの確認
バックアップが正しく行われたかを確認します。
ls /usr/local/apache2/conf.bak
ファイルやディレクトリが一覧表示されれば、バックアップは完了です。
次のステップ
バックアップが完了したら、新しいバージョンのApacheの設定やデータを移行する準備を進めます。
新バージョンApacheの設定と移行
新しいバージョンのApacheをインストールした後は、既存の設定やデータを新しい環境に移行します。このプロセスでは、設定ファイルの調整やモジュールの再設定が必要になります。アップグレードによって非互換な項目がある場合は、適宜修正を加えます。
設定ファイルの移行
バックアップした設定ファイルを新しいApacheの設定ディレクトリにコピーします。
sudo cp -r /usr/local/apache2/conf.bak/* /usr/local/apache2/conf/
もし設定ファイルのフォーマットが変更されていた場合は、リリースノートを確認し、必要な修正を加えます。
主要な設定ファイルの確認
- httpd.conf – Apacheのメイン設定ファイル
- ssl.conf – SSL関連の設定ファイル(存在する場合)
- vhost.conf – 仮想ホスト設定ファイル
これらのファイルを新しい環境に合わせて調整します。
モジュールの移行と再設定
Apacheのバージョンアップ後、一部のモジュールが非互換である可能性があります。そのため、使用するモジュールを確認し、必要であれば再インストールや再設定を行います。
sudo /usr/local/apache2/bin/httpd -M
このコマンドで有効なモジュールの一覧を確認します。バックアップしたモジュールを再度読み込むには以下を実行します。
sudo cp -r /usr/local/apache2/modules.bak/* /usr/local/apache2/modules/
モジュールが古いバージョンに依存している場合は、新しいモジュールをインストールする必要があります。
SSL証明書の移行
SSLを使用している場合は、証明書ファイルを移行します。
sudo cp -r /etc/httpd/ssl.bak/* /etc/httpd/ssl/
ssl.conf
内のパスが正しいことを確認し、必要に応じて修正します。
仮想ホスト設定の移行
複数のウェブサイトを運用している場合は、仮想ホストの設定も移行します。
sudo cp -r /etc/httpd/sites-available.bak/* /etc/httpd/sites-available/
sudo cp -r /etc/httpd/sites-enabled.bak/* /etc/httpd/sites-enabled/
各仮想ホスト設定ファイルが新しいApacheのバージョンでも動作するか確認し、必要に応じてポートやドメインの設定を更新します。
設定の検証
設定を反映させる前に、構文エラーがないか確認します。
sudo /usr/local/apache2/bin/httpd -t
エラーがないことを確認できれば、新しい設定を反映させる準備が整いました。
次のステップ
すべての設定が完了したら、Apacheを再起動して新しい環境で動作することを確認します。
Apacheの再起動と動作確認
新しいバージョンのApacheに設定を移行したら、Apacheを再起動して正しく動作しているか確認します。再起動後は、エラーログを確認し、正常に稼働していることをチェックします。
Apacheの起動と再起動
Apacheを起動または再起動するには、以下のコマンドを使用します。
新規インストールしたApacheの起動
sudo /usr/local/apache2/bin/apachectl start
再起動(設定変更後)
sudo /usr/local/apache2/bin/apachectl restart
状態確認
sudo /usr/local/apache2/bin/apachectl status
ステータスが「active (running)」であれば、正常に動作しています。
動作確認
Apacheが正常に起動したら、以下の方法で動作を確認します。
1. ブラウザで確認
ブラウザを開き、http://localhost
またはサーバーのIPアドレスにアクセスします。
デフォルトのApacheウェルカムページまたは、移行したウェブサイトが表示されれば成功です。
2. サーバーログの確認
問題がある場合は、エラーログを確認します。
sudo tail -f /usr/local/apache2/logs/error_log
エラーが表示された場合は、該当の設定ファイルを修正し、再度Apacheを再起動します。
ポートの確認
Apacheがリクエストを受け付けているかを確認します。
sudo netstat -tuln | grep :80
0.0.0.0:80
のように表示されていれば、ポート80でリクエストを受け付けています。
トラブルシューティング
- 起動失敗時の確認
sudo /usr/local/apache2/bin/httpd -t
構文エラーがあれば修正します。
- ポート競合の解消
他のサービスがポート80を使用している場合は、ポートを変更します。httpd.conf
でListen 8080
などに変更し、再起動します。
次のステップ
動作確認が完了したら、サーバーの安定運用を目指し、必要に応じて監視ツールを導入します。次は、トラブルシューティングやよくあるエラーへの対処法について説明します。
トラブルシューティングとよくあるエラーへの対処法
Apacheをソースコードからビルド・インストールした際には、様々なトラブルやエラーが発生する可能性があります。このセクションでは、よくあるエラーとその解決方法を紹介します。
1. ビルド時のエラー
エラー例:
configure: error: pcre-config for libpcre not found
原因: 必要なライブラリが不足しています。
対処法:
sudo apt install libpcre3-dev # Ubuntu/Debian
sudo yum install pcre-devel # CentOS/RHEL
ライブラリがインストールされていない場合、configure
が失敗します。エラーメッセージで不足しているパッケージを特定し、インストールしてください。
2. ポート競合エラー
エラー例:
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
原因: 他のサービスがポート80を使用しています。
対処法:
- 現在使用中のポートを確認します。
sudo netstat -tuln | grep :80
- 使用中のプロセスを特定して停止します。
sudo fuser -k 80/tcp
httpd.conf
でポートを変更して再起動します。
Listen 8080
sudo /usr/local/apache2/bin/apachectl restart
3. 設定ファイルの構文エラー
エラー例:
Syntax error on line 120 of /usr/local/apache2/conf/httpd.conf:
Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
原因: 必要なモジュールがロードされていません。
対処法:
sudo /usr/local/apache2/bin/httpd -M | grep ssl
SSLモジュールが有効でない場合は、httpd.conf
に以下を追加します。
LoadModule ssl_module modules/mod_ssl.so
その後、Apacheを再起動します。
sudo /usr/local/apache2/bin/apachectl restart
4. 権限エラー
エラー例:
(13)Permission denied: AH00072: make_sock: could not bind to address [::]:80
原因: 非特権ユーザーで80番ポートにバインドしようとしています。
対処法:
80番ポートは特権ポートのため、root
権限で実行する必要があります。
sudo /usr/local/apache2/bin/apachectl start
5. ログの確認
問題解決のためにはログの確認が重要です。以下のコマンドでログを確認します。
sudo tail -f /usr/local/apache2/logs/error_log
エラーログを逐次確認し、エラーが発生した場合はその都度対処してください。
次のステップ
Apacheが安定して動作することを確認したら、パフォーマンスチューニングやセキュリティ設定を強化して、運用環境に適した設定を行いましょう。次はまとめに進みます。
まとめ
本記事では、Apacheをソースコードからビルドして最新バージョンにアップグレードする手順を解説しました。公式サイトからソースコードを取得し、必要なライブラリをインストールした上で、configure
スクリプトを用いた構成設定、ビルド、インストールまでの流れを詳しく説明しました。
また、既存のApache環境をバックアップし、設定ファイルやモジュールを新しいバージョンに移行する方法も紹介しました。起動後の動作確認や、ポート競合、モジュールの不足といったよくあるエラーへの対処法を通じて、安定した運用が可能となります。
ソースコードからのビルドは、柔軟に設定をカスタマイズできるメリットがありますが、その分手順が複雑になることもあります。慎重に進めることで、トラブルを回避し、セキュリティが強化された最新のApache環境を構築できます。
コメント