【Laravel】Windows環境でLaravel6を動かす環境構築一連の流れ

PHP

Windowsのローカル環境で、PHPのフレームワークであるLaravelを使った新規プロジェクトの開発環境を整えるところまでの一連の流れを、自分の備忘の意味も込めて残しておきます。

Laravelのプロジェクト作成はもちろん、その前段階であるPHPやWEBサーバなどのインストール・設定もまだ一切やっていないところから構築していきます。

数年前にLaravelを利用したWEBアプリの開発を2年弱していましたが、設定などはもう殆ど忘れてしまっているので、ほぼほぼ初心者状態から色々思い出しながらやりました。

分かりやすさ重視の為に、言葉の厳密性に欠ける部分もありますがご容赦ください。

試した環境と目指すゴール

OSはWindows10 Pro。

ここでは目指すゴールとして以下を設定。

・ローカルにWEBサーバ(Apache)、DBサーバ(MySQL)、PHPをインストール
・Composer(PHPのパッケージ管理ソフト)をインストール
・Laravelプロジェクトを作成
・WEBサーバ(Apache)上でLaravelプロジェクトを実行
・DBのテーブル作成をLaravelの機能を使って作成
・(おまけ)Gitでソースのバージョン管理設定

PHPは2020年11月にメジャーバージョンアップしたばかりの8を利用。
Laravelは現状の最新はバージョン8のようだが、LTSが6系のようなので6系最新をインストール。

他はミドルウェアのバージョンは基本最新を入れていくが、(わたしがやりたいことをやる上で)あまり大きな違いは無いと思っているのでそれほど意識しない。

LTSとはLong Term Support の略で、Laravelの場合はバグフィックスが2年間、セキュリティフィックスは3年間の模様。

Laravelの場合は、最新バージョンがLTSで無い場合、先にリリースされたバージョンの方がサポート期間が長かったりする。

Windows10環境にXAMPPを導入

XAMPPとは

XAMPPとは、

X:Windows(OS)
A:Apache(WEBサーバ)
M:MySQL(DBサーバ)
P:PHP(開発言語)
P:Perl(開発言語)

の略で、Windows上にWEBサーバ/DBサーバ/開発言語までを一括でインストールし、管理してくれるパッケージ群と思えばよい。

お手軽に環境構築するのに大変便利。

最終的に動作させるOS環境がLinux系であったり、WEBサーバがnginxであったりしても、ローカル開発環境はとりあえずこれを使う事も全然ある。

XAMPP 8.0.0のインストール

今回はPHPのバージョンを8.0の最新で動かすので、XAMPPのサイトに行って、Windows向けXAMPP8.0.0のインストーラを取得。

https://www.apachefriends.org/jp/index.html

適当な場所でインストーラを実行してインストール。

基本的にデフォルト設定のまま次へ次へと進めば完了する。

ApacheとMySQLの動作確認

インストール完了後、インストールフォルダ(デフォルトでは「C:¥xampp」)に移動し、xampp-control.exeを起動。

これがXAMPPのコントロールパネルとなる。

ApacheとMySQLの「Start」ボタンを押してコンソールにエラーメッセージが出力されないければOK。

念のためApacheの正常起動確認の為にブラウザから「http://localhost」にアクセスし、正常表示されていることも確認しておく。

すぐに必要では無いかもしれないが、PHPをインストールしたので、phpコマンドを簡単に実行できるように、環境変数にphp.exeファイル(デフォルト設定の場合「c:¥xampp¥php」の下にある)までのパスを通しておくと良い。

コマンドプロンプトから、

php -v

を叩いて、PHPのバージョン情報が表示されればOK。

上手くいかないときは、↓こちらの記事も参考に。

Composerの導入

Composerとは

Composerは、PHPの開発で使う各種ライブラリの依存性管理ツール。

なんだそれ?という感じかもしれないが。

例えば、PHPで何かの機能を実現するのに、ライブラリAが必要だとして、そのライブラリは内部で別のライブラリBとCを必要としているした場合。

開発者がA、B、Cのライブラリを、バージョンも意識しつつ一つ一つ展開・設定するのは手間なので、そのあたりの管理をComposerがやってくれる、ということ。

Laravelのプロジェクト作成に使う(他にも後々必要になってくると思う)のでインストールする必要がある。

Composerのインストール

以下のComposerのサイトに行って、「Download」からインストーラ(Composer-Setup.exe)をダウンロードする。
https://getcomposer.org/

インストーラを起動し、基本的に次へ次へで遷移し、インストールを完了させる。

Xampp(PHP)のインストール時に、インストール先をデフォルトから変更している場合は、「Choose the command-line PHP you want to use」の画面で、php.exeまでのパスを適切なものに変更しておく。

xamppインストールフォルダ下のphpフォルダ内にphp.exeがあるはず。

インストールが完了したら、コマンドプロンプトを開いて、以下のコマンドを叩き、composerのバージョンが表示されればOK。

composer -v

composerへのパスはインストール時に自動で環境変数に設定される為、自分でパスを通す必要は無い。

Laravelプロジェクト作成

Laravelのインストール

さっそくcomposerを使ってLaravelのインストールを実行。

composer global require laravel/installer

特にエラーメッセージが出来なければOK。

Laravel6系のプロジェクト作成

次にLaravelのプロジェクトを作成する。

まずは、コマンドプロンプトで、Laravelのプロジェクトを作成したいフォルダに移動する
移動はcdコマンドを使う。
ここでは、「C:¥xampp¥htdocs」フォルダの下に作成しようと思うので、以下コマンドでカレントフォルダを移動する。

cd c:\xampp\htdocs

続いてLaravelのプロジェクトを作成するコマンドを実行するが、Laravelにはプロジェクトの作成の仕方が2通りある模様。

一つ目が、

laravel new <project_name>

と、laravelコマンドを打つ方法。

<project_name>は任意のプロジェクト名を指定する。

もうひとつが、

composer create-project --prefer-dist laravel/laravel <project_name> "バージョン指定"

と、Composerコマンドを使ってプロジェクトを作成する方法。

どうも前者の方法だとLaravelのバージョンを指定できないようなので(インストール後に変更は可能なはずだが)、今回は後者の方法でプロジェクトを作成する。

(なので、後者の方法を使うのであれば実は最初に実行したLaravel自体のインストールは不要かもしれない)

composer create-project --prefer-dist laravel/laravel todotest "6.*"

今回は、WEBアプリ作成の導入としてよく挙げられるTODO管理アプリでも作ることを前提に、プロジェクト名は「todotest」としたが、何でも良い。

バージョンは6系の最新を使いたいのでそれを指定。

*は任意のと言う意味で、ここでは6以降のマイナーバージョンは何でも良い、という指定の仕方。これで6系の最新が入る。

もし、マイナーバージョンも指定したければ、*の部分を書き換えて特定のバージョンをピンポイントでインストールすることも可能。

特に赤字でエラーなども出力されず、最後に
Application key set successfully.
と出力されればプロジェクトの作成は完了。

「C:¥xampp¥htdocs」の下にプロジェクト名で指定した「todotest」フォルダが出来ているはず。

Laravelプロジェクト作成の正常性確認として、php artisan serveコマンドを使って、PHPビルトインサーバーによるブラウザ表示確認が出来る。

ただ、ここではこの後すぐにApache(WEBサーバ)上で動作させる設定を行う為、ビルトインサーバーの使い方は割愛。

VirtualHostの設定をしてApache上で動作させる

VirtualHostとは

複数のドメインのWEBサイトやWEBアプリケーションを、一つのWEBサーバで動作させる機能のことをVirtualHostという。

XAMPPを導入すると、WEBサーバとしてApacheがインストールされ、デフォルトでhtdocsをドキュメントルートとするWEBサイトが表示されるようになっている。

このドキュメントルートを、導入したLaravelプロジェクト(todotestプロジェクト)のフォルダに変更してしまっても良いのだが、今後複数のWEBアプリ開発などをしたくなる可能性もあるので、今の内にVirtualHost設定してしまう。

Apacheのconfファイル(設定ファイル)を変更

Apacheの設定ファイルを変更することでVirtualHostを使う事が出来る。

xamppフォルダの下にapacheフォルダがあり、その下にconfフォルダが存在する。
この中に、Apacheの各種設定ファイルが配置されている。

Apacheの設定ファイルは、httpd.confが大元となる設定ファイルとなり、他のconfファイルがそこから読み込まれると考えると良い。

大元のhttpd.confファイル内に、VirtualHostの設定を記述してしまっても良いが、拡張した情報を別の設定ファイルに記載しておいた方が可読性があがるなどのメリットがある。

今回は一般にVirtualHostの設定に使われるextraフォルダ内の「httpd-vhosts.conf」ファイルに設定を追加することにした。

「httpd-vhosts.conf」をテキストエディタで開くと、デフォルトで数十行の記載があるが、全て#で始まっており、コメント化されている。

一番下に、以下の記載を追加する。

<VirtualHost todotest.com:80>
  DocumentRoot "C:\xampp\htdocs\todotest\public"
  ServerName todotest.com
  <Directory "C:\xampp\htdocs\todotest\public">
    AllowOverride All
    Options All
    Require all granted
  </Directory>
</VirtualHost>

二か所ある「todotest.com」の部分はブラウザアクセスする際に使う。
テストと分かるような名前を付けておく。

Apacheの設定ファイルを変えた際は、Apacheの再起動が必要になる。
XAMPPのコントロールパネルから、Apacheを一度「stop」した上で、再度「start」する。

特にエラーが出なければOK。

hostsファイルの修正

「httpd-vhosts.conf」に記載した「todotest.com」を使ってWEBブラウザアクセスして動作を確認したいが、あくまでWEBサーバ(Apache)の設定であり、ブラウザはそんなことはまだ知らない状態。

