AlmaLinuxにApacheを入れてWebページを表示する|LinuxとWindowsから動作確認
AlmaLinux 9にApacheを導入し、自作ページをWindowsから表示します。Linuxでの動作確認、firewalldの設定、8080→80のポート転送を順に確認し、HTTPステータスコード200と自作ページの本文で成功を確かめます。
学習ガイドの目次 第4回 / 全4回
目的別ガイド
WindowsからLinux上の自作ページを取得し、HTTPステータスコード200と本文を確認できる。
前提:第3回「WindowsからSSHで接続」までの設定が済んでいること。
この記事の目次
作るものと、成功の確認方法を決める
LinuxにApache HTTP Serverを入れ、Linux Lab is working.と表示するページを作ります。Apacheは、ブラウザーからのHTTPリクエスト(ページ取得などの要求)に応答し、ファイルの内容などを返すソフトウェアです。AlmaLinuxではパッケージ名とサービス名に httpd を使います。
最初にLinux自身から応答を調べ、次にWindowsから調べます。この順番なら、Webサーバーと接続経路のどちらに問題があるか絞り込めます。HTTPステータスコードは、サーバーが処理結果を知らせる番号です。200(正常)と、作成したページの本文の両方を確認できれば成功です。
Windowsの8080番ポートから、Linuxの80番ポートへ転送する
仮想マシンが起動中なら、まずSSH接続後のLinuxでシャットダウンします。第3回でログアウト済みなら、WindowsでSSH接続し直してから実行してください。既に電源オフなら、この停止操作は不要です。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl poweroffSSH接続が閉じ、VirtualBoxマネージャーで「電源オフ」になったら、仮想マシンの「設定 → ネットワーク → アダプター1(NAT)→ ポートフォワーディング」を開きます。第3回のsshルールを残し、次を追加します。
| 項目 | 設定値 |
|---|---|
| 名前 | http |
| プロトコル | TCP |
| ホストIP | 127.0.0.1 |
| ホストポート | 8080 |
| ゲストIP | 空欄(DHCPを使用) |
| ゲストポート | 80 |
同じルールがあれば、重複追加せず内容を確認します。Windowsの127.0.0.1:8080への接続を、VirtualBoxがLinuxのTCP 80番ポートへ転送します。Apacheは標準の80番ポートで接続を受け付けます。
設定を保存して仮想マシンを起動します。VirtualBoxで開いたLinuxの画面にログイン画面が出るまで待ち、WindowsからSSH接続します。
- 実行場所
- Windows(PowerShell)
- アカウント
- 現在のWindowsユーザー
- 権限
- 通常
ssh -p 2222 labuser@127.0.0.1Linux側でApacheをインストールして起動する
ここからはSSH接続後のLinuxで操作します。ユーザー、ホスト名、SELinuxの状態を確認しましょう。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
whoami
hostname
getenforcelabuser linux-lab Enforcing
Enforcingは、SELinuxによるアクセス制御が有効な状態です。このまま進めます。別の状態なら第2回の環境設定を確認してください。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
rpm -q httpdhttpdのバージョンが出れば導入済みです。is not installed と出た場合だけ次を実行し、インストール内容を確認して y と入力します。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo dnf install httpd- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl enable --now httpd- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
systemctl is-active httpdactive
インストールはソフトウェアを配置すること、起動はそのソフトウェアを動かすことです。enable --now は、今すぐApacheを起動し、次にLinuxを起動したときも自動で動くように設定します。
自分で作ったページを置く
標準設定では /var/www/html/ がWebページの配置先です。ここに index.html を作ります。既に同名ファイルを置いている場合は、その内容を保存してから進めてください。次の操作はそのファイルを上書きします。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo tee /var/www/html/index.html <<'EOF'
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Linux Lab</title>
</head>
<body>
<h1>Linux Lab is working.</h1>
</body>
</html>
EOFteeは受け取った内容をファイルと画面へ書き出します。ブロック全体を貼り付け、最後の行が EOF になっていることを確認して、Enterを押してください。途中で > が表示された場合は、続きの入力を待っています。同じHTMLが画面にも表示されます。エラーが出ず、コマンドの入力待ちに戻ったことを確認します。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo chmod 0644 /var/www/html/index.html
sudo restorecon -v /var/www/html/index.html0644では所有者が読み書きでき、ほかのユーザーは読み取りができます。SELinuxラベルは、ファイルの種類などを示し、アクセスを許可するかの判断に使われる情報です。restorecon で、このファイルの配置先に定められた標準のラベルを設定します。既に正しければ、何も表示されないことがあります。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- 通常
- 作業ディレクトリ
- ~
curl -i --noproxy 127.0.0.1 http://127.0.0.1/HTTP/1.1 200 OK … <h1>Linux Lab is working.</h1>
-i は、HTTPステータスコードや応答ヘッダーを本文と一緒に表示する指定です。--noproxy を付けると、このアドレスへの接続ではプロキシサーバーを経由しません。ここでの127.0.0.1はLinux自身を表します。HTTPのURLでポート番号を省略すると、80番ポートに接続します。
LinuxのファイアウォールでHTTPを許可する
続いて、WindowsからLinuxへのHTTP接続を許可します。第3回と同じように、ネットワークインターフェースに適用されているfirewalldのゾーンを調べます。ゾーンは、許可する通信などをまとめた設定です。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo firewall-cmd --get-active-zonespublic interfaces: enp0s3
この例では、enp0s3 というインターフェースに public ゾーンが適用されています。表示されたゾーン名が異なる場合は、以下の各コマンドの public をその名前に置き換えます。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo firewall-cmd --zone=public --query-service=http
sudo firewall-cmd --permanent --zone=public --query-service=http1行目は現在有効な設定、--permanent を付けた2行目は再起動後も使う永続設定を調べます。両方 yes ならHTTPは許可されています。どちらかが no なら次を実行し、永続設定の変更を現在の動作にも反映します。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --reload上の確認コマンドを再実行し、両方 yes になることを確かめます。firewalldの http というサービス定義は、Linux側のTCP 80番ポートへの接続を許可するために使います。
WindowsのブラウザーとPowerShellから確認する
Windowsのブラウザーを開き、アドレス欄へ次を入力します。検索欄ではなくアドレス欄に、http://から入力してください。
http://127.0.0.1:8080/
Linux Lab is working.が表示されたら、次にHTTPステータスコードも確認します。SSH接続中のタブはLinuxの操作画面なので、WindowsのPowerShellを別ウィンドウまたは新しいタブで開きます。
- 実行場所
- Windows(PowerShell)
- アカウント
- 現在のWindowsユーザー
- 権限
- 通常
curl.exe -i --noproxy 127.0.0.1 http://127.0.0.1:8080/HTTP/1.1 200 OK … <h1>Linux Lab is working.</h1>
Windows PowerShell 5.1では、curl が Invoke-WebRequest の別名(エイリアス)として登録されています。curl.exe と指定すると、Windowsに含まれるcurlプログラムを実行できます。Microsoft公式の説明
| 確認した場所 | 接続先の意味 |
|---|---|
Linuxで 127.0.0.1:80 | Linux自身のApacheへ接続 |
Windowsで 127.0.0.1:8080 | Windowsの127.0.0.1:8080への接続を、VirtualBoxがLinuxの80番ポートへ転送 |
127.0.0.1は、コマンドやブラウザーを実行しているコンピューター自身を表します。Windowsから確認するときは、ポート転送に設定した :8080 までURLに含めます。
表示できないときは、Linuxでの確認結果から原因を絞る
| 確認結果 | 次に調べること |
|---|---|
| Linuxで実行したcurlも失敗 | httpd が active かを確認します。起動していなければ、下のコマンドでログを読みます。 |
| Linuxでは200、Windowsからの接続だけ失敗 | HTTPのポート転送が127.0.0.1・8080→80か、対象の仮想マシンが正しいかを確認します。firewalldでは、その通信に適用されるゾーンで http が許可されているか調べます。 |
| 403やテストページが返る | index.html の配置先・内容・読み取り権限・SELinuxラベルを確認します。Apacheが、作成したファイルを読み取れる必要があります。 |
| 別のページが返る | Windowsの8080番ポートを別のソフトウェアや仮想マシンが使用していないか、ポート転送の接続先が正しいかを確認します。 |
| ブラウザーがHTTPSに変える | この回の接続先は http://127.0.0.1:8080/ です。まずcurl.exeで応答を確認します。 |
Linux側のエラーは、サービスのログとApacheのエラーログを確認します。firewalldとSELinuxを有効にしたまま、ログを手がかりに問題のある箇所を調べます。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo journalctl -u httpd -n 20 --no-pager
sudo tail -n 20 /var/log/httpd/error_logLinuxで curl: command not found と出た場合は sudo dnf install curl-minimal で確認用ツールを導入できます。ログが長い場合は、末尾のエラーメッセージから、直前に行った操作に関係するものを探します。
止める・再開するまで試して完成
Apacheだけを止めると、LinuxやSSHは動いたまま、HTTP接続を受け付けなくなります。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl stop httpdWindows側で先ほどの curl.exe を再実行し、接続が失敗することを確かめます。ブラウザーは以前の表示を残すことがあるため、この確認には curl.exe を使います。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl start httpdWindowsで同じ確認コマンドを実行し、再び 200 OK と作成した本文が返れば再開できています。stopは今動いているサービスを止める操作で、自動起動の設定は残ります。
- Linuxからの確認で200 OKと作成したページの本文が返る
- Windowsからの確認でも200 OKと同じ本文が返る
- 127.0.0.1が指すコンピューターの違いを説明できる
- Apacheを停止し、再開できた
実習を終えるときは、Linuxで仮想マシンをシャットダウンします。正常に停止してもインストールしたソフトウェアやファイルは仮想ディスクに残ります。
- 実行場所
- Linux(SSHで接続中)
- アカウント
- labuser
- 権限
- sudo
- 作業ディレクトリ
- ~
sudo systemctl poweroff次回はVirtualBoxで仮想マシンを起動し、WindowsからSSH接続します。自動起動を設定した httpd が起動したら、Windowsのブラウザーでも同じURLを開いて確認できます。
できたことを確認
- Linux内でHTTP 200とLinux Lab is working.を確認できる
- Windowsの127.0.0.1:8080でも同じ応答を確認できる
- Apacheを停止・再開し、応答の変化を確認できる
参考資料・対象環境
- RHEL 9:Setting up the Apache HTTP web server
- RHEL 9:Configuring firewalls and packet filters
- Oracle VirtualBox 7.2 User Guide:Virtual Networking
- Microsoft Learn:Windowsでのcurl
この教材の対象と確認状況
Windows 11(Intel / AMDの64bit PC)、VirtualBox 7.2系、AlmaLinux 9系を対象にしています。2026年11月8日時点の公式資料を確認して作成しています。画面名はバージョンや表示言語で異なる場合があります。
掲載した出力は読み方を示す表示例です。この版はWindows実機で全手順を通した動作確認は未実施です。研修で使用する前に、ご利用のPC環境で事前確認をお願いします。
AZWorkが独自に構成した実習ガイドです。体系的に学ぶ参考資料として、LPI-JapanのLinuxサーバー構築標準教科書もご覧ください。