Linuxで初めてWebサーバーを公開した日の話|現役講師が語るApacheが動いた瞬間の衝撃と3つの教訓

HOMEリナックスマスター.JP 公式ブログLinux学習ガイド > Linuxで初めてWebサーバーを公開した日の話|現役講師が語るApacheが動いた瞬間の衝撃と3つの教訓
宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「Webサーバーを公開してみたいけど、外からアクセスできるのか不安だ」——Apacheの設定ファイルと格闘しながら、そんな気持ちを抱えていたあの頃のことを今でも鮮明に覚えています。

SE2年目の春、社内の開発環境用Webサーバーを任された私は、Red Hat LinuxにApacheをインストールして外部公開するという、初めての「サーバーを世界に繋げる」体験に直面しました。教科書には手順が書いてある。でも実際に外からアクセスできた瞬間がどんな感覚なのか、まだ知りませんでした。

この記事では、その体験をもとに、20年以上Linuxサーバーを運用・指導してきた経験から、「Webサーバーを初めて公開した日」が教えてくれた3つのことを正直にお伝えします。

この記事のポイント

・SE時代にApacheで初めてWebサーバーを公開した実体験を紹介
・翌朝のアクセスログに残っていた「見知らぬIPのスキャン」が衝撃だった理由
・セキュリティ確認は公開「後」ではなく「前」に行うべき鉄則
・「動かす」から「運用する」への意識の転換が現場で通用する力を育てる


Linuxで初めてWebサーバーを公開した日の話|現役講師が語るApacheが動いた瞬間の衝撃と3つの教訓
「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

「サーバーを立てる」という感覚が掴めなかった頃

最初の就職先は、ネットワーク機器メーカーの関連会社でした。Linuxサーバーの保守・運用が主な仕事でしたが、入社してしばらくは既存サーバーの監視やメンテナンスが中心で、ゼロからWebサーバーを構築して外部公開するという経験はありませんでした。

「Webサーバーを立てる」という作業に対して、漠然とした壁を感じていたのです。コマンドを打てば動くらしい。設定ファイルを書けばいい。でも「外からアクセスできる状態」とはどういうことなのか、頭では理解しているつもりでも、本当のところはよくわかっていませんでした。

セミナーで3,100名以上を指導してきた中で、この「概念は知っているけれど動かしたことがない」という状態の受講生をたくさん見てきました。知識があっても「繋がった瞬間」を実際に体験しないと、本当の意味での理解には繋がらないのです。

初めてWebサーバーを公開した日

入社2年目の春、社内の開発環境用Webサーバーを担当する機会がもらえました。Red Hat Linux(カーネル2.4系の時代です)で動くサーバーにApacheをインストールして、設定を確認してから外部に公開するという作業です。

1. ローカルで動作確認するまで

まずApacheをrpmでインストールし、/etc/httpd/conf/httpd.conf(Apacheの主要設定ファイル)の内容を確認してからサービスを起動しました。ポート番号がデフォルトの80番になっているか、ServerNameが正しく設定されているかを確認する、基本の手順です。

# Apacheのインストール確認 # rpm -qa でパッケージが入っているかチェック $ rpm -qa | grep httpd httpd-2.0.46-32 # Apacheサービスの起動 $ service httpd start Starting httpd: [ OK ] # ローカルホストでアクセス確認 $ curl http://localhost/

It works!

ローカルで「It works!」の文字が確認できた時、「よし、動いた」と思いました。でもこれはまだサーバー自身でのみ確認できた状態です。外から見えるかどうかは、ここからが本番でした。

2. 外部からアクセスできた瞬間

ポートが正しく開いているかをnetstatコマンドで確認し、ルーターのポートフォワード設定を調整しました。そして社外の自分のPCからサーバーのグローバルIPアドレスを入力して、Enterを押した瞬間。

「It works!」の画面が表示されました。

言葉では伝えにくいのですが、その感覚は今でも忘れられません。「自分が設定したこのサーバーが、インターネット越しに実際にアクセスできる」という事実が、じわじわと現実として込み上げてきました。コマンドを打ち続けた数時間が、その一瞬で報われた気がしました。

3. 翌朝のアクセスログに衝撃を受けた

問題は翌朝でした。確認のためにアクセスログを開いてみると、自分以外のアクセスが複数記録されていたのです。

# アクセスログを確認(/var/log/httpd/access_log) $ tail -20 /var/log/httpd/access_log 192.168.10.5 - - [15/Apr/2003 08:32:11 +0900] "GET / HTTP/1.1" 200 1024 198.51.100.23 - - [15/Apr/2003 03:14:07 +0900] "GET / HTTP/1.1" 200 1024 198.51.100.23 - - [15/Apr/2003 03:14:08 +0900] "GET /admin/ HTTP/1.1" 404 217 198.51.100.23 - - [15/Apr/2003 03:14:09 +0900] "GET /phpmyadmin/ HTTP/1.1" 404 217 198.51.100.23 - - [15/Apr/2003 03:14:10 +0900] "GET /cgi-bin/test.cgi HTTP/1.1" 404 217 198.51.100.24 - - [15/Apr/2003 04:01:33 +0900] "GET /.env HTTP/1.1" 404 208

