hkのweblog

ひよっこエンジニアがにわとりになるまでの軌跡

Vagrant上にLaravelの開発環境を作る

2年以上前にフレームワークを使わずにPHPで書いたサイトがあるのですが、久しぶりにAnalyticsを見たらまだ日に30PVくらいのアクセスがありました。
今ならもっと良いサイトにできそうな気がしたので大規模改修をしようと思い立ち、Laravelベースで再実装することにしました。
というわけで早速Laravelの開発環境を作ったので、経過をまとめておきます。

最初にやっておくこと

Homesteadのvagrant boxを追加

そもそもHomesteadとは

ざっくり言えば、Laravelの開発環境をまとめたBoxです。 Homesteadの公式サイトによれば、

Homesteadは、WindowsMacLinuxシステムで実行でき、Nginx Webサーバー、PHP7.0、MySQL、Postgres、Redis、Memcached、Nodeやその他、素晴らしいLaravelアプリケーションを開発するために必要な、クールなツールを全部含んでいます。

だそうです。
これさえ入れておけば大体は事足りそうです。

VagrantにHomesteadを入れる

vagrant box add laravel/homestead

途中でどの環境に入れるのか聞かれるので、virtualboxを選択します。そこそこ時間がかかります。

Homesteadのダウンロード&初期化

任意のフォルダに移動し、git cloneします。

git clone https://github.com/laravel/homestead.git Homestead

git cloneしたら新しくできたディレクトリ(Homestead)に入って、以下のコマンドをたたきます。

bash init.sh

これでHomestead内にHomestead.yamlという設定ファイルができるはずです。

設定ファイルの書き換え

Homestead.yamlの書き換え

先ほどできたHomestead.yamlを書き換えます。最初は以下のような状態のはずです(バージョン次第で違うかも)

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/code
      to: /home/vagrant/code

sites:
    - map: homestead.app
      to: /home/vagrant/code/public

databases:
    - homestead

# blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar

# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

このうち、書き換えるべきはfoldersとsitesの2項目です。SSHキーを作る場合も変更が必要ですがこの記事では割愛します。

foldersはvagrant上のディレクトリにローカルディレクトリをマウントする設定です。書き換え方は以下のような感じ。

folders:
    - map: ~/[ローカルでプロジェクトを作る場所]/[これから作るプロジェクト名]
      to: /home/vagrant/code

次にsitesです。こちらはサイトとして公開するディレクトリの設定です。

sites:
    - map: homestead.app
      to: /home/vagrant/code/[これから作るプロジェクト名]/public

mapのところは任意のものに変えても大丈夫みたいです。

hostsの書き換え

macの場合、/etc/hostsを書き換えます。windowsでは場所が違うみたいです。
自分の場合、ルート権限が必要だったのでsudo vi hostsで書き換えました。

192.168.10.10   homestead.app

先ほどHomestead.yamlに設定したmapと連動するので、IPと名前は合わせておきます。

vagrantの起動とプロジェクト作成

vagrantの起動

先ほどHomesteadをgit cloneしたディレクトリに移動してvagrant upします。
ちゃんと起動すればvagrant sshvagrant環境に入れます。

プロジェクト作成

vagrant環境に入ったらcodeディレクトリに移動し、以下のコマンドでLaravelのプロジェクトを作成します。
Composerを使うんですね。

composer create-project laravel/laravel --prefer-dist [任意のプロジェクト名]

--prefer-distは安定版を入れるというオプションだとか。(Composerの使い方よく知らない…)

Laravelが導入できたか確認する

方法は簡単です。vagrantを起動した状態でHomestead.appにアクセスして、こんな画面が表示されれば成功です。 f:id:h2r4t:20170923233312p:plain なお、うまくいっていない時は「no input file specified」と表示されます。
おそらくHomestead.yamlかhostsの設定の問題なので、このあたりをよく確認しましょう。
おつかれさまでした。
さてさて、Laravelは素人ですが、これからいい感じのサイトを作れたらいいなあ。