スポンサーサイト

0

    一定期間更新がないため広告を表示しています


    • 2014.12.23 Tuesday
    • -
    • -
    • -
    • -
    • -
    • by スポンサードリンク

    windows+vagrantでSymfony2プロジェクトの開発環境を作るノウハウ的なもの(Re:Vagrant で Symfony 開発)

    0
      4/19、Symfony勉強会 #9に行ってきました。
      全体の流れや私自身の発表については置いておいて、@karakaramさんのLT「Vagrant で Symfony 開発」に関連して、windows環境でVagrantを使ってSymfony2開発をしてきた珍種の一人として、ぜひ情報共有をしておきたいと思いました。
      (※私自身については、LT冒頭でも言いましたが、最近就職(!)してマカーに転向したので今後あまりwindowsを開発機として使う機会はなくなりました)
       

      前提

      一人で開発
      開発機のOSはWindows7 professional(メモリが64GBというモンスターマシン^p^)
      gitはmsysgit利用
      主に使うフレームワークはsymfony1又はSymfony2 たまにwordpressとかcakeとか
      visual c++等の自力でphp及びその拡張モジュールをビルドできる環境は無い
      新規開発案件(PHP5.4/5.5)と保守案件(PHP5.3)を使い分けたい
      開発に使うIDEはphpstorm
      原則としてTDDするのでphpunitを使いたい(symfony1の場合はlime使う)

      Vagrant1.5未満の場合

      使い方

      *プロジェクトルートをsynced_folderにする
      *コードはホスト側のphpstormで書き、テストはゲスト側のコンソールで手動実行(作業中は、phpstormとmsysgitのGit Bashとvagrant sshの三窓を行ったり来たり)
      *Symfony2のassets:installは常に--symlinkなしで使う
      (*symfony1のplugin:publish-assetsはホスト側で実行する)
      *composer installはゲスト側で実行(synced_folderでホスト側にも共有されてくるので、IDEはそれを参照できる)

      満足

      *本番とのphpバージョン差異に悩まされることがなくなった
      *windows版php特有の問題(strftimeのフォーマット文字列とか)に悩まされることがなくなった
      *よく言われる速度問題はホスト側の超性能でカバーできてた(と、思う。特に速度で不満感じたことなし)

      不満

      *jsやcssを更新したときにassets:installを手動実行するのが面倒 *シンボリックリンクが必須のバンドルが使えない

      Vagrant1.5以後の場合

      使い方

      *プロジェクトルートをtype: "rsync"でsynced_folderとして指定
      *ホスト側のwindowsはcwrsyncを利用してrsyncコマンドを使えるようにしておく
      *.git .idea app/cache/* app/log/* bin vendor web/bundlesを:rsync__excludeに指定(assetic使う場合はweb/assetic web/js web/cssも除外した方が良いかも)
      *利用するboxにもよるが、hashicorp/precise64の場合は、初回vagrant up時にいったんVagrantfile上のsynced_folder設定とprovision設定をコメントアウトし、ゲスト側rsyncのバージョンをホスト側rsyncのバージョンと合わせてから、synced_folder設定とprovision設定を再度有効化してvagrant reload --provisionを実行する
      *作業中に必要なウィンドウがphpstormとmsysgitのGit Bashとvagrant sshの三窓から、rsync-auto専用のGit Bashも加えた四窓に増えた
      *composer installはゲスト側のプロジェクトルートで実行後、--no-scriptつきでゲスト側の/vagrantでも実行する(IDEで補完を利用するために必要)

      満足

      *シンボリックリンクが必須の一部のバンドルを使っていてもwindowsホストで問題なく開発できるようになった

      不満

      *rsync-autoにしておくと、excludeにしているにも関わらず時々ゲスト側だけにあってホスト側にないファイル・ディレクトリ(vendorなど)が削除されてしまうことがある

      トラブルシューティング

      Vagrant1.5.2以下でrsyncしたディレクトリのパーミッションがおかしい場合→https://github.com/mitchellh/vagrant/issues/3256
      Vagrant1.5.2以下でrsyncがNo such file or directoryで失敗する場合→https://github.com/mitchellh/vagrant/issues/3230(4/21 12:40訂正1.5.3でも発生してました)



      利用バンドル数4〜10ぐらいの複数案件で試したのですが、rsyncを有効にしてsynced_folderの共有が速くなったという感じは特にありません。多少は速くなってるのかもしれませんが、少なくとも体感できるレベルではないです。(もともとのPCスペックも関係あるかもですが)
      今後、Vagrantに双方向rsyncが理想的な形で実装されればいいですが、現時点ではいろいろ手動だったり注意が必要だったりで、素人にはおすすめできない(キリッ)ってやつかもしれません。個人的には双方向rsyncでホスト側での変更内容を都合よく優先してくれっていうのは無理じゃね?と心配してます。


      1

      PR

      calendar

      S M T W T F S
        12345
      6789101112
      13141516171819
      20212223242526
      27282930   
      << April 2014 >>

      twitter

      selected entries

      categories

      archives

      recent comment

      • djangoテンプレート上でmodelのメソッドに引数を渡す方法(djangoで出勤簿アプリ試作中♪)
        GavannITサービス-なりとみ
      • 私がそれでも名古屋市に住み続ける理由を6つにまとめてみた!
        bose wireless speaker
      • FastCGIでdjango…400エラー???
        levi's
      • さくらインターネットdjangoが突然500エラー!?(Pythonバージョンアップされてた
        salomon running shoes
      • 私がそれでも名古屋市に住み続ける理由を6つにまとめてみた!
        louboutin shoes
      • FastCGIでdjango…400エラー???
        yeezy boost 350
      • さくらインターネットdjangoが突然500エラー!?(Pythonバージョンアップされてた
        jordan 11
      • Silexでエラーページをカスタマイズする方法 : Symfony Advent Calendar 2011 - day 12
        pandora jewelry
      • django対symfony 日本語メール送信(その1 symfony編)
        nike air vapormax
      • 解決!XREAでCGI版Pythonを使ってdjangoを動かす(人柱?)
        kate spade

      recent trackback

      • HTMLの表(TABLE)のセル(TD)に斜線を引くjavascriptライブラリ slash.js 作っちゃいました
        常山日記
      • django対symfony 日本語メール送信(その1 symfony編)
        CPA-LABテクニカル
      • CodeIgniterでユーザー認証
        されどLAMPな日々
      • 久々にdjangoを最新版にしたらHTMLがエスケープされちゃった!!(解決済み)
        常山日記
      • FastCGIを諦めてmod_pythonを使う。Apacheのアップグレード
        サーバー用語集
      • さくらインターネット、sqlite3でdjango@CGI版を使う際の設定メモ
        常山日記
      • さくらインターネット スタンダードプランでdjango使ってる方、DBは?
        mitszoの日記
      • python多次元リストをsort(並べ替え)する方法?
        mitszoの日記
      • フォームから送信した値とrequest.POSTの挙動($_POST@PHPとの比較)
        Humming Via Kitchen
      • 日本語テキストをtruncate@django(Python全般にも??)
        常山日記

      recommend

      links

      profile

      search this site.

      others

      mobile

      qrcode

      powered

      無料ブログ作成サービス JUGEM