自分が設定したサーバーに、見覚えのないIPアドレスから深夜に連続したアクセスが記録されていました。/admin/や/phpmyadmin/へのアクセス試行がずらりと並んでいる。これがいわゆるスキャン(脆弱なパスを自動的に探索する、不正アクセスの前段階)のアクセスです。「公開するというのはこういうことだったのか」と背筋が寒くなった瞬間でした。

あの経験が教えてくれた3つのこと

初めてWebサーバーを公開したあの日から20年以上が経ちます。振り返ると、あの経験で学んだことはコマンドの使い方だけではありませんでした。

1. アクセスログは「サーバーが生きている証拠」

Webサーバーを公開して初めて、アクセスログが「読むべきもの」になりました。

ローカル環境で作業している間、ログはどこか「後から見るもの」という感覚でした。でも公開した瞬間から、ログは「今サーバーに何が起きているか」を教えてくれるリアルタイムの情報源になります。

正常なアクセスと不審なアクセスの区別は、ログを読み続けることで初めてできるようになります。Apacheのタイムアウト設定を含め、サーバーの各種設定が「なぜ必要か」を理解するうえでも、実際のログを見た経験は大きな助けになりました。

20年以上サーバーを運用してきた経験から言うと、定期的にアクセスログを確認する習慣を持っているエンジニアとそうでないエンジニアでは、障害対応の速さに明確な差があります。

2. セキュリティは公開「前」に考えるべきだった

翌朝のアクセスログを見た時、真っ先に後悔したのが「公開前にセキュリティの確認をきちんとしなかった」という点でした。

・不要なモジュールは無効化してあるか
・デフォルトのエラーページが詳細なサーバー情報を返していないか
・ディレクトリリスティングは無効になっているか
・ファイアウォールで必要なポートだけを開けているか

これらを「公開してから確認した」というのは、順序が逆です。インターネットに向けてサーバーを公開した瞬間から、スキャンのアクセスは始まります。「動いた、よし公開しよう」ではなく、「公開する前にセキュリティを確認する」というステップを習慣化することが鉄則です。実務ではこの順序を守るかどうかが、後の運用の安全性に直結します。

3. 「動かす」から「運用する」への意識の転換

「It works!」が表示された瞬間は確かに感動でした。でも、それは「スタートライン」でしかありませんでした。

サーバーを「動かす」ことと「運用する」ことは、似て非なるものです。

・動かす:インストール・設定・起動確認
・運用する:ログ監視・バックアップ・セキュリティ対応・パフォーマンス確認・障害対応

Webサーバーを公開してから24時間が経つと、ログには大量の情報が積み重なります。「このサーバーを正常な状態に保つためには何をすればいいか」という視点が、自然と育ってくるのです。

私がセミナーで受講生によく伝えるのは、「Linuxを学ぶなら、動かすだけで終わらせないでほしい」ということです。ローカルで動いたら、次は外に公開してみる。公開したら、ログを1週間読み続けてみる。その繰り返しが、教科書には書いていない「現場の感覚」を育てます。

「It works!」が表示されない場合の確認ポイント

初めてApacheを公開しようとして、「外から見えない」と詰まることがあります。私の現場でよく見かけるのが、次の3点です。

# 1. Apacheが80番ポートでListenしているか確認 $ netstat -tlnp | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/httpd # ポートが表示されない場合はApacheが起動していない可能性あり $ service httpd status httpd (pid 1234) is running... # 2. ファイアウォールで80番ポートが開いているか確認(iptables) $ iptables -L INPUT -n | grep 80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 # 3. Apacheのエラーログで原因を確認 $ tail -20 /var/log/httpd/error_log

「外から見えない」場合の原因の大半は、Apacheが起動していないか、ファイアウォールが80番ポートをブロックしているか、ルーターのポートフォワード設定が抜けているかのいずれかです。エラーログを必ず確認することが、原因特定への近道です。

まとめ

体験・気づき 学んだこと
「It works!」が外から表示された瞬間 「概念が現実になる」体験がエンジニアの自信の基盤になる
翌朝のスキャンアクセスを発見 アクセスログは公開した瞬間から「読むべきもの」になる
セキュリティ確認を後回しにしていた後悔 公開前のセキュリティ確認が本番運用の鉄則
「動いた」から「運用する」への意識の変化 ログ・監視・障害対応が現場で通用する力を育てる

Webサーバーを「動かす」だけで終わらない、現場の力を体系的に身につけませんか?

アクセスログを読む習慣、セキュリティの基本確認、「運用する」ための視点——これらは経験の積み重ねで身につきます。でも、体系的な基礎があれば最短で到達できます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。


Linux無料マニュアル(図解60P) 名前とメールで30秒登録