Frontend Craft Labフロントエンド開発の実験場
← 記事一覧に戻る
php

駆け出しエンジニアにLAMPを教えてみた

LAMPとは、Linux、Apache、MySQL、PHPの頭文字を取っていて、ウェブ開発で広く使われる技術スタック(組み合わせ)を指します。

LAMPとは?何ができる?

LAMPは、インターネット上でアクセスできる、動的なウェブアプリケーションを構築できる技術スタックです。

※「動的な」とは、サイトの内容がユーザーの操作に応じて変化したり、データベースから情報を操作したりすることできることを指します。

LAMPの主な構成要素

  • Linux: オープンソースのオペレーティングシステム(OS)
  • Apache: 最も普及しているウェブサーバーソフトウェア
  • MySQL: 人気のあるオープンソースデータベース管理システム
  • PHP/Perl/Python: ウェブアプリケーションを開発するためのプログラミング言語(通常はPHPを指すことが多い)
コンポーネント 役割 特徴
Linux すべてのソフトウェアが動作するための基盤となるオペレーティングシステム 安定性が高く、サーバー用途に最適化されている
Apache インターネットからのリクエストを受け付け、処理を振り分けるウェブサーバー 柔軟な設定が可能で、多くのモジュールで機能拡張できる
MySQL データを保存・管理するためのデータベースシステム 高速で信頼性が高く、ウェブアプリケーションとの相性が良い
PHP ウェブアプリケーションのロジックを実装するためのプログラミング言語 ウェブ開発に特化した機能が豊富で習得しやすい

Linuxって結局なんだ?

Linuxは、オープンソースのOSです。

OSですので下記の内容が役割です。

┌─────────────────────────────────────────────────┐
│ Linux (オペレーティングシステム)                  │
├─────────────────────────────────────────────────┤
│                                                 │
│  ┌─────────────────┐    ┌──────────────────┐    │
│  │ システム起動     │    │ ネットワーク管理   │    │
│  │ ハードウェア制御 │    │ インターネット接続 │    │
│  └─────────────────┘    └──────────────────┘    │
│                                                 │
│  ┌─────────────────┐    ┌──────────────────┐    │
│  │ マルチタスク     │    │  ファイルシステム  │    │
│  │ 複数ソフトの同時 │    │ ファイル保存・管理 │    │
│  │ 実行を可能にする │    └──────────────────┘     │
│  └─────────────────┘                            │
│                                                 │
│  ┌───────────────────────────────────────────┐  │
│  │ リソース管理                               │  │
│  │ CPU・メモリ・ディスクの割り当てと制御        │  │
│  └───────────────────────────────────────────┘  │
│                                                 │
└─────────────────────────────────────────────────┘
   ↓         ↓          ↓
┌──────┐  ┌──────┐  ┌──────┐
│Apache│  │MySQL │  │PHP   │
└──────┘  └──────┘  └──────┘

この中でもWebアプリのデプロイに特に関係しているのは、

  • ネットワーク管理 ネットワーク管理についてはHTTP/HTTPSリクエストを受け取るにはIP設定やポート開放が必要なため

  • ファイルシステム /var/www/html にアプリ配置、ログ管理は /var/logのようにディレクトリ管理が必要なため

それでは、上記の役割でLinuxはWebサーバー環境において、他のOSと比較して何かゆういせいがあるのでしょうか?

Linuxインストールの学習について

  • 仮想マシン(ローカル環境に安全にインストール) VirtualBox(仮想マシンの作成)、CentOS
  • WSL(Windows Subsystem for Linux)
  • クラウド(AWSやGCPなど) 実際のサーバーに近い構成で学べる

VirtualBoxとは? VirtualBox(バーチャルボックス) は、PCの中に「仮想のパソコン(仮想マシン)」を作れるソフトウェア 注意点 仮想マシンはメモリやCPUを使うので、**PCスペック(8GB以上推奨)**が必要 仮想マシンの中でUbuntuを動かす分、ちょっと動作が重くなることがある

VirtualBoxのメモリ事情(リアルな話) どれくらい使うの?

  • Ubuntu Server(GUIなし):512MB〜1GBくらいでも動く(最低限)
  • Ubuntu Desktop(GUIあり):2GB〜4GB以上必要(かなり重い) VirtualBoxはホストOS(例:Windows)の中に、完全に別のPC(ゲストOS)をまるごと再現して動かしてるから。

「最初にWSLで基礎 → VirtualBoxでサーバーごっこ → 最終的にAWS」

Apache編 in WSL

WSLで学べない or 学びにくいこと(VirtualBoxと比べて)

分野 WSLではできない / やりづらいこと
🔧 OSの起動〜ブート処理 grubや起動ログが見れない(カーネルに触れない)
⚙ systemd完全サポート 一部動かない or 特殊設定が必要
🌐 ネットワーク構成の練習 固定IP、NAT、ブリッジ接続などが制限される
🧩 カーネル拡張やモジュール追加 WSLのカーネルは変更不可
🛠️ マルチマシン構成 仮想LANを作って複数台構成の練習がしづらい
💿 ディスク構成管理 パーティション、マウント、fstab操作などが一部制限される

Apacheのインストール手順

  1. WSLのインストール

WSLとは

Windows Subsystem for Linux(WSL)は、Windowsの中にLinuxを動かすためのシステム。

比較 仮想マシン(VirtualBoxなど) WSL(Windows Subsystem for Linux)
動かし方 仮想PCを丸ごと起動 Linuxのコア機能だけ直接起動
リソース消費 多い(メモリ数GB、CPUも使う) 少ない(必要な分だけ動く)
起動時間 数十秒〜数分 数秒(Ubuntuアプリをクリックするだけ)
インストールサイズ 数GB以上 数百MB〜
wsl --install
  1. Ubuntu Serverのインストール

Ubuntu(ウブントゥ)とは? Ubuntuは、LinuxというOSの一種です。

Windowsではアプリとしてインストール、起動することで、OS(オペレーティングシステム)が起動します。 WSLは仮想マシンではなく、Windowsの中で「必要なときだけ起動するLinux」

Ubuntu(WSL)は 「アプリを開く=OSを起動する」

  1. Apacheのインストール
  2. ファイルの配置
  3. ブラウザで確認

代替スタック

  • WAMP: Windows, Apache, MySQL, PHP (Windowsベース)
  • MAMP: Mac, Apache, MySQL, PHP (Macベース)
  • LEMP: Linux, Nginx, MySQL, PHP (Apacheの代わりにNginxを使用)

LAMPスタックは、WordPressなどの多くの人気CMSやウェブアプリケーションの基盤として使われています。 初心者からプロフェッショナルまで、幅広い開発者に支持されている信頼性の高い環境です。