普段は一人でフリーランサーとして働いていますが、今のところ自分のセットアップはかなりうまくいっています。それがチームにとって最適な設定かどうかはわかりません。
私はWindowsで開発し、ローカルマシンにLinux VMをセットアップし、本番マシン(CentOS、Nginx、PHP-FPM)と同じOS /スタックを実行します)。Sambaをセットアップし、 WebルートをWindowsのドライブにマップします。ローカルでは、http://someproject.local/
などのホストショートカットを設定します。チームと共有するには、IPアドレスまたはhttp://brandon/someproject
などの内部DNS名を使用します。
このワークフローへの可能な変更は、VMを内部仮想化サーバーの1つに移動することだと考えていました。システム管理者の1人がVMイメージに基づいて新しいイメージを起動し、そのようにしてすべての開発者が同じセットアップを使用するようにすることができます。また、すべてが適切にバックアップされることを意味します。
私が読んだもう1つの開発者VMは、各開発者がローカルドライブにマップするプロジェクトでいっぱいのフォルダーを取得し、他の開発者はhttp://thedevbox/developer_name/project_name
に移動してプロジェクトを表示できます。ただし、必要に応じてサーバースタックを操作することはできないため、このアプローチは嫌いです。
仕事でどのような設定を使用しますか?
これが Vagrant があなたのために管理するために設計されたものです。ベースボックスを設定すると、すべての開発者が1つのコマンドを実行するだけで同じ仮想イメージをインストールできます。ホストマシンの仮想イメージのポートを公開するように構成して、他のマシンが1行のコードでポートを表示できるようにすることができます。
私にとって、Linuxに対して開発する理由VMは、実稼働環境とまったく同じになるからです 。これは間違いなくあなたが望んでいることです。すべての開発者に開発者へのフルアクセスを与えることVMサーバースタックを台無しにすることはおそらくあなたが望んでいることではありません。あなたは誰かにそうしてほしくない後で依存するものを変更する-その後、すべての開発VM間ですべてのサーバーの変更を同期させることを心配する必要があります。これは、すべての開発者が仮想マシンソフトウェアの特異性を学習する必要があることも意味します。実際に多くの時間を消費しました。Sunの仮想ボックスを使用しましたが、セットアップにかなりの日数を要するかなりの問題がありました。独自の仮想ボックスVMを全員に提供し始めたので、誰もがそれがどのように機能するかを理解するのに苦労しました、それを設定する方法など。私が働いていた別の場所では、すべて同じ開発Linuxボックスを使用しましたが、それはうまくいきました:)
1つの大きなVM)を使用することでわかる欠点は、ローカルで実行されている個々のVMよりもはるかに大きく、誰かが保守し、で実行する必要があることです。ほとんどの時間稼働しているサーバーですが、これはおそらく良いことです。そのボックスのsysadminとして最高のsysadminを任命すれば、長期的にはすべての人の時間を節約できるはずです。
単一の大きなVMは、アプリケーションの多くのインスタンスが実行されているという点で運用サーバーとは異なります。運用には1つしかありません。サーバースタックで遊んで、何かが壊れたとしても、それは誰にとっても壊れています。
作成が安価(=簡単)な個々のVMを使用すると、試してみたり、壊したり、簡単に再起動したりできます。作業中の変更ごとに新しいVMを開始できます。n個の異なる構成で同じコードを同時にテストできます。
とにかく、VMがサーバー上のどこかにある場合は、バックアップと同期の手間を省くために、NAS for all /home/
]フォルダーを使用することをお勧めします。
Facebookは、VMの代わりに物理マシンを使用することを除いて、同じアプローチを使用します。マシンのプロビジョニングとイメージの再作成は簡単でセルフサービスであり、これは重要な部分です。