web-dev-qa-db-ja.com

gitとgithubを使用して開発サーバーでマルチユーザーを設定する方法

私はランプアプリケーションに取り組んでいます。 LiveとDevの2つのサーバー(Debian)があります。

私は常に開発メインに取り組んで、新しい機能を追加し、バグを修正しています。
すべてがうまくいったら、関連するコードをLiveシステムにコピーします。データベース(mysql)は各マシンに対してローカルです。

これは本当に基本的な設定であり、ワークフローを少し改善したいと思います。バージョン管理にはgitとgithubを使用しています。確かに、私は実際に1つのブランチしか使用していません。彼らは、異なる時間にコードに取り組む3人の異なる開発者である可能性があります。私たちは皆、同じLinuxユーザー名を使用して開発サーバーに接続し、必要に応じてコードを直接編集します。私は通常、1日の終わりにコードをコミットしてgithubにプッシュします。

ローカルマシンでは機能しないApacheおよびサブドメイン構成が多数あるため、このコードをローカルマシンで実行するのは簡単ではないため、ローカルではなく開発サーバーで作業することが重要です。

今すぐメイントランクと大きなコードを書き直すブランチが必要なので、新しいプロセスを作成する必要があります。

これを行うための最良の方法は何ですか。開発者ごとに異なるUNIXログインを作成し、変更がある場合は開発サーバーに異なる作業領域を設定する必要がありますか?例えば.

/ var/www/mysite_derek/var/www/mysite_paul/var/www/mysite_mike

私の考えでは、メインブランチからプルを実行し、そこに独自のブランチを作成してマージし直すことができます。これがローカルのgitおよびgithubでどのように機能するかはわかりません。

別のgithubユーザーアカウントも作成する必要がありますか?.

私はこれを「正しい」方法で、多くの潜在的な開発者がいることの将来の証拠にしたいのですが、それを過度に複雑にしたくもありません。私はシンプルでエレガントなソリューションが好まれます。

推奨事項や提案はありますか?

3
Derek Organ

約12人の開発者が使用するソリューションは次のとおりです。これは非常にうまく機能し、サーバーの構成を変更することなく柔軟なセットアップを実現します。ネットワークの待ち時間とサーバーストレージの速度が原因で、おそらく40〜50開発に拡張できないでしょう。

/ var/www /ツリーをSamba経由で共有するため、WindowsクライアントはローカルIDEおよびVCSクライアントを使用してLAMPサーバーで編集できます。 Linuxサーバーにアカウントを持っている人はいません。

次のようなディレクトリ構造を作成します。

/var/www/mysite.com/www/derek/
/var/www/mysite.com/www/paul/
/var/www/mysite.com/www/mike/

内部DNSで、**。dev *がランプサーバーのIPアドレスを指すワイルドカードレコードを作成します。ここでは123.45.67.89と想定しています。

Apacheで、次のような仮想ホストを定義します。

<VirtualHost 123.45.67.89>
   ServerName lamp.dev
   ServerAlias *.dev
   VirtualDocumentRoot /var/www/%-3.0.%-2/%-4/%1/
</VirtualHost>

重要な部分はServerAliasワイルドカードです。これにより、この仮想ホストは「.dev」で終わるすべての着信要求に応答します。もう1つの重要なものはVirtualDocumentRootです。これは複雑に見えますが、それほど悪くはありません。着信ホスト名をパーツにカットし、パーツからDocumentRootを構築するだけです。あなたは ここでそれについてもっと読む

これで、すべての開発者が http://derek.www.mysite.com.dev/ にアクセスして、個人用のマイサイトのコピーを表示できます。

新しいサイト、サブドメイン、または開発者を追加することは、Samba共有に適切なディレクトリを作成する場合にすぎません。

本番サーバーにデプロイする場合は、scpを捨てて、 Capistrano と優れた集中型Webフロントエンド Webistrano を確認することをお勧めします。 Capistranoは少しRails中心ですが、PHPなど)に適応するのに数行しかかかりません。Webistranoは、バージョン管理から直接サイトを展開または更新できる中央GUIを提供します。ボタンを押すだけで、簡単にスクリプト化された展開が可能であり、問​​題が発生した場合に確実に繰り返してロールバックできるため、無視しないでください。

5
Martijn Heemels