スポンサーサイト

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でホスト側での変更内容を都合よく優先してくれっていうのは無理じゃね?と心配してます。


      スポンサーサイト

      0

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

        コメント
        コメントする








           

        PR

        calendar

        S M T W T F S
           1234
        567891011
        12131415161718
        19202122232425
        2627282930  
        << November 2017 >>

        twitter

        selected entries

        categories

        archives

        recent comment

        • 結局CodeIgniter用汎用Modelクラス&汎用CRUDスクリプトを書きました
          プログラマー
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          よし
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          ななうぇぶ
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          よし
        • icu4.4以上が用意できないサーバーでSymfony2.3以上を使う方法
          よし
        • WindowsのPCで開発するphperがxhprofを使う方法
          ななうぇぶ
        • WindowsのPCで開発するphperがxhprofを使う方法
          川本
        • [バッドノウハウ]Symfony2で別テーブルの集計項目を一覧に含めたいとき
          よし
        • Symfony Advent Calendar JP 2012 day 14 - vendorをcomposerで管理しているプロジェクトにcomposerを使わずにバンドルを追加したときのautoloadの書き方
          77web
        • Symfony Advent Calendar JP 2012 day 14 - vendorをcomposerで管理しているプロジェクトにcomposerを使わずにバンドルを追加したときのautoloadの書き方
          ktz

        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