1

真の実稼働環境にデプロイする準備をしています。私が本当と言うときは、サーバー上に他のがらくたがあり、実際に本番マシンになるための新しい大きなスライスを作成しているため、現在の本番環境がステージングされることを意味します。

capistrano-ext gemにより、デプロイレシピの分離が非常に簡単になりました。ただし、私が遭遇する問題の1つは、あるスライスから別のスライスにコードを取得することです。プロダクションに使用するステージングスライスにgitリポジトリを設定しています。フローは次のようになります。

ローカルで開発ローカルでテストローカルからステージにプッシュステージでテストステージから本番にプッシュ...

したがって、ステージングと本番の間に安全な接続を確立する方法が明らかに必要です。本番環境にデプロイすると、「アクセスが拒否されました(公開キー)」が表示されます。これが設定されていないため、エラーが発生します。この接続を確立するにはどうすればよいですか?本番サーバーでキーを生成し、ステージングに公開する必要がありますか?本番サーバーのどのユーザーがステージングサーバーに接続しようとしているのかを知るにはどうすればよいですか?

4

4 に答える 4

2

枝と多段カピストラーノはあなたの友達です。

git リポジトリの問題にアクセスできないプロダクションを解決するには、次を試してください…</p>

set :deploy_via, :copy

…これは、ローカルでチェックアウトし、tar ボールをプッシュすることでデプロイされます。

于 2009-10-12T22:33:49.687 に答える
1

Capistranoを使用する場合、ステージングと本番を区別するために、分岐またはバージョンのタグ付けがはるかにうまく機能することがわかりました。

たとえば、アプリケーションに「ステージング」および「本番」ブランチを設定し、ソース管理ツールを使用して、ある変更から次の変更への移行を管理します。デプロイ中は、通常どおりにデプロイしますが、メインブランチではなく特定のブランチを使用します。

ステージングから本番環境に直接プロモートする必要はありません。実際、ステージングマシンにアクセスできる人は誰でも本番サーバーにアクセスできる可能性があるため、これは悪い考えと見なされる場合があります。ほとんどの環境では、ステージングサーバーは実稼働サイトよりもはるかにカジュアルに扱われるため、セキュリティプロファイルは通常まったく異なります。

于 2009-10-12T21:58:52.537 に答える
1

本番サーバーでキーを生成し、公開をステージングに配置する必要がありますか?

はい。

本番サーバーのどのユーザーがステージング サーバーに接続しようとしているかを知るにはどうすればよいですか?

productionuser は、接続するユーザーになります (:user を参照)。staginguser は git url から取得されます (:repository を参照)。

使用するとき

set :deploy_via, :remote_cache

(これがデフォルトです)、2 つの ssh 接続が実際に発生しています。1 つ目は、ローカル マシンから本番環境までのもので、レシピで構成された「ユーザー」を使用します。

set :user, 'www-data'

2 番目の ssh 接続は、本番環境で、そのユーザーによって git オリジンに対して行われます。したがって、git origin がステージングにある場合、本番ユーザーはステージングに接続して git からコードをプルしようとします。

set :repository, "staginguser@staging.com:project.git"

これを試してください:ユーザーとして本番環境にsshします。次に、失敗したコマンドを手動で実行します。「許可が拒否されました」というメッセージが表示され、パスワードのプロンプトが表示される場合があります。ステージング サーバー ユーザーの公開鍵を実稼働ボックスに追加すると、うまく機能するはずです。

于 2009-11-04T20:59:26.030 に答える
0

次のものもあります。

set :gateway, 'staging server ip'

これにより、ファイアウォールで保護された実稼働ボックスまでずっとトンネリングできるようになります。ただし、ステージングからデプロイする場合は、ステージング ボックスにキーを設定する必要があります。

余談ですが、ホームボックスからこのプロセス全体を実行できることが重要です。ステージングにはカピストラーノジェムは必要ありません。実際にログインしなくてもプロセス全体を実行できることを願っています。サーバ。これには、ステージング サーバーへのログインが含まれます。:)

2 つの間でデータのプッシュに問題がある場合、これをプロダクション構成だけに簡単に追加して、ステージングからデータを自動的に取得し、rsync でそれを上書きすることができます。

于 2009-11-05T17:43:08.977 に答える