Webサーバの導入(nginx / Apache httpd)
代表的なWebサーバは nginx と Apache httpd の2つです。どちらも dnf install で導入でき、systemctl で起動・自動起動を設定します。導入直後はテストページが表示され、ブラウザや curl で http://localhost にアクセスして応答を確認します。1台に両方入れると 80番ポートを取り合うため、通常はどちらか一方を有効にします。
Webサイトをブラウザで見られるのは、ブラウザがどこかのWebサーバに接続し、HTMLや画像といったデータを受け取って表示しているからです。スマートフォンのアプリの多くも、裏では同じ仕組みでサーバからデータを取得しています。この「要求に応えてWebのデータを返す」役割を担うのがWebサーバソフトウェアで、HTTPというプロトコルを扱うことからHTTPサーバとも呼ばれます。Linuxはこのサーバ用途で広く使われており、世界のWebサーバの大半がLinuxを含むUNIX系OSの上で動いています。Webサーバを立てるという作業は、サービスとしてのHTTPサーバを導入し、起動し、自動起動を設定し、ブラウザから応答が返ることを確かめる、という流れで進みます。
代表的な2つ — nginx と Apache httpd
Linuxで使われるWebサーバの代表が Apache httpd と nginx の2つです。Apache はインターネット初期から使われ、設定例やノウハウがネット上に豊富で、ほかのWebサーバの設定も Apache を参考にしていることが多いため、最初に学ぶ対象として適しています。RHEL系では httpd というパッケージ名で提供されます。一方の nginx は後発ながら、大量の同時アクセスに強く設定がシンプルなことから急速にシェアを伸ばし、いまでは Apache と拮抗しています。実務では、nginx を前面に立てて静的ファイルを高速に返したり、後段のアプリへ振り分ける「リバースプロキシ」として使う構成も非常に多く見られます。どちらを選んでもサービスとしての扱い方は共通で、systemd で起動・停止・自動起動を設定します。
dnf で導入する
RHEL/MiracleLinux系ではソフトウェアの導入にパッケージマネージャ dnf を使います。Apache なら sudo dnf install httpd、nginx なら sudo dnf install nginx と実行します。導入はシステム全体に影響するため管理者権限が必要で、一般ユーザでは sudo を付けます。実行すると依存パッケージも含めて「これらをインストールします。よろしいですか? [y/N]」と確認が出るので、内容を見て y で承認します。最後に「完了しました!」と出ればインストール成功です。確認を省いて自動で進めたいときは -y オプションを付けられますが、何が入るかを把握しないまま多用するのは避け、慣れるうちは内訳を一度目で確かめる癖をつけると安全です。すでに入っているかどうかは、Apache なら dnf list --installed | grep httpd や httpd -version、nginx なら nginx -v で確認できます。バージョン文字列が表示されれば導入済み、「コマンドが見つかりません」と出れば未導入です。なお、dnf は依存関係を自動で解決し、本体が必要とするライブラリやツールもまとめて導入してくれるため、手で個別のファイルを集める必要はありません。
起動と自動起動、応答の確認
導入しただけではまだサービスは動いていません。systemctl で起動と自動起動を設定します。Apache なら sudo systemctl enable --now httpd、nginx なら sudo systemctl enable --now nginx とすれば、自動起動の設定(enable)と即時起動(start)をまとめて行えます。起動できたかは systemctl status httpd(または nginx)の Active: の行で確かめ、active (running) なら成功です。次に、サービスが本当に応答するかを確認します。導入直後はどちらもテストページが用意されているので、サーバ自身から curl http://localhost を実行するか、ブラウザで localhost を開きます。このテストページは、公開ファイルの置き場であるドキュメントルートにまだ自分のコンテンツ(index.html)を置いていないために表示される初期画面です。HTTPの応答ヘッダや、Apache なら「Test Page」と書かれたページ、nginx なら「Welcome to nginx!」が返ってくれば、HTTPサーバは正しく動いています。
80番ポートの取り合いに注意
ここで重要な制約があります。HTTPは既定で80番ポートを使いますが、1つのポートを同時に2つのサービスが占有することはできません。そのため Apache と nginx を1台のサーバで両方とも起動しようとすると、後から起動したほうが「アドレスはすでに使用中(Address already in use)」というエラーで起動に失敗します。このエラーは systemctl status や journalctl のログにそのまま出るので、両方入れて片方が上がらないときは、まずポートの競合を疑います。学習で片方を試したあとにもう片方を入れる場合は、先に動いているほうを sudo systemctl disable --now httpd のように停止・自動起動解除してから、もう一方を起動するのが基本です。通常はどちらか一方だけを有効にして運用し、両方を共存させたい高度な構成では、nginx を前面に置いて後段の Apache へ振り分けるなど、ポートを分けた設計にします。
よくある失敗と実務の使いどころ
導入直後によくあるのは、サーバ自身(localhost)からは見えるのに、別の端末のブラウザからは表示できないという状況です。これはほぼ確実にファイアウォールが原因で、HTTP通信を許可していないために外部からの接続が遮断されています。この解決は次の段階で扱う firewall-cmd によるポート開放です。ほかには、enable を忘れて再起動後にサーバが上がってこない、80番ポートの競合に気づかず両方起動して失敗する、といったつまずきがあります。実務では、まず dnf で導入し、enable --now で起動と自動起動をそろえ、curl http://localhost で手元の応答を確かめ、続いてファイアウォールを開けて外部からの到達を確認する——この順番で一段ずつ切り分けると、どこで止まっているかを見失わずに済みます。