web-dev-qa-db-ja.com

何が最善かDrupal配備戦略?

私はMacBookでXAMPPの最初のDrupalプロジェクトに取り組んでいます。これはプロトタイプであり、クライアントから肯定的なフィードバックを受けています。

2週間後にLinux VPSにプロジェクトをデプロイします。サーバーですべてを最初から「やり直す」よりも良い方法はありますか?

  • drupalをインストールする
  • ダウンロードモジュール(CCK、ビュー、日付、カレンダー)
  • コンテンツを作成する
  • ...

ありがとう

53
ohho

いくつかのヒント:

  • ファイルにはFTPなどではなくソース管理を使用します。何を使うかは関係ありません。クライアントごとにUnfuddle.com Subversionアカウントを起動する傾向があるため、バグをログに記録する場所もありますが、重要な最初のステップは、サイトの完全なソースツリーをバージョン管理することです。テストサーバーまたはステージングサーバーで変更が行われると、それらが機能するかどうかを確認し、コミットしてから、ライブサーバーで更新します。ロールバックと展開が大幅に簡素化されます。複数のウェブヘッドのクラスターの場合は、プロセスを繰り返すか、単一の「正規」サーバーからrsyncを実行できます。

  • ただし、SVNを使用する場合は、DrupalのCVSチェックアウトと他のモジュール/テーマを使用することもできます。SVN/ CVSメタデータは、お互いに共存できます。

  • Filesディレクトリなどのかさばるフォルダの場合は、「適切な」場所にあるシンボリックリンクを使用して、webrootの外部にあるサーバー側のディレクトリを指定します。これにより、ソース管理リポジトリには、ユーザーがアップロードしたすべてのコードとすべてのファイルではなく、すべてのコードとシンボリックリンクを含めることができます。

  • データベースは扱いにくいです。開発/ステージングDBをクリーンアップしてライブにプッシュするのが最初のロールアウトで最も簡単ですが、ライブサイトのユーザーもコンテンツを生成している場合、増分DB更新を実行するときにいくつかのしわがあります。

昨年、私は Drupal展開のベストプラクティス に関するプレゼンテーションを行いました。スライドをご覧ください。

53
Eaton

機能 。moduleは、Drupal構成変更を管理するための非常に強力なツールです。

コンテンツタイプ、CCK設定、ビュー、Drupal変数、コンテキスト、Imagecacheプリセット、メニュー、分類法、および権限をすべて機能にロールインして、バージョン管理にチェックインできます。そこから、新しいサイトのデプロイ、または既存のサイトへの変更のプッシュは、機能UIまたはDrushで簡単に管理できます。

変数テーブルに保存されるdrupal configをエクスポートするために、Strongarm.moduleをインストールしてください。uuid_featuresをインストールすることで、静的コンテンツ/ノード(つまり、私たちについて、FAQなど)をフィーチャーに追加することもできます。 。モジュール。

これは、同じサイトで他の開発者と協力し、サイトを開発からテスト、ステージングおよび本番に移行するための最良の方法です。

21
rcourtna

私はこれについて私の職場で広範囲の議論をしました、そして私たちが最終的に解決した方法はコードの更新(モジュールとテーマを含む)を開発からステージングから本番にプッシュすることでした。これにはSubversionを使用しており、これまでのところうまくいきます。

特に重要なことは、開発者がデータベースのコピーを本番環境に近い状態に保つことができるように、データベースbackを本番環境からプッシュするプロセスを自動化することです。できるだけ。ミッションクリティカルな環境では、モジュールの更新がデータベースに影響を及ぼさないことを確実にしたいでしょう。使用するプロセスは次のとおりです。

  1. 開発サーバーにモジュールをインストールします。
  2. 必要な変更と更新をすべてメモします。何か問題がある場合は、元に戻して、エラーのない確実なプロセスになるまで繰り返します。
  3. 変更をテストしてください!通常のログインユーザーとして、また匿名ユーザーとして、テストプロセスを繰り返します。
  4. 更新プロセスにupdate.phpの実行以外のものが含まれる場合は、それを実行するスクリプトを記述します。
  5. 運用データベースをステージングサーバーにコピーし、同じ手順をすぐに実行します。失敗した場合は、失敗を診断してステップ1に戻ります。それ以外の場合は続行します。
  6. 変更をテストしてください!
  7. 運用データベースをバックアップし、SVNからチェックアウトした改訂をメモします。
  8. プロダクションDrupalをメンテナンスモードにして、プロダクションツリーで「svn update」を実行し、更新プロセスを実行します。
  9. Drupalメンテナンスモードを終了して、すべてをテストします(管理者、通常のユーザー、匿名))

以上です。 Drupalなどのコミュニティフレームワークに期待できないことの1つは、稼働後にデータベースをテストから本番に移行できることです。それ以降、すべてのデータベースの移動は本番から行われますテストを行うと、展開プロセスが多少複雑になります。注意してください!:)

16
Lendrick

機能モジュールを広範囲に使用して機能をキャプチャし、本番サイトに簡単にインストールします。

5
Niels

Deployment モジュールについて誰も言及しなかったことに驚いています。以下は、プロジェクトページからの抜粋です。

...ユーザーが1つのDrupalサイトから別のサイトにコンテンツを簡単にステージングできるように設計されています。Deployはエンティティ間の依存関係(ノード参照など)を自動的に管理します。これは、さまざまなコンテンツのステージング状況で使用するために簡単に拡張できます。

5
Dave

私はDrupalを使用していませんが、Joomlaを使用しています。私は、Webルートのすべてのファイル(私の場合はtarとgzipですが、Zipを使用することもできます)をアーカイブして展開し、そのアーカイブを運用サーバーにアップロードして展開します。次に、SQLダンプを取り(mysqldump -u user -h Host -p databasename> dump.sql)、それをアップロードし、reverseコマンドを使用してデータを挿入します(mysql -u produser -h prodDBserver -p prodDatabase <dump.sql )。シェルアクセス権がない場合は、ファイルを1つずつアップロードして、PHPスクリプトを記述して、dump.sqlをインポートします。

2
Richard Finn

任意のバージョン管理システム(GIT、SVN)+ 機能 デプロイするモジュールDrupalコード+カスタム設定(コンテンツタイプ、カスタムフィールド、モジュールの依存関係、ビューなど))。

Deploy モジュールはまだ開発モードなので、 Node export module in Drupal 7 to deploy your content/nodes 。

2
amitgoyal

デプロイメント(またはDrupal)を初めて使用する場合は、すべてを一度にまとめて実行してください。別のコピーで作業しているときにコンテンツに影響を与えるユーザーがいる場合は、十分に注意する必要があります。

構造ではなく、実際のコンテンツ、分類法、ユーザーなどに関連するテーブルを残すことができます。次に、構成に関連するものをプッシュします。ただし、これにより桁違いの複雑さが追加されます。

展開があなたにとって何か古い帽子であるならば謝罪しなさい、それでこれは漠然と侮辱です。

0
doublejosh

私が見つけ、現在実装している優れた戦略は、デプロイモジュールの組み合わせを使用してコンテンツを移行し、dbscriptsと共にドラッシュしてコアとモジュールをマージおよび更新することです。ライブコンテンツ、セキュリティ、モジュールの更新がある場合でも、データベースのマージを処理します。現在、私はsvnで動作するように設定しています。

0
Ryan L