「公式リポジトリのhttpdとソースインストールで、運用面でどう違うのか知りたい」
ApacheはWebサーバーの代表格として、いまも世界中の本番環境で稼働しているソフトウェアです。インストール方法はいくつかあり、現代ではdnf/aptによるパッケージインストールが主流ですが、最新版を即座に取り込みたい場合や、構成を細かく制御したい場合はソースからのビルドも選択肢になります。
この記事では、Apacheをインストールする方法を、RHEL9 / Rocky Linux 9 / AlmaLinux 9 / Ubuntu 24.04 LTSのパッケージ方式と、ソースコードからのビルド方式の両方で解説します。実機での出力例も含めて、現場で迷わない選択基準まで網羅します。
この記事のポイント
・RHEL9系は dnf install httpd、Ubuntu系は apt install apache2 で導入できる
・公開サーバーでパッケージが追従していない脆弱性対応が必要な時はソースインストールも選択肢
・サービス名がRHEL系=httpd、Debian系=apache2と異なる点に注意
・ファイアウォール(firewalld/ufw)で80/443を開けないと外部から接続できない
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Apacheのインストール方式を選ぶ基準
Apacheのインストール方法は大きく2つあります。・パッケージインストール:dnf(RHEL系)やapt(Debian系)でディストリビューション公式のhttpd/apache2を入れる方式
・ソースインストール:Apache公式からソースコード(tar.gz)を取得してconfigure→make→make installする方式
本番運用ではパッケージインストールを第一候補にしてください。systemdサービスの登録、ログローテーション、SELinuxポリシー、セキュリティアップデートまでディストリビューション側が面倒を見てくれるためです。
一方、ソースインストールを選ぶべきケースは限定的で、次のような場合です。
・公式リポジトリ提供版のApacheに未収録のモジュールが必要な時
・複数バージョンのApacheを同一サーバーで併存させたい時
・パッケージ追従より早く特定の脆弱性パッチを取り込みたい時
セミナーで3,100名以上の受講生を指導してきた経験から言うと、初学者ほど「ソースからビルドする方が玄人っぽい」と考えがちですが、運用フェーズに入るとパッケージ管理から外れた野良ビルドは保守の重荷になります。まずはdnf/aptで入れて、必要が出てから初めてソースを検討してください。
RHEL9系(Rocky Linux 9 / AlmaLinux 9)でApacheをインストール
RHEL9 / Rocky Linux 9 / AlmaLinux 9では、いずれもdnf でhttpdパッケージをインストールします。1. パッケージのインストール
# Apacheパッケージのインストール [root@web01 ~]# dnf install -y httpd Last metadata expiration check: 0:12:34 ago on Mon 19 May 2026 09:00:00 AM JST. Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================ Installing: httpd x86_64 2.4.62-1.el9 appstream 1.4 M Installing dependencies: apr x86_64 1.7.0-12.el9 appstream 123 k apr-util x86_64 1.6.1-23.el9 appstream 93 k httpd-core x86_64 2.4.62-1.el9 appstream 1.5 M httpd-filesystem noarch 2.4.62-1.el9 appstream 14 k httpd-tools x86_64 2.4.62-1.el9 appstream 85 k mod_http2 x86_64 2.0.26-2.el9 appstream 162 k mod_lua x86_64 2.4.62-1.el9 appstream 63 k Complete!
2. サービスの起動と自動起動設定
# Apacheを起動 [root@web01 ~]# systemctl start httpd # OS起動時に自動起動するよう設定 [root@web01 ~]# systemctl enable httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service -> /usr/lib/systemd/system/httpd.service. # 起動状態を確認 [root@web01 ~]# systemctl status httpd * httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled) Active: active (running) since Mon 2026-05-19 09:15:22 JST; 5s ago
3. firewalldで80番ポートを開放
# HTTP(80番)を恒久的に開放 [root@web01 ~]# firewall-cmd --permanent --add-service=http # HTTPS(443番)も併せて開放する場合 [root@web01 ~]# firewall-cmd --permanent --add-service=https # 設定をリロード [root@web01 ~]# firewall-cmd --reload success
Ubuntu 24.04 LTS / Debian系でApacheをインストール
Ubuntu / DebianではApacheのパッケージ名がapache2 になります。サービス名も同じく apache2 です。1. パッケージのインストール
# パッケージインデックスを更新 ubuntu@web01:~$ sudo apt update # Apacheをインストール ubuntu@web01:~$ sudo apt install -y apache2 Reading package lists... Done Building dependency tree... Done The following NEW packages will be installed: apache2 apache2-bin apache2-data apache2-utils Setting up apache2 (2.4.58-1ubuntu8) ...
2. サービスの起動と自動起動設定
# Apacheを起動 ubuntu@web01:~$ sudo systemctl start apache2 # OS起動時に自動起動を有効化 ubuntu@web01:~$ sudo systemctl enable apache2 # 起動確認 ubuntu@web01:~$ sudo systemctl status apache2 * apache2.service - The Apache HTTP Server Active: active (running) since Mon 2026-05-19 09:30:11 JST; 3s ago
3. ufwで80番ポートを開放
# ufwが有効な場合はApacheプロファイルで開放 ubuntu@web01:~$ sudo ufw allow 'Apache Full' Rules updated Rules updated (v6) # 'Apache Full'はHTTP(80)+HTTPS(443)、HTTPのみなら'Apache'を指定
RHEL系とDebian系の設定ファイル配置の違い
パッケージインストールの場合、設定ファイルのパスがディストリビューションごとに異なります。最初に押さえておくべき差分は次のとおりです。| 項目 | RHEL9 / Rocky9 / AlmaLinux9 | Ubuntu 24.04 / Debian |
|---|---|---|
| パッケージ名 | httpd |
apache2 |
| サービス名 | httpd |
apache2 |
| メイン設定ファイル | /etc/httpd/conf/httpd.conf |
/etc/apache2/apache2.conf |
| 追加設定の置き場所 | /etc/httpd/conf.d/*.conf |
/etc/apache2/sites-available/ + a2ensite |
| ドキュメントルート | /var/www/html |
/var/www/html |
| ログ | /var/log/httpd/ |
/var/log/apache2/ |
| 実行ユーザー | apache |
www-data |
sites-available/ に作った設定ファイルを a2ensite コマンドで sites-enabled/ にシンボリックリンクし、systemctl reload apache2 で反映する流れになります。ソースコードからApacheをインストールする
ここからはソースインストールの手順を扱います。下記は実際にApache 1.3.37をビルドした時の実機ログです。Apache 1.3系はすでにEOLですが、configure → make → make install の流れと出力の読み方は2.4系でもまったく同じなので、構造の理解として参考にしてください。現代の本番環境では、ソースインストールする場合もApache 2.4系の最新版(httpd.apache.org)を取得してください。
Apacheをインストールします。
[root@Tiger root]# cd /usr/local/src
[root@Tiger src]# wget http://japache.infoscience.co.jp/apache/dist/httpd/apache_1.3.37.tar.gz
--15:57:47-- http://japache.infoscience.co.jp/apache/dist/httpd/apache_1.3.37.tar.gz
=> `apache_1.3.37.tar.gz'
japache.infoscience.co.jp をDNSに問いあわせています... 202.126.225.188
japache.infoscience.co.jp[202.126.225.188]:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 2,665,370 [application/x-gzip]
100%[============================================================================>] 2,665,370 6.89K/s ETA 00:00
16:04:10 (6.82 KB/s) - `apache_1.3.37.tar.gz' を保存しました [2665370/2665370]
[root@Tiger src]# tar zxvf /usr/local/src/apache_1.3.37.tar.gz
apache_1.3.37/ABOUT_APACHE
apache_1.3.37/cgi-bin/
apache_1.3.37/cgi-bin/test-cgi
apache_1.3.37/cgi-bin/printenv
apache_1.3.37/conf/
apache_1.3.37/conf/httpd.conf-dist-win
apache_1.3.37/conf/httpd.conf-dist-nw
apache_1.3.37/conf/access.conf-dist
apache_1.3.37/conf/highperformance.conf-dist
apache_1.3.37/conf/srm.conf-dist
apache_1.3.37/conf/mime.types
apache_1.3.37/conf/magic
apache_1.3.37/conf/httpd.conf-dist
~中略~
apache_1.3.37/src/Configuration
apache_1.3.37/src/buildmark.c
apache_1.3.37/src/Apache.dsw
apache_1.3.37/src/INSTALL
apache_1.3.37/WARNING-WIN.TXT
[root@Tiger src]# cd /usr/local/src/apache_1.3.37
[root@Tiger apache_1.3.37]# ./configure --enable-module=so
Configuring for Apache, Version 1.3.37
+ using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
+ enabling mod_so for DSO support
Creating Makefile in src
+ configured for Linux platform
+ setting C compiler to gcc
+ setting C pre-processor to gcc -E
~中略~
Creating Makefile in src/os/unix
Creating Makefile in src/ap
Creating Makefile in src/main
Creating Makefile in src/lib/expat-lite
Creating Makefile in src/modules/standard
Creating Makefile in src/modules/proxy
[root@Tiger apache_1.3.37]# make
===> src
make[1]: ディレクトリ `/usr/local/src/apache_1.3.37' に入ります
make[2]: ディレクトリ `/usr/local/src/apache_1.3.37/src' に入ります
===> src/regex
~中略~
b/expat-lite `../apaci` checkgid.c
gcc -DLINUX=22 -DHAVE_SET_DUMPABLE -I/usr/include/gdbm -DUSE_HSREGEX -DUSE_EXPAT -I../lib/expat-lite `../apaci` -o chec
kgid -L../os/unix -L../ap checkgid.o -lm -lap -los -lm -lcrypt -lgdbm -ldl
make[2]: ディレクトリ `/usr/local/src/apache_1.3.37/src/support' から出ます
<=== src/support
make[1]: ディレクトリ `/usr/local/src/apache_1.3.37' から出ます
<=== src
[root@Tiger apache_1.3.37]# make install
make[1]: ディレクトリ `/usr/local/src/apache_1.3.37' に入ります
===> [mktree: Creating Apache installation tree]
./src/helpers/mkdir.sh /usr/local/apache/bin
mkdir /usr/local/apache
mkdir /usr/local/apache/bin
./src/helpers/mkdir.sh /usr/local/apache/bin
./src/helpers/mkdir.sh /usr/local/apache/libexec
~中略~
./src/helpers/install.sh -c -m 644 ./conf/magic /usr/local/apache/conf/magic
<=== [config]
make[1]: ディレクトリ `/usr/local/src/apache_1.3.37' から出ます
+--------------------------------------------------------+
| You now have successfully built and installed the |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the |
| (initially created or preserved) configuration files |
| |
| /usr/local/apache/conf/httpd.conf
| |
| and then you should be able to immediately fire up |
| Apache the first time by running: |
| |
| /usr/local/apache/bin/apachectl start
| |
| Thanks for using Apache. The Apache Group |
| http://www.apache.org/ |
+--------------------------------------------------------+
[root@Tiger apache_1.3.37]#
現代版(Apache 2.4系)のソースインストール手順
Apache 2.4系をソースから入れる場合は、依存パッケージ(APR、APR-util、PCRE2)を先に入れてからconfigureする流れになります。# 依存パッケージのインストール(RHEL9系の場合) [root@web01 ~]# dnf install -y gcc make pcre2-devel expat-devel openssl-devel # APRとAPR-utilの取得・ビルド [root@web01 src]# wget https://dlcdn.apache.org//apr/apr-1.7.5.tar.gz [root@web01 src]# wget https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz [root@web01 src]# tar xzf apr-1.7.5.tar.gz [root@web01 src]# tar xzf apr-util-1.6.3.tar.gz # Apache 2.4系のソース取得 [root@web01 src]# wget https://dlcdn.apache.org//httpd/httpd-2.4.62.tar.gz [root@web01 src]# tar xzf httpd-2.4.62.tar.gz [root@web01 src]# cd httpd-2.4.62 # APR/APR-utilをsrclibに配置 [root@web01 httpd-2.4.62]# mv ../apr-1.7.5 srclib/apr [root@web01 httpd-2.4.62]# mv ../apr-util-1.6.3 srclib/apr-util # configure(PREFIXは任意、共存させる場合は--prefixで分ける) [root@web01 httpd-2.4.62]# ./configure --prefix=/usr/local/apache2 \ --enable-so --enable-ssl --with-included-apr [root@web01 httpd-2.4.62]# make [root@web01 httpd-2.4.62]# make install # 起動 [root@web01 httpd-2.4.62]# /usr/local/apache2/bin/apachectl start
/etc/systemd/system/httpd-source.service といったunitファイルを別途用意する必要があります。Apacheインストール後の動作確認
Apacheが正常にHTTPリクエストを受けられているか、サーバー側でも確認しておきます。# Apacheのバージョン確認 [root@web01 ~]# httpd -v Server version: Apache/2.4.62 (Red Hat Enterprise Linux) Server built: Aug 14 2025 00:00:00 # Apacheが80番ポートでListenしているか確認 [root@web01 ~]# ss -tlnp | grep :80 LISTEN 0 511 *:80 *:* users:(("httpd",pid=12345,fd=4)) # 設定ファイルの構文チェック [root@web01 ~]# httpd -t Syntax OK # 読み込まれているモジュールの一覧 [root@web01 ~]# httpd -M | head Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_event_module (shared) authn_file_module (shared) authz_host_module (shared)
トラブルシュート・「httpd: Could not reliably determine the server's fully qualified domain name」が出る
Apache起動時にこの警告が出るのは、ServerName ディレクティブが未設定だからです。動作には影響しませんが、本番運用前にきちんと設定しましょう。# /etc/httpd/conf/httpd.conf に追記(RHEL9系の場合) ServerName www.example.com:80 # 構文チェック後、Apache再起動 [root@web01 ~]# httpd -t Syntax OK [root@web01 ~]# systemctl restart httpd
トラブルシュート・「Permission denied: AH00072: make_sock: could not bind to address [::]:80」
このエラーは、80番ポートが既に他のプロセス(nginxなど)に使われている場合、もしくはSELinuxで80以外の非標準ポートを許可していない場合に発生します。# 80番を使っているプロセスを特定 [root@web01 ~]# ss -tlnp | grep :80 LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=2345,fd=6)) # 非標準ポート(8080など)を使いたい場合はSELinuxへ追加 [root@web01 ~]# semanage port -a -t http_port_t -p tcp 8080
dnf install -y policycoreutils-python-utils でインストールしてください。本記事のまとめ
Apacheのインストールは、現代の本番環境では基本的にパッケージ管理(dnf / apt)を使うのが正解です。ソースインストールは「特定モジュール」「複数バージョン併存」「先行パッチ適用」のいずれかが必要な時の限定的な選択肢になります。| やりたいこと | コマンド |
|---|---|
| RHEL9系でApacheをインストール | dnf install -y httpd |
| Ubuntu系でApacheをインストール | apt install -y apache2 |
| サービスの起動(RHEL系) | systemctl start httpd |
| サービスの起動(Debian系) | systemctl start apache2 |
| OS起動時に自動起動 | systemctl enable httpd または systemctl enable apache2 |
| 80番ポートを開放(firewalld) | firewall-cmd --permanent --add-service=http |
| 80番ポートを開放(ufw) | sudo ufw allow 'Apache Full' |
| 設定の構文チェック | httpd -t |
| バージョン確認 | httpd -v または apache2 -v |
| 読み込みモジュール一覧 | httpd -M |
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:MySQLのrootパスワードを忘れた場合の対処について
- この記事の属するカテゴリ:Apache・Linuxtips・Webサーバー管理・サーバー管理へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます