【Laravel学習記録】環境構築編

こんにちは、おてらです。

ここ1年半ほど業務では Python / Django を利用した開発を行っているのですが、今後諸般の事情で PHP / Laravel に環境が変わることになったので学習記録として書いていきます。

今回はローカルの開発環境の構築編です。

スポンサーリンク

Laravel の開発環境

Laravel は公式サイトで Homestead という Vagrant Box を提供しています。

公式サイトによると

HomesteadはWindowsやMac、Linuxシステム上で実行でき、Nginx WebサーバとPHP7.3、PHP7.2、PHP7.1、PHP7.0、PHP5.6、MySQL、PostgreSQL、Redis、Memcached、Node、他にも素晴らしいLaravelアプリケーションを開発するために必要となるものすべてを含んでいます。

ということで Laravel で開発を進めるにあたって必要なソフトウェアが全て含まれた Vagrant Box ですね。

 

もう1つ開発環境の候補としてよく挙げられるのが Laradock です。

こちらは Docker で Laravel の開発を行いたい場合に便利です。

 

一応書いておくと Homestead は公式ですが、 Laradock は非公式です。(でも Laradock での開発も一般的なようです。)

Laradock に挑戦

今回 Docker の勉強もしたいな~と思っていたので開発環境は Laradock に決めました。

という訳で早速環境を作っていきます。

Docker for Windows のインストール

何はともあれまずは Docker がないと始まらないので Docker をインストールします。使用する OS は Windows10 Pro なので Docker for Windows が利用できます。

こちらからインストーラーをダウンロードしてインストールします。

あとはインストーラーの指示に従ってポチポチとインストールするだけです。

Git for Windows のインストール

git コマンドを使用するので公式サイトからダウンロードして Git for Windows をインストールしておきます。

Windows 端末で bash 操作できるので Git Bash も大分役に立ちますよねー。

コマンドプロンプトでやるより Git Bash でやった方が色々楽なので、以降の工程でコマンドを実行する際は基本的に Git Bash で行っています。

Laradock のインストールと初期設定

ホームディレクトリ直下でもどこで適当な場所に開発用のディレクトリを作ってそこで進めていきます。

まずは Laradock を clone します。

$ git clone https://github.com/LaraDock/laradock.git

laradock ディレクトリが出来るのでそこに移動して .env ファイルを作ります。

$ cd laradock
$ cp env-example .env

ファイルをコピーしたら .env ファイルを開き、 Laravel のプロジェクトディレクトリの設定を以下のように laradock と同階層の sampleapp と指定しておきます。

後に Laravel プロジェクトを作成するときに sampleapp というプロジェクト名で作成する想定です。

# Point to the path of your applications code on your host
#APP_CODE_PATH_HOST=../
APP_CODE_PATH_HOST=../sampleapp

ちなみに僕は今回使うマシンに MariaDB をインストールしていたのでローカルの3306番ポートは既にMariaDBが利用しています。
なので Docker で MySQL のコンテナを起動するときのポートを変えてあげる必要がありました。

コピーした .env ファイルの MySQL の設定を変更します。

### MYSQL #################################################
MYSQL_VERSION=latest
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3308 # ここのポート番号を変更
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

これでマシンにインストール済みの MariaDB は今まで通り3306番ポートを、Docker 上の MySQL コンテナは3308番ポートを利用するようになります。

Docker コンテナの起動

初期設定が済んだので Docker コンテナを起動させます。

$ docker-compose up -d nginx mysql

初回はイメージをダウンロードするため時間がかかります。

Starting laradock_mysql_1 ... done
Starting laradock_workspace_1 ... done
Starting laradock_docker-in-docker_1 ... done
Starting laradock_php-fpm_1 ... done
Starting laradock_nginx_1 ... done

最終的にこんな感じでコンテナが5つ起動します。

Laravel プロジェクトの作成

コンテナが起動したら workspace に接続して Laravel のプロジェクトを作成します。

「さっき sampleapp というディレクトリを作ったから Windows 上でそこのディレクトリに移動して create-project すればいいじゃん」と思っていた時期が僕にもあったんですが、それではホストOSである Windows 上に Laravel プロジェクトが作られるだけなので Docker コンテナ上での開発ができません。

Docker コンテナ上で Laravel プロジェクトを作るためには workspace に接続する必要があります。

Laravel での様々な操作を行う場合、この workspace 上で実行する必要があるという理解です。

ではまずその workspace を確認します。

$ docker-compose ps
Name                                 Command                    State               Ports
-----------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1    dockerd-entrypoint.sh            Up    2375/tcp
laradock_mysql_1               docker-entrypoint.sh mysqld      Up    0.0.0.0:3308->3306/tcp, 33060/tcp
laradock_nginx_1               nginx                            Up    0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_php-fpm_1             docker-php-entrypoint php-fpm    Up    9000/tcp
laradock_workspace_1           /sbin/my_init                    Up    0.0.0.0:2222->22/tcp

laradock_workspace_1 とやらが該当の Docker コンテナです。こいつにログインします。

$ docker exec -it --user=laradock laradock_workspace_1 bash

ログインするとプロンプトの表示が変わります。

laradock@2ccfe4c7f1d7:/var/www$

composer を使って Laravel プロジェクトを作ります。

$ composer create-project laravel/laravel --prefer-dist sampleapp

これで Docker 上に Laravel プロジェクトが作成されました。

アクセスしてみる

この状態で http://localhost にアクセスすると Laravel のデフォルトページが表示されるはず。

データベースの接続設定

最後に MySQL のコンテナと連携させます。

workspace 上で migrate を実行します。

$ php artisan migrate

これでエラーが出なければ終了、らしいのですが、僕の場合結構エラー出ました…。

この Qiita の記事がズバリそのエラーの対処法だったので本当に助かりました。

この記事には2つエラーが書かれてますが僕は2つとも踏みました(^^;)

MySQL のコンテナに接続して my.cnf を編集する際、 vim がインストールされてなくて驚きました。(インストールした)

準備完了

これで開発環境が整いました。

僕は VSCode を使ってるので VSCode から sampleapp ディレクトリを開けばゴリゴリ開発していけます。

 

という訳で Laravel の学習記録1回目の環境構築編でした。

Homestead での環境構築もやりましたが、楽さで言えば圧倒的に Homestead ですね…w

ただ Docker は今後ほぼ必須の技術になってくると思うので勉強のためにやってみました。慣れればこれが楽なんでしょうが、その境地に達するにはまだまだ時間がかかりそうです。

とりあえず、Docker 上で Laravel の開発頑張っていきます。

フォローする

スポンサーリンク