6

特にローカル開発からリモート サーバーに移行する場合に、Web アプリケーションの展開を自動化することを検討しています。

私たちの現在のスタックは、リモートで LAMP、ローカルで MAMP ですが、環境に関係なく、人々がこのタスクに何を使用しているかに興味がありますか?

ファイルの移動について話しているだけではなく、次のような他のタスクを検討することも意味していました。

  • データベース スキーマの設定
  • 構成の管理
  • デプロイに必要なその他のタスク (ログ ファイルの作成など)
4

7 に答える 7

3

以前の会社で使用されていたものの1つは、信じられないかもしれませんが、RPMファイルでした。ソフトウェアを構築すると、ソフトウェアのさまざまな部分がすべてRPMファイルにパッケージ化され、サーバーにデプロイされました。

  1. クラスター内のマスターサーバーには、すべてのサーバーとその役割のリストがあり、各サーバーに必要なパッケージを決定するために使用されます。
  2. デプロイフェーズでは、各サーバーのバージョンを確認し、アップグレードが必要なサーバーを特定します。各サーバーは、必要な新しいパッケージのコピーを取得します。
  3. 各サーバーには、インストール前とインストール後のチェックとタスクを管理するデプロイスクリプトによってパッケージがインストールされます。
  4. デプロイスクリプトは、別のプロセスである構成管理システムをトリガーして、構成テンプレートを読み取り、サーバーが必要とするサービスの構成ファイルを生成し(役割のリストに基づいて)、それらをサーバーにファームアウトします。
  5. デプロイシステムは、システムごとに実行する必要のあるアクション(再起動するサービス)のリストを生成し、それらを更新を管理するオペレーターに提示します。次に、オペレーターは再起動を実行するか(クライアントの定期メンテナンス期間中に更新が発生した場合、または日中のサービス再起動の作業指示があった場合)、または次のタスクのリストを含む夜間スタッフのチケットを作成します。終わり。

RPMは恐ろしいハックですが、クライアントはすべてRed Hat Linuxを実行していたので(私たちの要件により)、それは完全に理にかなっています。選択肢があれば、DebianやUbuntuのようなシステムを使用して、システムがすべてプルできるリポジトリを設定します。それでも、それは数百のクライアントでうまく機能し、合計で数千のサーバーがありました。かなりきちんと。

于 2008-09-24T01:51:29.147 に答える
3

可能な場合は、Antなどの自動展開を好みます。FTP展開でもかなり簡単に処理できます。デプロイメントの自動化は、自動ビルドと同様に、プロセスから推測作業とエラーを取り除き、定義上、新しいプログラマーがプロセスを理解するために必要な最低限のドキュメント(つまりビルドスクリプト)を提供します。

于 2008-09-24T00:55:52.977 に答える
2

ライブにする必要がある場合は、「svnexport」を使用します。コードをリビジョン管理下に置き、テストボックスまたはローカルコンピューターで積極的に開発できるようにします。

于 2008-09-24T00:55:03.167 に答える
2

まだ試していませんが、将来Fabricを使用することを考えています。

Fabric は、単純な pythonic リモート展開ツールです。

複数のサーバーにファイルをアップロードし、シェル コマンドを並列または順次に実行するように設計されています。これらのコマンドは、タスク (通常の Python 関数) にグループ化され、「fabfile」で指定されます。

それは少し馬鹿げた Capistrano に似ていますが、それは Python であり、Rails アプリケーションをデプロイすることを想定していないことと、'put' コマンドが機能することを除いて異なります。

Capistrano とは異なり、Fabric は小さく、軽く、簡単に変更でき、特定のフレームワークに縛られないことを望んでいます。

于 2008-09-24T01:19:12.657 に答える
1

Capistranoは、この種の作業に非常に適しています。これは Ruby on Rails エコシステムから生まれ、当初は Rails アプリのデプロイに非常に強く結びついていました。多くの人がリモート サーバー コントロールに便利であることに気付いたので、もう少し汎用的になりました。

カピストラーノは追加のセットアップなしで次のことを行います。

  • SSH を使用してアプリケーション サーバーに接続します
  • Subversion から最新のソース コードを新しい日付付きフォルダーにチェックアウトします。
  • シンボリック リンクを 1 つまたは 2 つ更新して、新しいリリースを有効にします。
  • アプリケーションサーバーをリロードします

そして、これらすべてがロールバック機能を備えています。

別の良いオプションは、オペレーティング システムのパッケージング システム (RPM、deb/apt など) を使用することです。これには、オペレーティング システムとそのポリシーに関する十分な知識が必要になる傾向がありますが、自分が何をしているかを知っていれば、他のツールとうまく適合します。

于 2008-11-22T11:07:59.473 に答える
0

私は.NETの人なので、CruiseControl+nantです

しかし、 JetBrainsTeamCityについて素晴らしいことを聞いたことがあります。

于 2008-09-24T00:56:19.420 に答える
0

rsync->優れたツール

ただし、答えは環境によって異なります。ソース管理には何を使用していますか? ビルドシステムには何を使用しますか? 等。

Web サーバーのデプロイメントは、変更されたファイルに応じて「cp」コマンドにすぎません。変更されたファイルを追跡し、それらのファイルをソース管理からプルしてから、それらの変更をプッシュするプロセスを構築する必要があります。PHP ファイルを扱っている場合、プッシュするファイルをどのように判断しますか? それが問題です。あなたはそれを解決します、あなたは大丈夫です。ファイルを cp して「デプロイ」するツールは簡単な部分です。

于 2008-09-24T00:50:48.980 に答える