2010-12-29 16 views
5

私は現在実行中のwww.livesite.comというウェブサイトを持っています。私はhttp://localhostと私のローカルマシン上のWebサイトの新しいバージョンを開発しているし、www.testsite.comへの私の変更をコミットし、ここで私はlivesite.comサーバー上のサイトをテストするだろうが、別のドメイン(同じ環境ライブサイトとしてではなく、別のドメインの下に)。localhost +ステージング+運用環境?

今、私は新しいバージョンをlivesite.comにリリースする準備が整いました。初めての方は簡単ですが、私は&をtestsite.comからlivesite.comにコピーしてコピーすることができます(その最良の方法はわかりません)。

私は、テストサイトとして私がアップデートをプッシュし、テストして、一度liveites.comへの移動を満足させるテストサイトとして残したいと思いますが、新しいサイトが開設された後にそれを行う方法がわかりません。ディレクトリ全体を貼り付けるのが正しい方法だと思うし、livesite.comの現在のユーザーの操作を壊すだろう。

また、私のsvnの履歴をtestsite.comに保存したいと思います。 SVNでこれを行う正しい方法は何ですか?どうもありがとうございます!

+0

完全な回答はありませんが、Weployはお客様のニーズに合っている可能性があります。http://dev.wepay.com/blog/2010/11/30/weploy-wepays-deployment-tool/ – scoates

+0

は良いツールのように見えますが、ありがとう、 – Kentor

答えて

5

その他のハドソンやウェイチョンの回答は良いです。彼らは以下のものより多くの問題をカバーしています。つまり、次のことで十分でしょう。

あなたはそれが過度だと感じたら、ここではSVNとそれをやっている貧しい人の方法と少し創造的なシステム管理です。

あなたのproudctionドキュメントのルートをシンボリックリンクにしてください。実際のディレクトリではありません。あなたはこのような何か持っている意味:

/var/www/myproject-1-0-0 
/var/www/myproject-1-1-0 
/var/www/myproject-1-1-1 
/var/www/html -> myproject-1-1-1 

する。これは、あなたが提供されているものを上書きすることなく生産(たとえば、myprojectに-1-1-2)上にコードをチェックアウトできることを意味します。そして、あなたは即座に近いような何かを行うことによって、コードベースを切り替えることができます。私は、さらに生産ボックスにあなたのトランクのSVNのチェックアウト/ SVNのエクスポートを行っていないお勧めします

$ rm html && ln -s myproject-1-1-2 html 

。代わりに、前もってブランチを作成してください(myproject-X-Y-Zのような名前)。そうすれば、生産コードを非常にストレスの多い調整が必要な場合は、ブランチに戻して、トランクに戻すことができます)

私はこれをたくさん行います。よくただし、いくつかの大きな欠点があります。

主に、データベースの移行やその他のアップグレードスクリプトをすべて自分で処理する必要があります。スクリプト(普通のSQLやそれ以上のもの)をお持ちの場合、それらを実行するにはどのように最適なのか考える必要があります。うまくいけばちょうど1分のダウンタイムは悪い考えではないかもしれません。 (/ var/www/mainenance)の周りに "メンテナンスサイト"を置いて、必要な場合はシンボリックリンクを数分間指しておくことができます。

この方法は、たとえばWewareと同じくらいクールではありませんが、比較的小規模なプロジェクト(単一のサーバーで、巨大なデータベースではありません)では、しばしば十分であり、死んでしまいます。

+0

私はこれが今では最も簡単で簡単な解決策になると思います。ありがとうございました – Kentor

+0

実際には 'softlinksの' rm html'の代わりに 'unlink html'をしたい – Jakub

2

私の答えは、物事を少し複雑に、しかしここに行くだろう:私はこのタイプのシナリオのためHudsonを使用することになり

。あなたは自動デプロイ/はSVNプロセスから新しいを追加/現在のディレクトリを一掃持っている

ハドソンができるようになります。開発について心配することなく、ある場所から別の場所への悩みや配置についてはあまり心配する必要はありません。

ハドソンをセットアップする方法と、に設定する方法について少しは知っておく必要があります。 PHP for Hudson

を始める方法

私は私が言ったようにそれが正しい軌道、仕事のビットであなたを得るべきだと思いますが、後にオフに支払っています。

+0

面白いツール、ありがとう! – Sandwich

+0

私たちはハドソンをJava用に使用していますが、PHP用に使用できるかどうかはわかりませんでした。もう少し時間があると、それをもっと詳しく見ていきます。ありがとう – Kentor

+0

ハドソンはJavaのフードではありますが、Java/PHPのデプロイメントだけではありません。 – Jakub

1

サーバーサイドコードのみが変更された場合、コードをコピーしても問題は解決しない可能性があります。しかし、そこでさえ、中途半端な交流の可能性について考える必要があります。クライアント側のコードが変更された場合、特にAjaxを頻繁に使用している場合は、現在のユーザーにページをリロードする必要があります。データベースも変更されている場合は、データベース変更スクリプトを適用している間にデータベーストランザクションが発生していないことを確認してください。

いずれの場合でも、継続的な統合ツールを使用しているかどうかにかかわらず、私はこれらの変更を適用するためにダウンタイムに行くのが最も安全だと考えています。ユーザーがサイトに「ベータ」ステッカーを貼っている理由の1つは、すべてのユーザーをログオフして通知しなくても変更を適用できるようにすることです。彼らがそれを頻繁にやっていない限り、彼らはそれを取り除くこともできます。ベータテストを終了すると、変更を適用すると、事前にダウンタイムをアナウンスしてから、すべての変更を適用するために30分から数時間のウィンドウが表示されます。

OSやシステムソフトウェアのセキュリティ上の欠陥にパッチを当てたり、ハードウェアなどを追加したりするような基本的な事柄については、ロードバランシングが存在し、パッチが1つずつ適用されるとダウンタイムを避けることができます。

+1

多くのサイトがこれをやっているのを見たことがありますが、数分のダウンタイムがあると思います私のウェブサイトのケースではありがとうございます – Kentor

関連する問題