駆け出しエンジニアに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のインストール手順
- WSLのインストール
WSLとは
Windows Subsystem for Linux(WSL)は、Windowsの中にLinuxを動かすためのシステム。
比較 | 仮想マシン(VirtualBoxなど) | WSL(Windows Subsystem for Linux) |
---|---|---|
動かし方 | 仮想PCを丸ごと起動 | Linuxのコア機能だけ直接起動 |
リソース消費 | 多い(メモリ数GB、CPUも使う) | 少ない(必要な分だけ動く) |
起動時間 | 数十秒〜数分 | 数秒(Ubuntuアプリをクリックするだけ) |
インストールサイズ | 数GB以上 | 数百MB〜 |
wsl --install
- Ubuntu Serverのインストール
Ubuntu(ウブントゥ)とは? Ubuntuは、LinuxというOSの一種です。
Windowsではアプリとしてインストール、起動することで、OS(オペレーティングシステム)が起動します。 WSLは仮想マシンではなく、Windowsの中で「必要なときだけ起動するLinux」
Ubuntu(WSL)は 「アプリを開く=OSを起動する」
- Apacheのインストール
- ファイルの配置
- ブラウザで確認
代替スタック
- WAMP: Windows, Apache, MySQL, PHP (Windowsベース)
- MAMP: Mac, Apache, MySQL, PHP (Macベース)
- LEMP: Linux, Nginx, MySQL, PHP (Apacheの代わりにNginxを使用)
LAMPスタックは、WordPressなどの多くの人気CMSやウェブアプリケーションの基盤として使われています。 初心者からプロフェッショナルまで、幅広い開発者に支持されている信頼性の高い環境です。