【Ubuntu講座最終回】モダンなエンジニアへの進化。Apacheを卒業する日
世界シェアNo.1のLinux OS「Ubuntu(ウブントゥ)」をマスターする短期集中連載、ついに最終回です。
第1回ではUbuntuの概要とVPS構築、第2回ではAPTコマンドによるパッケージ管理を学びました。
ここまでの知識で、あなたはすでに「普通のLinuxサーバー」を構築・管理できる能力を持っています。
しかし、今回の第3回はレベルが違います。
これまでのLAMP環境(Apache)の知識を一旦横に置き、現代のWeb開発やAI開発の現場で「事実上の標準(デファクトスタンダード)」となっている2つの技術を導入します。
- Nginx(エンジンエックス): Apacheよりも高速で、大量のアクセスをさばけるWebサーバー。
- Docker(ドッカー): 環境構築の常識を覆した「コンテナ」技術。
これらを使いこなせるようになれば、あなたはもう「サーバー初心者」ではありません。
最先端の現場で戦える「モダンなインフラエンジニア」への第一歩を踏み出しましょう。
先生!ついに来ましたね「Docker」!
ネットの記事を見ても「クジラのマーク」が出てくるだけで、何がすごいのか全然わからなかったんです。
あと、ApacheじゃなくてNginxにする理由ってあるんですか?Apacheで十分な気がするんですけど…。
いい疑問ね。
確かに個人サイトならApacheで十分かもしれないわ。
でも、もしコウ君の掲示板が大ヒットして、1秒間に1万人がアクセスしてきたらどうする?
Apacheだとパンクしてしまうその状況を、涼しい顔でさばけるのがNginxなの。
今日はその「速さの秘密」から解説していくわよ。
本講座のカリキュラム(全3回)
現在地は第3回(最終回)です。
- Ubuntu入門編:RHEL系との決定的な違い、ライセンス、そしてVPSでの構築
- 基本操作編:さよならyum/dnf!「APT」コマンドとUbuntu流の流儀をマスターする
- 【今回】実践活用編:Webサーバー(Nginx)の構築と、Docker/AI開発への応用
Apache vs Nginx:なぜ乗り換えるのか?
Webサーバーソフトには、長らくの王者「Apache(アパッチ)」と、新世代の挑戦者「Nginx(エンジンエックス)」がいます。
(※現在はNginxがシェアNo.1になりつつあります)
決定的な違い:処理の仕方
これを理解するには、レストランのウェイターさんを想像してください。
- Apache(プロセス駆動):
お客様1人につき、専属のウェイターが1人つきます。
注文を聞き、料理を運び、食べ終わるまでずっと横で待機しています。
丁寧ですが、お客様が100人来たらウェイターも100人必要になり、お店(メモリ)がパンクします。
これを「C10k問題(クライアント1万台問題)」と呼びます。 - Nginx(イベント駆動):
1人のスーパーウェイターが、全てのお客様を対応します。
「注文聞いた!次!」「料理できた!運ぶ!次!」と、待機時間を作らずに高速で動き回ります。
少ない人数(メモリ)で、大量のお客様(アクセス)をさばくことができます。
静的な画像を表示したり、大量の同時アクセスをさばくにはNginxが圧倒的に有利です。
一方で、PHPなどの複雑な処理をサーバー内で行うにはApacheの方が設定が楽、という側面もあります。
しかし、現代のWeb開発では「Nginx」を採用するのが主流です。
実践1:UbuntuにNginxをインストールする
それではVPSにSSH接続し、Nginxを導入しましょう。
前回学んだ apt コマンドを使えば一瞬です。
sudo apt update sudo apt install nginx -y
インストールが終わったら、起動確認をします。
systemctl status nginx
緑色の文字で active (running) と出ていれば成功です。
(q キーを押して元の画面に戻ります)
Ubuntu流ファイアウォール「UFW」の設定
ここで注意点です。RHEL系では firewalld を使いましたが、Ubuntuにはもっとシンプルな ufw (Uncomplicated Firewall) というツールが標準で入っています。
Webサーバーの通信(80番ポートなど)を許可するには、以下のコマンドを打ちます。
sudo ufw allow 'Nginx Full'
これで、HTTP(80)とHTTPS(443)の両方が開放されました。
ブラウザでVPSのIPアドレスにアクセスしてみてください。
「Welcome to nginx!」 というシンプルな画面が出れば、インストール完了です!
設定ファイルの罠:sites-available / sites-enabled
Ubuntu版Nginxの最大の特徴は、設定ファイルの管理方法です。/etc/nginx/ の中に、2つのディレクトリがあります。
- sites-available(準備室): 設定ファイル置き場。ここに置いただけでは動かない。
- sites-enabled(本番稼働): ここにあるファイルだけが読み込まれる。
Ubuntuでは、「available」に設定ファイルを書き、「enabled」に向けてシンボリックリンク(ショートカット)を貼ることで設定を有効化します。
「設定ファイルは消したくないけど、一時的に無効にしたい」という時に、リンクだけ消せばいいので非常に管理がしやすいのです。
Docker(ドッカー)とは何か?
さて、ここからが本番です。
インフラ技術の革命児、Dockerについて解説します。
「私の環境では動いたのに!」を無くす魔法
開発現場で一番あるトラブル。
「AさんのPCでは動くのに、BさんのPCではエラーが出る。本番サーバーでも動かない。」
原因は、OSのバージョン、ライブラリのバージョン、設定ファイルの微妙な違いなど様々です。
Dockerは、「アプリを動かすのに必要なOS、ライブラリ、設定、コード全て」を一つの「箱(コンテナ)」に詰め込んでしまいます。
この「箱」さえあれば、WindowsでもMacでも、Ubuntuサーバーでも、全く同じ環境を一瞬で再現できます。
まさに、貨物船に積む「コンテナ」と同じ発想です。
仮想マシン(VM)との違い
今まで使ってきたVirtualBoxなどの「仮想マシン」と何が違うのでしょうか?
| 項目 | 仮想マシン (VM) | Dockerコンテナ |
|---|---|---|
| 仕組み | ハードウェアごと仮想化する。 中に完全なOSが入っている。 |
OSの「核(カーネル)」だけホストと共有する。 必要なアプリだけ動かす。 |
| 重さ | 重い(数GB)。起動に数分かかる。 | 超軽量(数十MB)。起動は一瞬。 |
| 用途 | 別のOSをしっかり動かす。 | アプリを動かす環境を作る。 |
実践2:UbuntuにDockerを導入する
UbuntuはDockerとの相性が抜群です。
公式のリポジトリを使って、最新版のDockerをインストールしましょう。
※apt install docker.io でも入りますが、バージョンが古いことがあるため、以下の「公式手順」を推奨します。
1. 必要なツールのインストール
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release -y
2. Docker公式の鍵(GPGキー)を追加
「これは怪しいソフトじゃないよ」と証明するための鍵を登録します。
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
3. リポジトリの追加とインストール
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io -y
少し長いコマンドですが、コピペでOKです。
完了したら、動作確認をしてみましょう。
sudo docker run hello-world
Hello from Docker! というメッセージが表示されれば、構築完了です!
なぜAI開発でUbuntu+Dockerが必須なのか?
先生、インストールはできましたけど、これがどうAI開発に繋がるんですか?
AI開発、特にディープラーニングは環境構築が地獄なのよ。
Pythonのバージョン、GPUドライバのバージョン、ライブラリの依存関係…。
一つでもズレると動かないの。
でも、世界中の研究者が「動く環境をDockerコンテナにして配布」してくれているのよ。
例えば、あなたが最新のAIモデルを使いたいとします。
一から環境を作ると数日かかりますが、Ubuntu上でDockerを使えば、以下のようなコマンド一発で環境が整います。
# ※例(実際には実行しないでください) docker run -it pytorch/pytorch:latest
これが、世界中のAI開発者がWindowsではなく、Macでもなく、「Ubuntu + Docker」を選ぶ最大の理由です。
最終課題:DockerでWebサーバーを立ち上げる
最後に、Nginxを「直接インストール」するのではなく、「Dockerコンテナ」として起動してみましょう。
これができれば、あなたはサーバーを汚さずにアプリを動かせるようになります。
1. 既存のNginxを停止する
ポート80番が重複してしまうので、先ほどaptで入れたNginxは止めておきます。
sudo systemctl stop nginx
2. Nginxコンテナを起動する
魔法のコマンドです。
sudo docker run -d -p 80:80 --name my-webserver nginx
解説:
-d: バックグラウンドで動かす。-p 80:80: サーバーの80番ポートへのアクセスを、コンテナの80番ポートに繋ぐ。nginx: Nginxの公式イメージを使う。
ブラウザで再度アクセスしてみてください。
先ほどと同じ「Welcome to nginx!」が表示されるはずです。
しかし、今回はサーバーに直接インストールされたものではなく、「コンテナという隔離された箱の中で動いているNginx」が表示されています。
いらなくなったら docker stop my-webserver と docker rm my-webserver で跡形もなく消すことができます。
これこそが、サーバーを汚さない美しい開発スタイルです。
Ubuntu講座まとめと、次なるステップ
全3回のUbuntu講座、お疲れ様でした!
これであなたは、以下のスキルを手に入れました。
- RHEL系とDebian系の違いを理解し、OSを選定できる。
- APTコマンドを使ってパッケージ管理ができる。
- 高速なWebサーバーNginxを扱える。
- Dockerを使って、環境に依存しない開発ができる。
ここから先は、Pythonを勉強してAIアプリを作ってみるもよし、WordPressをDockerで立ち上げてみるもよし。
Ubuntuという自由な大地の上で、あなたの作りたいものを自由に創造してください。
インフラの知識は、あなたのエンジニア人生を支える「最強の土台」になります。
これからの活躍を応援しています!
AlmaLinuxもUbuntuも使えるなんて、もう立派なインフラエンジニアね。
新しい技術はどんどん出てくるけど、基本さえ押さえていれば怖くないわ。
困ったときは、またこのサイトに戻ってきなさい。いつでも待ってるわよ!
▼Ubuntu × Dockerを試すならこのVPS(推奨)



コメント