9

ここ 2 週間、私はオフィスで Git を実装しようとしてきました。Web 開発に推奨されるセットアップについて私を混乱させたのは、ドキュメントの欠如ではなく、豊富な例、チュートリアル、および git のさまざまな使用法です。

まともなセットアップを念頭に置いていると思いますが、さらに別の構造に飛び込む前に、経験豊富な人に確認したいと思います. 私は次のことを念頭に置いています:

  • ワークステーションがローカル ステージング サーバーにプッシュする (A)
  • ローカル ステージング サーバーは gitolite と連携して役割を適切に分割します
  • フックは、ステージング サーバーへの変更を本番サーバーに自動的にプッシュします (B)

これを以下に視覚化します。 ここに画像の説明を入力

これは理にかなっていますか?私たちはさまざまな小さな PHP Web サイトを持っていますが、それほど複雑なものはありません。私が持っている疑問は次のとおりです。

  • (B) にはどのような「フック」を使用すればよいですか?
  • 本番サーバーでも gitolite を実行する必要がありますか? サーバー (ステージング サーバーのフック) に物をアップロードするのは 1 人のユーザーだけなので、そうすべきではないと思いますが、よくわかりません。
  • 私の出発点は、本番サーバーにすべての Web サイトがあり、ステージング サーバーやワークステーションにはまだありません。初期セットアップ時にステージングとワークステーションに「プル」する便利な方法は何ですか?

さて、次の質問は追加の考えであり、現時点ではそれほど重要ではありませんが、もっと知っている場合はあなたの考えを共有してください:

  • 簡単にするためにgit push、ワークステーションから実行して、ステージング サーバーと運用サーバーの両方を更新できるようにしたいと考えています。しかし、ライブに移行する前に、ステージング サーバーのみを更新し、最初にそこにあるものをチェックすることが役立つ場合があります。簡単な解決策はありますか?

  • 実際には、1 つだけでなく、複数の異なる運用サーバーがあります。ただし、ステージング サーバーは 1 つだけです。git が自動的に適切なサーバーにプッシュするように、さまざまな運用サーバーを構成する方法はありますか?

あなたの考えを共有してくれてありがとう!

4

3 に答える 3

3
  • (B)にはどのような「フック」を使用すればよいですか?

これを行うには、受信後または更新後のフックを使用する必要があります

  • 本番サーバーでもgitoliteを実行する必要がありますか?サーバー(ステージングサーバーのフック)にアップロードするのは1人のユーザーだけなので、すべきではないと思いますが、よくわかりません。

あなたが言及した理由のために必須ではありませんが、gitoliteはセットアップが非常に簡単なので、害はありません

  • 私の出発点は、すべてのWebサイトが本番サーバーにあり、ステージングサーバーにもワークステーションにもまだないということです。初期設定時に、ステージングとワークステーションにそれらを「プル」する便利な方法は何ですか?

それらのそれぞれについて、これらのコマンドを実行するだけです。

cd /path/of/project
git init
# optionally create and edit your .gitignore file before the next step
git add .
git commit

次に、ステージングサーバーからgit cloneコマンドを実行します。

  • 簡単にするために、ワークステーションからgit pushを実行し、ステージングサーバーと本番サーバーの両方を更新できるようにすることをお勧めします。ただし、稼働する前に、ステージングサーバーを更新し、そこにあるものを最初にチェックするだけで便利な場合があります。簡単な解決策はありますか?

このタスクの簡単な解決策はわかりませんが、自動化された本番環境の展開を使用したソリューションは好きではありません。何かがうまくいかず、本番サイトが破損する可能性があるため、citizenconnの複数のリモートソリューションをお勧めします。ギトライトとパーミッション処理を使用すると、物事をより適切に管理できます。誰でもステージングサーバーにプッシュできますが、制限されたグループの人々は本番サーバーにプッシュできます。

  • 実際には、1台だけでなく複数の異なる本番サーバーがあります。ただし、ステージングサーバーは1つだけです。gitがそれらを適切なサーバーに自動的にプッシュするように異なる本番サーバーを構成する方法はありますか?

本番サーバーのアドレスをプロジェクト内のテキストファイルに保存してから、そのファイルのコンテンツをgitフックで使用できます。

于 2011-08-16T00:22:11.733 に答える
3

本番Webサーバーでgitサーバーを実行する必要はありません。また、本番サーバーにもgitリポジトリファイルは必要ありません。個人的には、物事をシンプルに保ち、展開プロセスとSCMプロセスを混同しないようにするのが好きです。

だから私はgitについてのあなたの質問に答えるつもりはないと思いますが、私はすべてのWebプロジェクトにgitを使用しています、そしてこれが私が使用するデプロイメントセットアップのタイプです:

私は通常、SCMにのみgitを使用し、リポジトリをホストするために内部サーバーを使用します(これは、ステージングサーバーと同じマシンである可能性があります)。

デプロイメントには、rubyが好きなので、通常はrakeスクリプトを使用します。しかし、bashスクリプトも同様に機能します。bashバージョンは次のようになります。

# deploy_staging.sh
rsync -va --delete --exclude-from excludes.txt ./ stagingserver:/htdocs/www.mysite.com/

# deploy_prod.sh
rsync -va --delete --exclude-from excludes.txt ./ realserver:/htdocs/www.mysite.com/

# deploy_all.sh
bash deploy_staging.sh || exit $?
bash deploy_prod.sh

# excludes.txt
.git
deploy_*.sh
excludes.txt

サーバーへの公開を許可されている開発者は、サーバーマシンの適切なアカウントにSSHキーを追加します。

素晴らしくシンプルで、複製が簡単で、フックの設定をいじくり回す必要がなく、すべてがリポジトリにうまく含まれています。デプロイするものを明確に制御でき、適切なネットワークがあればどこからでもチェックアウトしてデプロイを実行できます。アクセス。

于 2011-08-16T00:14:23.513 に答える
3

私は似たような設定をしていて、複数のリモートを使用することを好みます。したがって、フックを使用する代わりに、「prod」をリモートとして追加し、「uat」をリモートとして追加します。そうすれば、本番環境に移行したい場合、次のことができます。

git push prod
git push uat
于 2011-08-16T00:14:27.457 に答える