私はMacBookでXAMPPの最初のDrupalプロジェクトに取り組んでいます。これはプロトタイプであり、クライアントから肯定的なフィードバックを受けています。
2週間後にLinux VPSにプロジェクトをデプロイします。サーバーですべてを最初から「やり直す」よりも良い方法はありますか?
ありがとう
いくつかのヒント:
ファイルにはFTPなどではなくソース管理を使用します。何を使うかは関係ありません。クライアントごとにUnfuddle.com Subversionアカウントを起動する傾向があるため、バグをログに記録する場所もありますが、重要な最初のステップは、サイトの完全なソースツリーをバージョン管理することです。テストサーバーまたはステージングサーバーで変更が行われると、それらが機能するかどうかを確認し、コミットしてから、ライブサーバーで更新します。ロールバックと展開が大幅に簡素化されます。複数のウェブヘッドのクラスターの場合は、プロセスを繰り返すか、単一の「正規」サーバーからrsyncを実行できます。
ただし、SVNを使用する場合は、DrupalのCVSチェックアウトと他のモジュール/テーマを使用することもできます。SVN/ CVSメタデータは、お互いに共存できます。
Filesディレクトリなどのかさばるフォルダの場合は、「適切な」場所にあるシンボリックリンクを使用して、webrootの外部にあるサーバー側のディレクトリを指定します。これにより、ソース管理リポジトリには、ユーザーがアップロードしたすべてのコードとすべてのファイルではなく、すべてのコードとシンボリックリンクを含めることができます。
データベースは扱いにくいです。開発/ステージングDBをクリーンアップしてライブにプッシュするのが最初のロールアウトで最も簡単ですが、ライブサイトのユーザーもコンテンツを生成している場合、増分DB更新を実行するときにいくつかのしわがあります。
昨年、私は Drupal展開のベストプラクティス に関するプレゼンテーションを行いました。スライドをご覧ください。
機能 。moduleは、Drupal構成変更を管理するための非常に強力なツールです。
コンテンツタイプ、CCK設定、ビュー、Drupal変数、コンテキスト、Imagecacheプリセット、メニュー、分類法、および権限をすべて機能にロールインして、バージョン管理にチェックインできます。そこから、新しいサイトのデプロイ、または既存のサイトへの変更のプッシュは、機能UIまたはDrushで簡単に管理できます。
変数テーブルに保存されるdrupal configをエクスポートするために、Strongarm.moduleをインストールしてください。uuid_featuresをインストールすることで、静的コンテンツ/ノード(つまり、私たちについて、FAQなど)をフィーチャーに追加することもできます。 。モジュール。
これは、同じサイトで他の開発者と協力し、サイトを開発からテスト、ステージングおよび本番に移行するための最良の方法です。
私はこれについて私の職場で広範囲の議論をしました、そして私たちが最終的に解決した方法はコードの更新(モジュールとテーマを含む)を開発からステージングから本番にプッシュすることでした。これにはSubversionを使用しており、これまでのところうまくいきます。
特に重要なことは、開発者がデータベースのコピーを本番環境に近い状態に保つことができるように、データベースbackを本番環境からプッシュするプロセスを自動化することです。できるだけ。ミッションクリティカルな環境では、モジュールの更新がデータベースに影響を及ぼさないことを確実にしたいでしょう。使用するプロセスは次のとおりです。
以上です。 Drupalなどのコミュニティフレームワークに期待できないことの1つは、稼働後にデータベースをテストから本番に移行できることです。それ以降、すべてのデータベースの移動は本番から行われますテストを行うと、展開プロセスが多少複雑になります。注意してください!:)
機能モジュールを広範囲に使用して機能をキャプチャし、本番サイトに簡単にインストールします。
Deployment モジュールについて誰も言及しなかったことに驚いています。以下は、プロジェクトページからの抜粋です。
...ユーザーが1つのDrupalサイトから別のサイトにコンテンツを簡単にステージングできるように設計されています。Deployはエンティティ間の依存関係(ノード参照など)を自動的に管理します。これは、さまざまなコンテンツのステージング状況で使用するために簡単に拡張できます。
私は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をインポートします。
任意のバージョン管理システム(GIT、SVN)+ 機能 デプロイするモジュールDrupalコード+カスタム設定(コンテンツタイプ、カスタムフィールド、モジュールの依存関係、ビューなど))。
Deploy モジュールはまだ開発モードなので、 Node export module in Drupal 7 to deploy your content/nodes 。
デプロイメント(またはDrupal)を初めて使用する場合は、すべてを一度にまとめて実行してください。別のコピーで作業しているときにコンテンツに影響を与えるユーザーがいる場合は、十分に注意する必要があります。
構造ではなく、実際のコンテンツ、分類法、ユーザーなどに関連するテーブルを残すことができます。次に、構成に関連するものをプッシュします。ただし、これにより桁違いの複雑さが追加されます。
展開があなたにとって何か古い帽子であるならば謝罪しなさい、それでこれは漠然と侮辱です。
私が見つけ、現在実装している優れた戦略は、デプロイモジュールの組み合わせを使用してコンテンツを移行し、dbscriptsと共にドラッシュしてコアとモジュールをマージおよび更新することです。ライブコンテンツ、セキュリティ、モジュールの更新がある場合でも、データベースのマージを処理します。現在、私はsvnで動作するように設定しています。