はじめに
ついに必要に迫られてしまったので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
。
vagrant box add bento/centos-7.1
vagrant init bento/centos-7.1
vagrant up
vagrant up
後のセットアップコマンドは以下の通り。
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フォルダをドキュメントルートに指定します。
公式ドキュメントにそんな記述あったかな。。 見落としていたらごめんなさい。
追記
ちゃんと書いてありました。 大変失礼致しました。
なぜ見落としていたのか。。ndxbn様、ご指摘有難うございます。
https://readouble.com/laravel/5.4/ja/installation.html#configuration
DocumentRoot直下にlaravelのプロジェクトを展開する場合、DocumentRootは以下のような設定になります。
DocumentRoot "/var/www/html/public"
2. Windowsにもcomposerをインストール
各種php artisan
やlaravel
コマンドをローカルWindows上でも使用することがあるので、Windows上にもcomposerをインストールしちゃいます。
今回みたいな環境の場合、php artisan make:controller HogeFugaController
とかはローカルで打ちますからね。
もちろん、マイグレーションなどはリモートで。
-
https://getcomposer.org/download/から
Windows Installer
をインストールする。 - GitBashから
which composer
として、パスが通っていることを確認
3. WindowsへのLaravelコマンドのインストール
ローカルWindows上においてlaravel
コマンドを使用するために、laravel
コマンドをインストールします。
composer global require "laravel/installer"
4. プロジェクトの作成
ローカルWindows上にプロジェクトを作成します。
ワーキングディレクトリにて、下記コマンドを実行します。
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系を触ったこともありましたが、最早記憶の彼方。。
ララ帳見ながら触っている最中ですが、なかなか今までと違い過ぎて戸惑ってます。
早いところ慣れなければ。