Help us understand the problem. What is going on with this article?

Laravel5.1+HomesteadでRails的な開発をPHPでやってみよう!

More than 5 years have passed since last update.

PHPフレームワークの最新トレンドLaravel

PHPのフレームワークといえばCakePHPかCodeIgniterがおなじみですが、2013年位から徐々に人気が出てきているLaravelも良さそうです。
http://laravel.jp/
https://techstars.jp/blog/framework2/
良い所という点ではRuby on Rails 知っている人にはあの便利な各種機能がPHPで実装できるというところ。他のフレームワークでも出来ますが、ワリと中途半端で後付なものもある印象です。
簡単にローカル環境作れて、Migrate機能もかなり似ているので言語はPHPの方が好きという方にはいいんじゃないかと。
とはいいつつミーハーな興味だけではじめて、ドキュメントが少なくて大変だったのですが、いろいろ手探りでやってわかった部分があるので皆さんに共有しておきます。
なお、こちらもご参照下さい。わかりにくいところをこのドキュメントで補足しています。
http://readouble.com/laravel/5/1/ja/homestead.html

※2015/12/6 追記
ちなみにURLからわかるようにLaravelは現時点で最新の5.1でやっています。4系とは全く違う構造になっていて、以前のほうがCodeIgniterぽい作りになっている印象です。

環境について

  • Macbook Air
  • OS X El Captain(10.11.1)
  • 設定は基本はターミナルで実施(sublime text入れておくとhomestead edit時に設定ファイルが勝手にそちらで開く)

※ 多分Vagrant+VirtualboxはWindows環境でもイケると思いますが、どなたか差異の部分を書いてくれると助かります

Homesteadインストール手順

vagrantとvirtualboxのインストール

仮想環境の定番組み合わせVagrantとVirtualboxが必要になります。
vagrantは公式からパッケージをゲットしてきてインストール
http://www.vagrantup.com/
virtualbox
https://www.virtualbox.org/
これらはインストールすると個人のルートディレクトリ(/Users/yourname)にvagrantというディレクトリが作成されます。

Homestead Vagrant Boxのインストール

HomesteadというLaravel開発のためにパッケージされた環境(Box)をインストールします。
なお、Homesteadのインストールはルートディレクトリでやる必要があります。
私はvagrantディレクトリでやって結構ハマりました。

Local:~ $ vagrant box add laravel/homestead
Local:~ $ export PATH=~/.composer/vendor/bin:$PATH

RSAキーを作成

HomesteadにSSHするため用にローカル環境側でRSAキーを作成します。

Local:~ $ ssh-keygen -t rsa -C "you@homestead"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/yourenv/.ssh/id_rsa):/Users/yourenv/.ssh/id_rsa_youroriginal

homestead環境設定で指定するファイル名にするのが大事です。

Homestead環境を設定

homestead initコマンドで初期化を行い、
homestead editコマンドで設定ファイルを開きます。

Local:~ $ homestead init
Local:~ $ homestead edit

ちなみにhomesteadの設定ファイルでトラブルが起きるようなら思い切って削除するのが手です(homestead removeとかrm -rf ~/.homestead/とか)。
以下の様な設定が開くのでコメント書いているような内容にします。

ip: "192.168.15.10" # 他とバッティングしないIP
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa_youroriginal.pub # 先ほど作成したRSAキーのファイル名

keys:
    - ~/.ssh/id_rsa_youroriginal # 同上

folders:
    - map: ~/Code # ローカル側のディレクトリでhomesteadと共有されるもの(自分でmkdir必要だったかも)
      to: /home/vagrant/Code # homesteadログイン後にローカルと共有されるディレクトリ

sites: 
    - map: homestead.app # テストするときのURL(デフォルト)
      to: /home/vagrant/Code # いわゆるドキュメントルート
      hhvm: true
    - map: firstapp.local # 自分で作成したアプリをテストするURL
      to: /home/vagrant/firstapp/public #上記のドキュメントルート
      hhvm: true

共有ディレクトリは何に使うのか?
設定ファイル上にある共有ディレクトリですが、
- ファイルのやりとり(SCP、FTP的な使い方)
- Gitに上げる際のソースの置き場所
みたいな使い方をするのが吉かと思います。
ということで、ローカルマシン側にディレクトリを作成します。

Local:~ $ mkdir Code

Homestead環境へGO!

設定できたらhomestead環境を立ち上げます。

Local:~ $ homestead up

いろいろずらずら出て立ち上がるので、そのあとSSHでログインします。

Local:~ $ homestead ssh

ちなみにhomestead環境設定修正したりした場合は一度halt(終了)させてからまたupします。

Local:~ $ homestead halt

MySQLを使ってみる

必須ではありませんがhomesteadに入っているMySQLを接続確認。
ここに出ている通り、ユーザ名/パスワードはhomestead/secretです。

vagrant@homestead:~$ mysql -uhomestead -p secret
Your MySQL connection id is 4
Server version: 5.7.9 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| homestead          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

mysql> 

LaravelをHomestead環境にインストール

LaravelはPHPのフレームワークなのでこちらは開発環境、本番環境ともに個別にインストールする必要があります。ということで早速homestead上でインストール。

vagrant@homestead:~$ composer global require "laravel/installer=~1.1"

ベーシックな環境に関する設定は以上です。

Laravelプロジェクトを作成

ここからは個別にプロジェクト(要はそれぞれアプリの話)の作成に移ります。
いつものcomposerコマンドで作成します。

vagrant@homestead:~$ composer create-project laravel/laravel firstapp --prefer-dist

その後、本家マニュアルにないコツになる部分ですが、nginxの設定をいじります。

vagrant@homestead:~$ sudo vi /etc/nginx/sites-available/homestead.app 

中身を修正して保存。viの使い方は検索してくだい。

server {
    listen 80;
    listen 443 ssl;
    server_name homestead.app; # ここも直す必要あるかも
    root "/home/vagrant/firstapp/public"; # ここの修正が必要。作ったアプリのドキュメントルート

    index index.html index.htm index.php;
・・・

ここまでやったらhomesteadから抜けます。

vagrant@homestead:~$ exit 

ローカル側からアクセスするための最後の設定

ということでhomestead側で施した設定を有効にするため一度環境を落とします。

Local:~ $ homestead halt
Local:~ $ sudo vi /etc/hosts 

/etc/hosts の中身

# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
192.168.15.10 homestead.app
192.168.15.10 firstapp.local

ここまでやったら再度upします。

Local:~ $ homestead up

さて接続!

ブラウザから「 http://firstapp.local 」と入力して起動確認です。
スクリーンショット 2015-12-05 2.41.49.png

いい感じ!ここからやっとRails的開発へ・・・。

hardreggaecafe
A freelance engineer.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away