特にローカル開発からリモート サーバーに移行する場合に、Web アプリケーションの展開を自動化することを検討しています。
私たちの現在のスタックは、リモートで LAMP、ローカルで MAMP ですが、環境に関係なく、人々がこのタスクに何を使用しているかに興味がありますか?
ファイルの移動について話しているだけではなく、次のような他のタスクを検討することも意味していました。
- データベース スキーマの設定
- 構成の管理
- デプロイに必要なその他のタスク (ログ ファイルの作成など)
特にローカル開発からリモート サーバーに移行する場合に、Web アプリケーションの展開を自動化することを検討しています。
私たちの現在のスタックは、リモートで LAMP、ローカルで MAMP ですが、環境に関係なく、人々がこのタスクに何を使用しているかに興味がありますか?
ファイルの移動について話しているだけではなく、次のような他のタスクを検討することも意味していました。
以前の会社で使用されていたものの1つは、信じられないかもしれませんが、RPMファイルでした。ソフトウェアを構築すると、ソフトウェアのさまざまな部分がすべてRPMファイルにパッケージ化され、サーバーにデプロイされました。
RPMは恐ろしいハックですが、クライアントはすべてRed Hat Linuxを実行していたので(私たちの要件により)、それは完全に理にかなっています。選択肢があれば、DebianやUbuntuのようなシステムを使用して、システムがすべてプルできるリポジトリを設定します。それでも、それは数百のクライアントでうまく機能し、合計で数千のサーバーがありました。かなりきちんと。
可能な場合は、Antなどの自動展開を好みます。FTP展開でもかなり簡単に処理できます。デプロイメントの自動化は、自動ビルドと同様に、プロセスから推測作業とエラーを取り除き、定義上、新しいプログラマーがプロセスを理解するために必要な最低限のドキュメント(つまりビルドスクリプト)を提供します。
ライブにする必要がある場合は、「svnexport」を使用します。コードをリビジョン管理下に置き、テストボックスまたはローカルコンピューターで積極的に開発できるようにします。
まだ試していませんが、将来Fabricを使用することを考えています。
Fabric は、単純な pythonic リモート展開ツールです。
複数のサーバーにファイルをアップロードし、シェル コマンドを並列または順次に実行するように設計されています。これらのコマンドは、タスク (通常の Python 関数) にグループ化され、「fabfile」で指定されます。
それは少し馬鹿げた Capistrano に似ていますが、それは Python であり、Rails アプリケーションをデプロイすることを想定していないことと、'put' コマンドが機能することを除いて異なります。
Capistrano とは異なり、Fabric は小さく、軽く、簡単に変更でき、特定のフレームワークに縛られないことを望んでいます。
Capistranoは、この種の作業に非常に適しています。これは Ruby on Rails エコシステムから生まれ、当初は Rails アプリのデプロイに非常に強く結びついていました。多くの人がリモート サーバー コントロールに便利であることに気付いたので、もう少し汎用的になりました。
カピストラーノは追加のセットアップなしで次のことを行います。
そして、これらすべてがロールバック機能を備えています。
別の良いオプションは、オペレーティング システムのパッケージング システム (RPM、deb/apt など) を使用することです。これには、オペレーティング システムとそのポリシーに関する十分な知識が必要になる傾向がありますが、自分が何をしているかを知っていれば、他のツールとうまく適合します。
私は.NETの人なので、CruiseControl+nantです
しかし、 JetBrainsTeamCityについて素晴らしいことを聞いたことがあります。
rsync->優れたツール
ただし、答えは環境によって異なります。ソース管理には何を使用していますか? ビルドシステムには何を使用しますか? 等。
Web サーバーのデプロイメントは、変更されたファイルに応じて「cp」コマンドにすぎません。変更されたファイルを追跡し、それらのファイルをソース管理からプルしてから、それらの変更をプッシュするプロセスを構築する必要があります。PHP ファイルを扱っている場合、プッシュするファイルをどのように判断しますか? それが問題です。あなたはそれを解決します、あなたは大丈夫です。ファイルを cp して「デプロイ」するツールは簡単な部分です。