最終的なコマンドの流れを先に示します。詳細は後続の各セクションで説明します。
# 大まかな流れ(各ステップの詳細は後述)
cd /usr/local/src
wget https://downloads.apache.org/httpd/httpd-2.4.62.tar.gz
sha256sum -c httpd-2.4.62.tar.gz.sha256
tar zxf httpd-2.4.62.tar.gz
cd httpd-2.4.62
./configure --prefix=/usr/local/apache2 --enable-ssl --enable-so --enable-rewrite --with-mpm=event
make -j$(nproc)
sudo make install
パッケージ版との使い分け——ソースビルドを選ぶ場面
dnf install httpd や apt install apache2 で済むなら、それが最善です。OS標準パッケージは依存関係・セキュリティアップデートの追跡が自動化されており、運用コストが低い選択肢です。
ソースビルドが有効なのは次の場合です。
- OSリポジトリのバージョンが古く、必要な機能やセキュリティ修正が含まれていない
- 特定のコンパイルオプションやモジュール構成を自分で管理したい
- インストール先を
/usr/local/apache2など独立したパスに固定したい
注意点として、OSパッケージ版の Apache(httpd または apache2)がすでにインストールされている場合はソースビルド版と競合する可能性があります。ソースビルドに切り替える場合は事前にパッケージ版を削除してください。
ビルドに必要な依存パッケージを揃える
Apache 2.4 のビルドには APR・APR-Util・PCRE2・OpenSSL の開発ヘッダーが必要です。
Rocky Linux / AlmaLinux / RHEL 9 系
sudo dnf install -y gcc make \
apr-devel apr-util-devel \
pcre2-devel openssl-devel \
expat-devel libxml2-devel
Ubuntu 22.04 / 24.04 系
sudo apt install -y build-essential \
libapr1-dev libaprutil1-dev \
libpcre2-dev libssl-dev \
libexpat1-dev libxml2-dev
これらが揃っていないと configure 実行中に configure: error: APR not found や pcre2-config for libpcre2 not found といったエラーで止まります。エラーメッセージを確認してパッケージ名を特定するのが早道です。
ソースコードの取得とハッシュ検証
バージョン番号は https://httpd.apache.org/download.cgi で最新の安定版を確認してから使ってください。以下は 2.4.62 を例にしています。
cd /usr/local/src
sudo wget https://downloads.apache.org/httpd/httpd-2.4.62.tar.gz
sudo wget https://downloads.apache.org/httpd/httpd-2.4.62.tar.gz.sha256
sha256sum -c httpd-2.4.62.tar.gz.sha256
httpd-2.4.62.tar.gz: OK と表示されれば改ざんなし。FAILED が出た場合はダウンロードをやり直してください。ミラーサイト経由でダウンロードした場合でも、ハッシュ検証は必ず公式サイトの値と照合します。
sudo tar zxf httpd-2.4.62.tar.gz
cd httpd-2.4.62
configure・コンパイル・インストールを実行する
本番サーバーを想定した典型的なオプション構成です。
sudo ./configure \
--prefix=/usr/local/apache2 \
--enable-ssl \
--enable-so \
--enable-rewrite \
--with-mpm=event
sudo make -j$(nproc)
sudo make install
各オプションの意味は以下のとおりです。
--prefix=/usr/local/apache2:インストール先を独立したディレクトリに固定し、OS標準パスと混在させない--enable-ssl:HTTPS対応モジュール(mod_ssl)を有効化--enable-so:モジュールを動的ロード(DSO)できるようにする。後からモジュールを追加しやすくなる--enable-rewrite:URLリライトに使う mod_rewrite を有効化--with-mpm=event:接続ごとにスレッドを使うイベント駆動MPM。高並列アクセスに強く、現在の主流
make -j$(nproc) は CPU コア数だけ並列ビルドします。シングルコア環境でも -j1 に置き換えるだけで問題ありません。make install は root 権限が必要です。
インストール完了後、バージョンを確認します。
/usr/local/apache2/bin/httpd -v
Server version: Apache/2.4.62 (Unix) と表示されれば成功です。
systemd サービスとして登録して起動する
ソースビルド版には systemd のサービスファイルが付属しません。以下の内容で作成します。
sudo tee /etc/systemd/system/httpd.service << 'EOF'
[Unit]
Description=Apache HTTP Server (Source Build)
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/apache2/logs/httpd.pid
ExecStart=/usr/local/apache2/bin/apachectl start
ExecReload=/usr/local/apache2/bin/apachectl graceful
ExecStop=/usr/local/apache2/bin/apachectl stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now httpd
enable --now は自動起動の登録と即時起動を同時に行います。ExecReload に apachectl graceful を指定しているため、systemctl reload httpd で設定を無停止リロードできます。
起動直後に設定ファイルを確認すると AH00558: httpd: Could not reliably determine the server's fully qualified domain name という警告が出ることがあります。これは /usr/local/apache2/conf/httpd.conf の ServerName が未設定のためです。
# /usr/local/apache2/conf/httpd.conf を編集
# ServerName www.example.com:80 の行を有効化するか、以下を追記
ServerName localhost
動作確認とファイアウォールの設定
systemctl status httpd
curl -I http://localhost/
レスポンスに Server: Apache/2.4.62 (Unix) が含まれていれば正常に稼働しています。
外部からのアクセスを許可するにはファイアウォールの開放が必要です。
Rocky Linux / RHEL 系(firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Ubuntu 系(ufw)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
ドキュメントルートのデフォルトは /usr/local/apache2/htdocs/ です。動作確認用の index.html がすでに配置されているので、ブラウザから IP アドレスを開いて「It works!」が表示されれば導入完了です。
ある運用現場では、アップデートのたびに /usr/local/src に新バージョンを展開し、configure オプションを記録したシェルスクリプトを残しておくことで、差分確認と再ビルドの手間を大幅に削減していました。ソースビルドを継続運用するなら、ビルドコマンドをスクリプト化して git 管理しておくことを推奨します。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
