Vagrantを用いたLaravel環境構築


LaravelはHomesteadの環境を公式で提供されているため、

自分で環境作る必要はないのだが、

ある程度環境を柔軟に自分で作れるようになっておきたかったので。

 

// プロジェクトルートに以下のVagrantfile配置
https://github.com/addictionwhite/vagrant1
// centos7.1のboxを使用しているので、なければ追加しておく(これVagrantfileで自動化できそう)
vagrant box add centos7.1 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box

// 仮想環境立ち上げ
vagrant up

// Hello world確認(プロビジョニングファイルで用意されている
http://192.168.33.10/

// 仮想環境ログイン
vagrant ssh

// ドキュメントルート配下でLaravelプロジェクト作成
cd /var/www/html/
// Laravelコマンド使用しないなら不要かも
// composer global require "laravel/installer"

// Laravelプロジェクト追加
composer create-project --prefer-dist laravel/laravel blog


// document Root変更
sudo vi /etc/httpd/conf/httpd.conf
  ----------------
  DocumentRoot "/var/www/html"

  →DocumentRoot "/var/www/html/blog/public"
  ----------------
  <Directory "/var/www">

  →<Directory "/var/www/html/blog/public">
  AllowOverride None
  # Allow open access:
  Require all granted
  </Directory>
  -----------------

// Apache再起動
systemctl restart httpd.service

// 作成したLaravelプロジェクト配下にてcomposer install 

// *具体的な時間は計っていないがかなり時間食った
composer install
  *composer installがタイムアウトしてしまった場合の注意
  タイムアウト後の処理としてディレクトリを削除しようとしているが、
  裏でgit cloneが動いているのでディレクトリ消えずにエラーになっているとのこ と。
  // composerのタイムアウトを一時的に伸ばす(デフォルト300秒)
  export COMPOSER_PROCESS_TIMEOUT=2000
  // 裏で動いているgitプロセスを切る
  ps aux | grep git
  kill xxxx(プロセスID)

// アプリケーションキーにランダムな文字列を設定
// (ドキュメントには"ComposerかLaravelインストーラを使ってインストールしていれば、php artisan key:generateコマンドにより、既に設定されています。"
// とあるが、以下のコマンドを叩かないと動かなかった
php artisan key:generate

// 以下のURLをブラウザでアクセス。Laravelのトップページを確認できれば成功
http://192.168.33.10/

 

メモ

 DBへの接続、動作検証がまだ。
 Redisやmemcachedのインストールがまだ。
 Laravelプロジェクトのインストールも自動化するべきかもしれないが、
 Laravelプロジェクト特化というよりは、PHPの汎用的な環境を作りたかったので、どこまで自動化の範疇にいれるか微妙。
 ApacheでなくNginxの方がいいかもしれない(Homesteadがそうであったため)。


 少しずつブラッシュアップしていきたいところ。

 


// 参考

// 公式
https://laravel.com/docs/5.5/installation

// composer で Could not delete エラーで先に進めなくなった場合の対処法
https://qiita.com/waterada/items/b47daf501e5fe1a70743

// composer install でタイムアウトする場合の対処法
https://qiita.com/nyanchu/items/d3f3a278e8953cb2ebf3
// Vagrant入門~仮想Webサーバ構築~
http://ferretdayo.hatenablog.com/entry/2016/03/12/000753