LoginSignup
7
9

More than 5 years have passed since last update.

Laravel5をHomesteadを使わずWindows+Vagrant環境でセットアップする

Last updated at Posted at 2017-06-19

はじめに

ついに必要に迫られてしまったのでLaravel5を触ってみました。
公式では、

Laravelフレームワークを動作させるには多少のシステム要件があります。もちろん、Laravel Homestead仮想マシンでは、要求が全て満たされています。ですから、Laravelのローカル開発環境としてHomesteadを活用されることを強くおすすめします。

引用元: Laravel5.4 インストール https://readouble.com/laravel/5.4/ja/installation.html

と、このようにローカル開発環境にはHomestead使えば楽でっせ、という記述があるものの、それで楽をすると本番で困りそうなので、Vagrant上で動かせるようにしてみました。
地味に導入が面倒だったので覚え書きとして、セットアップ~Welcomeページを表示させるまでを記します。

検証済み環境

  • Laravel5.4 (2017年6月19日現在の最新)
  • Windows10
  • Vagrant + VirtualBox
  • GitBash

今まで散々Dockerの記事書いてきましたが、今回はVagrantで。
Docker for Windowsでローカル開発環境(LAMP)を作るのにどハマリしたので備忘録。 - Qiita
【Docker×Windows】Hyper-Vが使えないならVagrantを使えば良いじゃない - Qiita

セットアップ後の想定環境

  • OS: CentOS 7.1
  • PHP: 7.1
    • リポジトリにはWebtaticを使用します。
  • RDBMS: MariaDB

手順

1. Vagrant環境をセットアップする

今回使用するイメージはbento/centos-7.1

bash
vagrant box add bento/centos-7.1
vagrant init bento/centos-7.1
vagrant up

vagrant up後のセットアップコマンドは以下の通り。

bash
yum -y update
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

# mcryptの依存モジュールのインストール
yum -y install libmcrypt libmcrypt-devel

# 一気に必要なものをインストール
yum -y install httpd php71w php71w-cli php71w-common php71w-devel php71w-mbstring php71w-mcrypt php71w-mysql php71w-pdo php71w-pear php71w-pecl-xdebug php71w-xml mariadb mariadb-server

# httpd.confを編集
# /var/www、/var/www/htmlのAllowOverrideをAllにしておく
# DocumentRootを /var/www/html/public にしておく(後述)

# 起動・登録
systemctl start httpd.service
systemctl enable httpd.service
systemctl start mariadb.service
systemctl enable mariadb.service

# composerのインストール
# cf. https://getcomposer.org/download/
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Server Requirements について

Homesteadを使用しない場合は、以下の要件を満たす必要があります。
・PHP >= 5.6.4
・OpenSSL PHP拡張
・PDO PHP拡張
・Mbstring PHP拡張
・Tokenizer PHP拡張
・XML PHP拡張

引用元: Laravel5.4 インストール https://readouble.com/laravel/5.4/ja/installation.html

Homesteadを使用しない場合のLaravelの動作環境として、公式ではこのように記述されています。
ですが、上記のコマンド群で一通り対応済みとなります。

  • PHP >= 5.6.4
    => PHP7.1なので問題なし
  • OpenSSL PHP Extension
    => php71w-commonの中に入っている
  • PDO PHP Extension
    => php71w-pdoとしてインストール済み
  • Mbstring PHP Extension
    => php71w-mbstringとしてインストール済み
  • Tokenizer PHP Extension
    => php71w-commonの中に入っている
  • XML PHP Extension
    => php71w-xmlとしてインストール済み

cf. PHP 7.1 on CentOS/RHEL 6.8 and 7.3 via Yum - Webtatic.com

。。そういえばいつからmcryptいらなくなったの
一応入れてはありますが

Webtaticは各パッケージで何が一緒に入ってくるのか、丁寧に書いてあるのが有り難いですね。

DocumentRoot について

地味に詰まったところ。
Laravelの場合、 ApacheのDocumentRootをpublicに指定 しないといけないようです。

基本的にはApacheでLaravelアプリケーションのバーチャルホストを定義するだけ。Laravelアプリケーションのpublicフォルダをドキュメントルートに指定します。

引用元: ApacheでLaravel5アプリケーションを動かす

公式ドキュメントにそんな記述あったかな。。 見落としていたらごめんなさい。

追記
ちゃんと書いてありました。 大変失礼致しました。
なぜ見落としていたのか。。ndxbn様、ご指摘有難うございます。
https://readouble.com/laravel/5.4/ja/installation.html#configuration

DocumentRoot直下にlaravelのプロジェクトを展開する場合、DocumentRootは以下のような設定になります。

/etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/public"

2. Windowsにもcomposerをインストール

各種php artisanlaravelコマンドをローカルWindows上でも使用することがあるので、Windows上にもcomposerをインストールしちゃいます。
今回みたいな環境の場合、php artisan make:controller HogeFugaControllerとかはローカルで打ちますからね。
もちろん、マイグレーションなどはリモートで。

  1. https://getcomposer.org/download/からWindows Installerをインストールする。
  2. GitBashからwhich composerとして、パスが通っていることを確認

3. WindowsへのLaravelコマンドのインストール

ローカルWindows上においてlaravelコマンドを使用するために、laravelコマンドをインストールします。

GitBash
composer global require "laravel/installer"

4. プロジェクトの作成

ローカルWindows上にプロジェクトを作成します。
ワーキングディレクトリにて、下記コマンドを実行します。

GitBash
laravel new [ProjectName]

すると本体や各種必要モジュールなどがダウンロードされてきます。
これでインストールはいっちょ上がり。

5. リモートサーバーへの転送

FTPクライアントなどで、Vagrantの /var/www/html にLaravelのプロジェクトディレクトリを置きます。
今回は、html直下にLaravelの各種ディレクトリが展開されるように配置しました。

6. Welcomeページが開けるか確認

ここまで問題なければ、http://192.168.33.10でLaravelのWelcomeページが開けるはずです。

さいごに

今までずっと業務でCakePHP2しか使ってこなかった結果、composerとかも全く触れてこなかったので、ここまでだけでもだいぶ手間取る結果に。
ただ単にDocumentRootに置いて終わり!というCakeとは全然違いますね。
だいぶ昔にLaravel4系を触ったこともありましたが、最早記憶の彼方。。

ララ帳見ながら触っている最中ですが、なかなか今までと違い過ぎて戸惑ってます。
早いところ慣れなければ。

7
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9