【連載第2回】Webサーバー「Apache」を構築しよう!世界中からアクセスできる仕組み作り
未経験からWebアプリ開発を目指す「AlmaLinux 9とLAMP環境で作る!Webアプリ開発完全ロードマップ(全12回)」の第2回です。
前回は、真っさらなVPSを契約し、黒い画面(SSH)で接続するところまで完了しました。
しかし、今のままでは、ブラウザでIPアドレスを入力しても「接続できません」というエラーが出るだけです。
今回は、サーバー構築の主役であるWebサーバーソフト「Apache(アパッチ)」をインストールし、あなたのサーバーを「インターネット越しに見られる状態」に進化させます。
先生!前回の宿題(dnf update)、ちゃんと終わらせてきました!
今日はいよいよホームページが見られるようになるんですね?
えらいわね、コウ君。
そうよ。今日は「黒い画面」で行った操作が、初めて「目に見える形」になる一番楽しい回よ。
でも、ここには初心者が必ずハマる「ファイアウォールの罠」があるから、慎重に進めていきましょう。
本講座のカリキュラム(全12回)
現在地は第2回です。
- サーバー準備編:なぜVPSが必要?AlmaLinux 9の初期設定とSSH接続
- 【今回】Webサーバー編:Apache(httpd)のインストールとファイアウォール設定
- データベース編:MariaDB(MySQL)のインストールとセキュリティ設定
- プログラミング言語編:PHP 8.xの導入と設定ファイルのチューニング
- 権限・パーミッション編:LinuxでWebサイトを公開するための「所有者」の概念
- 接続テスト編:PHPからデータベース(DB)に接続してみよう
- アプリ開発①:HTML/CSSで掲示板の「見た目」を作る
- アプリ開発③:投稿機能(Create)の実装とデータの保存
- アプリ開発③:一覧表示機能(Read)と画像表示の仕組み
- アプリ開発④:編集・削除機能(Update/Delete)の実装
- セキュリティ編:XSSやSQLインジェクション対策の基礎
- 公開編:独自ドメイン設定と無料SSL(Let’s Encrypt)でHTTPS化
Webサーバー「Apache」とは?
作業を始める前に、今回インストールするソフトについて理解しておきましょう。
Apache HTTP Server(アパッチ)は、世界中で最も歴史があり、信頼されているWebサーバーソフトウェアの一つです。
Linuxの世界では、パッケージ名が httpd (HyperText Transfer Protocol Daemon)となっていることが多いので注意してください。
Webサーバーの役割
あなたのスマホ(ブラウザ)とサーバーは、以下のような会話をしています。
- スマホ: 「ねえ、このURLのページを見せて!(リクエスト)」
- サーバー: 「OK、ファイルを探して送るね。(レスポンス)」
この「リクエストを受け取って、ファイルを返却する係」がWebサーバーソフト(Apache)です。
これが入っていないサーバーは、ただの「データの倉庫」であり、外からは中身を見ることができません。
手順1:Apacheをインストールする
それではSSHでVPSに接続し、以下のコマンドを実行しましょう。
(※前回同様、コピペではなく手で入力すると覚えが早いですよ!)
dnf install httpd -y
Complete! と表示されればインストール完了です。
拍子抜けするほど簡単ですね。
手順2:Apacheを起動し、自動起動設定をする
インストールできたので、もうブラウザで見れますか?
まだよ。
Linuxでは、ソフトをインストールしただけでは「電源OFF(停止中)」の状態なの。
「起動(start)」と、サーバーが再起動しても勝手に立ち上がる「自動起動(enable)」の2つをやる必要があるわ。
起動と自動起動のコマンド
以下の2行を順番に実行してください。
systemctl start httpd systemctl enable httpd
コマンド解説:
systemctl start httpd: 今すぐApacheを起動します。systemctl enable httpd: サーバーを再起動したときに、Apacheも自動で立ち上がるように設定します(これをしておかないと、メンテなどで再起動した後にWebサイトが消えます)。
正しく動いているか、状態を確認してみましょう。
systemctl status httpd
緑色の文字で Active: active (running) と表示されていれば成功です。
(確認画面から出るには、キーボードの q を押してください)
手順3:ファイアウォール(firewalld)の設定
さて、ここが最大の難関です。
実は、Apacheを起動しただけでは、まだ外部(あなたのPCやスマホ)からはアクセスできません。
えっ?なんでですか?
ソフトは動いてるのに?
Linuxには「ファイアウォール」という強力な壁があるからよ。
初期状態では、セキュリティのために「SSH(22番)」以外のすべての穴が塞がれているの。
Webサイトを見るための「HTTP(80番)」という穴を開けてあげる必要があるわ。
Webアクセス(http/https)を許可する
AlmaLinuxでは firewall-cmd というコマンドを使います。
以下のコマンドを入力してください。
firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload
コマンド解説:
--add-service=http: Web通信(HTTP)を通す許可を与えます。--permanent: 永続化(再起動しても設定を忘れないようにする)オプションです。--reload: 設定を変更したら、必ずリロードして反映させる必要があります。
success と表示されれば、壁に穴が空きました!
手順4:ブラウザでアクセスしてみよう!
お疲れ様でした。いよいよ確認の時間です。
ChromeやEdgeなどのブラウザを開き、アドレスバーにあなたのVPSのIPアドレスを入力してEnterを押してください。
(例: http://123.456.78.90 )
以下のような画面が表示されましたか?
AlmaLinux Test Page
This page is used to test the proper operation of the HTTP server…
出ましたーー!!
これ、僕のサーバーが表示されてるってことですよね?
なんか感動です!
おめでとう!
これであなたのVPSは、世界中どこからでもアクセスできる「Webサーバー」になったわ。
もし表示されない場合は、IPアドレスが間違っていないか、さっきのファイアウォールの設定(reloadしたか?)を見直してみてね。
おまけ:自分の書いた文字を表示させてみよう
テストページだけじゃ味気ないので、自分で書いたHTMLファイルを表示させてみましょう。
Apacheは、/var/www/html/ という場所にあるファイルを表示するルールになっています。
以下のコマンドをコピペして実行してみてください。
echo "<h1>Hello World! This is my server!</h1>" > /var/www/html/index.html
これは、index.html というファイルを新しく作り、その中に「Hello World…」という文字を書き込むコマンドです。
ブラウザを「再読み込み(リロード)」してみてください。
画面の文字が変わっていれば大成功です!
次回予告:データベース(MariaDB)を作ろう
今回は、Webサーバー(Apache)を構築し、静的なページを表示できるようにしました。
しかし、Instagramのような投稿サイトを作るには、投稿された写真や文章を保存しておく「データベース」が必要です。
次回は、LAMPの「M」にあたる「MariaDB(マリア・ディー・ビー)」のインストールと設定を行います。
MySQLと何が違うの?という点も解説しますのでお楽しみに。
まだVPSを契約していない人は、ここまでは数分で追いつけるから、今のうちに用意しておいてね。
次回から少しずつコマンドが複雑になっていくから、置いていかれないように!
▼この講座で使用している推奨VPS


コメント