11

継続的な統合と単体テストのために、Cruise Control の上で実行されるPHPUnderControlを使用しています。また、PHPDocumentor を実行して phpdoc を生成するようにセットアップし、PHP Code Sniffer を実行してコーディング標準を強制します。しかし今、同じサーバー (Ubuntu) に何かをセットアップして、リモート サーバーへの展開を容易にしたいと考えています。私はすでにセットアップしているので、ビルドが成功するたびに、トランクからサーバーのプロジェクトフォルダー内のディレクトリにSVNエクスポートが行われます。

私は、構成済みのリモート サーバーに SSH 接続し、最新のエクスポートを tarball し、それをコピーし、untar し、移行を実行する小さなカスタム PHP スクリプトを作成することを考えていました。このような PHP スクリプトは、最終的に複数のサーバーへのスケーリングを開始する必要がない限り、最初はそれほど難しくありません。PhingFabricなどのシステムがあることは知っています。

私の質問は、誰かがこれらの経験があり、長所と短所を提供できるかどうかです。私は自分のサーバーに Phing のセットアップを開始しました。次に Fabric を試してみますが、それらをより広範囲に使用したり、拡張する必要があった場合は、フィードバックを提供できるかどうか疑問に思っていました.

4

6 に答える 6

8

PHP でCapistranoを使用しました (Ruby で記述されているため、Rails に近いものですが)。

使い方は本当に簡単ですが、それほど拡張する必要はありませんでした。ただし、さまざまなステージング/運用サーバーにデプロイしますが、これらのシナリオではマルチステージ拡張が役に立ちました。

ただし、ほとんどの Ruby と同じように、Capistrano を初めて使用し、それを使って何かトリッキーなことをしようとすると、混乱を招く可能性のある多くのフックと「魔法」があります。

他の展開ツールとの比較については、コメントできません。以前は Phing を使用していたことは知っていますが、なぜ Capistrano に切り替えたのかはわかりません。

于 2009-08-18T23:36:35.570 に答える
2

Capistrano が好きだけど、もう少し PHP 風にしたい場合は、Fredistrano をチェックしてください

一度 Phing を使用して自動ビルド (SVN エクスポート、Zend Guard エンコーディングなど) と展開システムを作成したことがありますが、使用するのが非常に面倒であることがわかりました。特別なタスクを書かなければならないときはいつでも、それを機能させるために多くのフープを飛び越えなければならないと感じました。

そのため、最近では、SVN チェックアウト、エンコード、SVN でのタグの作成、および rsync による展開を使用してビルドを行う単純な bash スクリプトを作成するだけです。それはローテクかもしれませんし、Phing にはいくつかの優れた機能があるかもしれませんが、少なくとも私の邪魔にはなりません。

于 2009-08-23T08:57:08.087 に答える
1

phingを使っているので重宝します。私たちはパッケージングには使用しませんが、あなたが探していることを実行させるのはそれほど難しいことではありません。主に、キャッシュのクリア、開発サイトの構築、その他の開発支援タスクなどの一般的なタスクに使用します。それは大きな助けになりました、そして私が集めることができることから、それはアリが持っているすべての機能を持っていないかもしれないけれども、それはアリのクローンであるように思われます。

于 2009-08-19T02:14:39.167 に答える
0

私はこのために独自のrsyncのようなツールを作成しました。これは、第三世界の非常に悪いインターネット接続で作業していて、rsyncが機能しないように、あらゆる種類の障害と飢えた接続があるためです。

リモートシステムでは、移行を実行する前に、少なくともバックアップを実行する小さなスクリプトを作成する必要があります。

より良いのは、Webホストシステムで完全に独立したミラーシステムを使用しており、移行後にいくつかの小さいが基本的な単体テストを含めることです。次に、ルート切り替えを実行して、更新されたWebサイトをオンラインにします。これには、移行中に読み取り専用モードでいくつかの対話型サービスを実行する必要があります(残念ながら、多くの人が実装していない機能です)。

しかし、まず第一に、これを行う価値があるかどうかを考えてください。四半期ごとに更新するだけであれば、紙の簡単なチェックリストで十分です。

于 2009-08-21T08:39:17.203 に答える
0

このような展開システムを実装する場合は、上記で概説したものとは少し異なるソリューションを選択する可能性があります。システム上でローカルに実行され、リモートサーバーのリストに接続してそこで「機能」するコードを用意する代わりに、アップデータモジュールに残りのコードをパックして、オンデマンドでサーバーから更新データをプルするようにします。 (むしろ、そうするように「言った」とき)。そうすれば、自分の側で心配する必要がはるかに少なくなります(要求されたときに、更新されたコードをhttp経由で提供するだけで、残りはリモートサーバーが処理します)。ちょうど私の2セント。

于 2009-08-18T18:21:37.953 に答える