今のままこのドメインを使ってもインターネット上のサイトを探そうとしてしまう。
ローカル環境上であることをブラウザに伝える為に、hostsファイルを編集する。

hostsファイルは、「優先して参照されるDNSサーバの代わりになるもの」位でとりあえず理解しておけば良い。

hostsファイルの場所は以下。
「C:\Windows\System32\drivers\etc」

直接編集するには管理者権限が必要。
以下のどちらかの方法で編集する。

・別の場所にhostsファイルをコピーした上でコピーファイルを編集し、元ファイルに上書き保存
・Windowsのメモ帳を管理者権限で実行してhostsファイルを開て編集

メモ帳を管理者権限で実行するには、Windowsのスタートメニューなどからメモ帳を開く際に「管理者として実行」を選択すればOK。

hostsファイルには、一番下に以下の記述を追加する。
意味としては、VirtualHostに記述した「todotest.com」というドメインが自分自身である(127.0.0.1というIPは自PCを示す)という事を指定している。

127.0.0.1 todotest.com

.envファイルのAPP_URLをVirtualHostで指定したものに合わせる

Laravelプロジェクトのフォルダ直下に、「.env」(ドットエンブファイル)というファイルがある。

ここにLaravelの各種設定を記述するが、この中にWEBアプリのURLを設定する場所がある。
ここを、VirtualHostで設定したドメイン名に合わせた記述に変えておく。

Laravelプロジェクトの作成の仕方によっては、.envファイルが無い場合もある。
その場合は.env.exampleを.envというファイル名でコピーして作成すればよい。

.envに限らずドット(.)で始まるファイル名が一切表示されていない場合は、Windowsの設定を変えて隠しファイルが表示されるようにしておく。

.envファイルをテキストエディタで開き、APP_URLを「http://todotest.com」と書き換える。

.envのAPP_URLの値は、この記事のゴールの為には特に変更する必要もないが、後々書き換える必要が出てくるはずなので、このタイミングで合わせて変更しておく。

ブラウザで表示確認

ブラウザを開き、設定したドメインのURL(http://todotest.com/)にアクセスして以下のようなLaravelの画面が表示されれば、OK。

Laravelを使ってMySQL(DB)のテーブルを作成する

最後に、Laravelの機能を使ってDB操作が可能な状態まで設定し、DBサーバとの連携を確認して終わる。

MySQLに空のデータベースを作成

XAMPPをインストールしたので、MySQLもインストールされている。
コマンドからでもPhpMyAdminからでも良いので、テスト用に空のデータベースを作成する。

ここでは「laravel_todo_test」というデータベース名とした。

ユーザも一旦特に専用のユーザは作成はせず、rootユーザを利用する。

.envファイルにDBの接続情報を記述する

APP_URL設定をした際にも利用した.envファイルに、DBへの接続情報を記述する。

DB_CONNECTIONはDBサーバとしてMySQLを利用するのでデフォルトのままでOK。
DB_PORTもXAMPPのデフォルト設定どおりなら、3306ポートの指定のままで良い。

DB_DATABASEに、作成したデータベース名を設定。
DB_USERNAMEとDB_PASSWORDは、後々ユーザを作成したら書き換えるが、とりあえずはパスワード設定なしのrootユーザをそのまま使う。

Laravelの機能を使ってDBにテーブル作成

Laravelは、DBのテーブルをコマンド一つでcreateしたりmodifyしたりする機能を持っている。

「database¥migrations」の下に、テーブルを操作するための定義ファイルのようなものを作成すれば、コマンド一つで実行できる。

ここでは、細かい記述の仕方などは置いておいて、Laravelの機能を使ったDBアクセスが可能かだけを確認するために、デフォルトで用意されている、以下3テーブルの作成をコマンド一つで実行できるかだけ試しておく。

・users
・password_resets
・failed_jobs

上記3ファイルが存在することを確認した上で、プロジェクトルート上で以下コマンドを実行する。

php artisan migrate

以下のように、3つのテーブルが作成されたっぽいメッセージが、エラーなしで出ればOK。

PhpMyAdminで、テーブルが作成されているかを確認する。

3テーブルが作成されると書いたが、特殊なテーブルであるmigrastionsテーブルが必ず作られるので、合計で4テーブル作成される。

DBとの連携も出来た。

まとめ

とりあえず、Windows10でLaravelのローカル開発が出来る状態を整えた。

記事を書きつつ準備したのと、途中ネットワークの調子が悪くXAMPPのインストーラーをダウンロードするのに時間が掛かったので、すべてで5~6時間ほど掛けてここまでの環境整備が完了したが、作業に集中すればおそらく2時間も掛からないと思う。

※作成したLaravelのソースをGitHubつかってバージョン管理する設定まで進めようと思ったが、記事が長くなってしまったので、別記事に起こすことにした。

コメント

タイトルとURLをコピーしました