PHP開発環境をローカルマシンに構築する方法
開発チームを異動になった時や、個人開発を新しく始める際、環境構築が必須になります。本記事では、PHP開発環境をローカルマシンに構築する方法「XAMPP」「MAMP」「Docker」について紹介した後、特にDockerによる構築方法を詳しく紹介します。
またXAMPPを用いた方法と比べた際の、Dockerを用いた方法のメリット・デメリットについても解説します。
XAMPPとは
XAMPP(ザンプ)とは、PHP開発によく用いられるソフトウェア一式をまとめ、一括インストールできるようにしたパッケージです。オープンソースであり、無償で利用できます。
「XAMPP」はそれぞれ下記の頭文字となっており、クロスプラットフォームであることと、揃えられる環境一覧を示しています。
X…クロスプラットフォーム(Windows、Mac両対応)
A…Apache(Webサーバ)
M…MariaDB or MySQL(DBサーバ)
P…PHP(プログラミング言語)
P…Perl(プログラミング言語)
【参考】:XAMPP
MAMPとは
MAMP(マンプ)もXAMPPと同じく、PHP開発に関連するソフトウェア一式をまとめたパッケージです。有償版と無償版があります。
M…Macintosh
A…Apache(Webサーバ)
M… MySQL(DBサーバ)
P…PHP(プログラミング言語)
元々Mac端末向けに製作されたため、”Macintosh”の頭文字が入っていますが、Windowsにも適用可能な環境です。
【参考】:MAMP & MAMP PRO(Mac)
Docker
Dockerとは、Docker社が提供しているコンテナ仮想環境を作成・配布・実行するためのプラットフォームです。本記事ではPHP環境構築方法として紹介しますが、PHP以外にも様々な環境を仮想環境として作ることができます。
【参考】:Docker
Dockerを用いたPHP開発環境の構築手順
以下では、Dockerを用いてPHP開発環境をローカルに作成する方法を紹介します。構成は1つの例なので、Dockerに慣れてきたら自分が開発しやすいような構成を考えてみてください。
今回作成する環境は以下の通りで、PHP開発時にはよくある構成であり、頭文字をとって「LAMP環境」とも呼ばれます。
実行環境...Linux
Webサーバ...Apache 2.4
DBサーバ...MySQL 5.7
言語...PHP 7.4
上記に加え、DBのGUI操作を可能にするミドルウェア「phpMyAdmin」も導入します。
DBクライアント...phpMyAdmin
Dockerのインストール
まず、ローカルマシンにDockerをインストールします。「Docker Desktop」と呼ばれるインストーラを下記リンクからダウンロードし、インストールしてください。
Mac・Windows共にインストーラが提供されています。Macの場合CPUがIntel製かApple製かでインストーラが変わるので、注意してください。
【参考】: Docker Desktop
インストールが完了したら、Macの方はターミナル、Windowsの方はコマンドプロンプト(またはPowershell)を開き下記コマンドを実行しましょう。Dockerのバージョンが出力されたらインストールOKです。
docker -v
フォルダ構成準備
ご自分のマシンに、環境構築用のフォルダを1つ作成してください。例として、今回は「lamp-docker」フォルダとします。lamp-dockerフォルダ配下に、以下のようにフォルダ及びファイルを作成します。
lamp-docker
├── docker-compose.yml //ファイル
├── html //フォルダ
└── index.php //ファイル
├── mysql //フォルダ
└── php //フォルダ
├── Dockerfile //ファイル
└── php.ini //ファイル
Dockerfileを作成
phpフォルダ配下のDockerfileに以下を入力します。
FROM php:7.4-apache
RUN apt-get update && apt-get install -y libonig-dev && \
docker-php-ext-install pdo_mysql mysqli mbstring
1行目でDockerのイメージを指定し、2~3行目でPHP開発に必要なライブラリをインストールしています。
docker-compose.ymlを作成
docker-compose.ymlファイルに下記の設定を記載していきます。MySQL用・phpMyAdmin用・PHPをそれぞれ動かすコンテナを作成する設定となっています。
version: '3'
services:
#MySQL用コンテナ
mysql:
container_name: mysql
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test
- MYSQL_USER=test
- MYSQL_PASSWORD=test
#phpMyAdmin用コンテナ
phpmyadmin:
container_name: phpMyAdmin
depends_on:
- mysql
image: phpmyadmin/phpmyadmin
environment:
PMA_HOST: mysql
restart: always
ports:
- "80:80"
#php用コンテナ
php:
container_name: php-apache
build: ./php
volumes:
- ./html:/var/www/html
ports:
- 8080:80
depends_on:
- mysql
docker-compose.ymlファイルの書き方の詳細については、以下を参照してください。
【参考】:Composeを始めましょう
コンテナ作成、動作確認
Dockerfileとdocker-compose.ymlファイルの作成が完了したら、lamp-dockerフォルダ直下で下記コマンドを実行してください。「-d」はバックグラウンド実行のためのオプションです。
docker-compose up -d
最後に、動作確認を行っていきましょう。まずはphpの動作確認です。htmlフォルダ配下にindex.phpという名前のファイルを作成し、以下を記載してください。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>動作確認</title>
</head>
<body>
<h1><?php
print ("DockerでPHP環境構築しました");
?></h1>
</body>
</html>
保存できたら、ブラウザから下記リンクにアクセスしてください。画面に「DockerでPHP環境構築しました」と表示されたら、phpが動作していることが確認できます。
http://localhost:8080
また、下記リンクはphpMyAdminのログイン画面を表示するURLです。言語とユーザ名/パスワードを入力し、ログインできればOKです。ユーザ名・パスワードは、docker-compose.ymlの中で設定したものを使ってください。
http://localhost:80
Dockerを用いるメリット/デメリット
これまで述べてきたように、PHP開発環境を作成する方法にはXAMPP/MAMPをインストールする方法と、Dockerコンテナにより作成する方法があります。ここでは便宜上、XAMPPと比較した時のDockerのメリット・デメリットについて解説します。
Dockerのメリット
Dockerの最大のメリットは、「環境を削除・複製しやすい」ことにあります。
例えば複数プロジェクトでPHPを使いたくなった時、1つの端末にXAMPP環境を複数インストールする必要があります。XAMPPを複数インストールする際、インストール先のフォルダやポートが競合し合う可能性があり、環境構築に手間がかかります。
そのような場合Dockerであれば、複数環境をすぐ作成することができます。docker-compose.ymlを少し書き換え、別のフォルダで「docker-compose up -d」を実行すれば良いのです。
ちなみにDockerで作った環境とXAMPP環境を共存させることもできます。その際はApache、MySQLのポート(それぞれデフォルトで80、3306)が競合します。どちらかの環境を別ポートで再起動してみてください。
Dockerのデメリット
Dockerのデメリットは、「環境構築のためにある程度知識が必要である」ことです。
Dockerは仮想環境にコンテナを立てる技術です。なので、ローカルマシンから仮想環境に接続できるよう、docker-compose.ymlやDockerfileをうまく記述する必要があります。
慣れるまではエラーが出て大変なこともありますが、1度理解してしまえばPHP環境の作成以外にも応用が効く点もメリットです。ぜひ勉強してみてください。
【参考】:Docker Compose 概要
Dockerで軽量・複製しやすいPHP環境を作成しよう
本記事では、PHP開発環境の一例としてLAMP(Linux/Apache/MySQL/PHP)環境を取り上げ、Dockerを用いてLAMP環境を作成する方法を紹介しました。
またPHP開発環境パッケージの「XAMPP」「MAMP」を用いた方法とDockerを用いた方法を比較し、Dockerのメリット/デメリットについても解説しました。
それぞれの特性を理解し、開発チームにとって最適な環境構築手法を選ぶようにしてくださいね。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから