Overview
このガイドでは、 MongoDBをデータベースとして使用する Dropal コンテンツ管理システム(CMS)を作成する方法を学びます。 Dropal は、コンテンツの認可、作成、作成可能性、認証機能を提供するPHPで記述されたオープンソースのウェブ CMS です。
Dropal サイトのデータベースとしてMongoDBを使用する理由
パーソナライズされたユーザー エクスペリエンスを提供するウェブサイトには、 ユーザー認証のための堅牢な機能が必要です。認証済みユーザーが多いサイトでは、リレーショナルデータベース内の複数のテーブルからエンティティ データを検索する際にパフォーマンスの問題が発生する可能性があります。 MongoDB複雑なテーブル結合が不要になり、パーソナライズされたダッシュボードや動的コンテンツ フィードなどの機能のデータ取得速度が向上します。
MongoDB をサイトのデータベースとして使用する場合、DRupal は、すべての改訂版、翻訳、フィールドデータを含むJSONドキュメントとしてエンティティを保存します。この柔軟なデータ構造によりレイテンシが削減され、ユーザーにはパーソナライズされたデータに基づくエクスペリエンスがサポートされます。
MongoDB は、DRupal サイトを改善する次の機能を提供しています。
水平スケーリング: 複数のサーバー間で負荷を分散することで、大規模なユーザーベースでもデータベースを拡張可能にします。
統合ファイルストレージ: ユーザー ファイルを ウェブサーバーではなくデータベースに直接保存することで、ホスティングを簡素化します。
全文検索: MongoDB Search 機能を活用して、個別の検索ソリューションの実装を避けます。
AI機能: MongoDB ベクトル検索機能を使用してベクトル検索を実行し、 AIサービスを統合します。
クイック スタート チュートリアル
このチュートリアルでは、 MongoDBを使用して Dropupal サイトのデータを保存する Dropal CMS を構築します。ローカルでホストされる MongoDB サイトを作成し、サイトに記事を追加して、 MongoDBで記事のデータを表示します。
Tip
このチュートリアルでは、ローカルMongoDBレプリカセットとローカルでホストされているサイトを使用します。 MongoDB Atlas M10 クラスターとAWS EC2 サーバーを使用する同様のチュートリアルを表示するには、 「 MongoDB DEV で Dropal を実行する方法 」に関する記事を参照してください。
プロジェクトを設定する
このセクションの手順に従って、プロジェクトの依存関係のインストール、 MongoDBレプリカセット の配置、 Dropupal の設定 を行います。
前提条件を確認します。
クイック スタートアプリケーションを作成するには、開発環境に次のソフトウェアをインストールします。
前提条件 | ノート |
|---|---|
これはPHP依存関係管理ツールです。 | |
オペレーティング システムに対応する手順に従います。 | |
MongoDB をローカルにインストールして、レプリカセットを実行します。 | |
MongoDB PHP拡張機能である | |
このチュートリアルでは、 MongoDB Shell( | |
バージョン 8.3 以降を使用します。 | |
ターミナルアプリとシェル | MacOS ユーザーの場合は、 ターミナル または 類似アプリを使用します。 Windowsユーザーの場合は、 PowerShell または コマンドプロンプトを使用します。 |
データベースユーザーを作成します。
Tip
PHPドライバーの使用
の代わりにMongoDB PHPドライバー を使用してデータベースユーザーを作成する場合は、mongosh createUserコマンドをMongoDB\Database::command() メソッドに渡します。詳細については、ドライバーのドキュメントの「 データベースコマンドの実行 」を参照してください。
次の手順を実行して、DRupalデータベースに必要な権限を持つユーザーを作成します。
ターミナルから次のコマンドを実行して、
mongoshのレプリカセットに接続します。mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0" mongoshシェルで次のコマンドを実行して、adminデータベースを入力します。use admin 次に、 シェルから次のコマンドを実行してユーザーを作成します。
db.createUser({ user: "<database username>", pwd: "<database user password>", roles: [ { role: "readWrite", db: "drupal" }, { role: "dbAdmin", db: "drupal" } ] }) <database username>と<database user password>を希望する認証情報に置き換えます。これらの値を保存して、後の手順で使用します。
MongoDB統合の構成
Dropal をインストールしたら、このセクションの手順に従ってアプリケーションがMongoDBと連携できるようにします。
ファイルアクセス許可 を構成します。
Dropal が公開ファイルを変更できるようにするには、filesディレクトリを作成し、drupal-quickstartディレクトリから次のコマンドを実行中てその権限を設定します。
mkdir -p web/sites/default/files chmod -R 777 web/sites/default/files
次に、web/sites/default/settings.phpファイルに次の値が含まれていることを確認して、これらのファイルの場所を指定します。
$settings['file_public_path'] = 'sites/default/files';
Tip
前の値が settings.php でコメント アウトされている場合は、コメントを外します。
Dropal Site を設定する
このセクションの手順に従って、DRupal 構成ウィザードを使用して Dropupal のインストールを完了します。
Web インストールを完了します。
ウェブ ブラウザで http://localhost: を開き、DRupal インストールウィザードを起動します。次に、次の応答を選択してプロジェクトを構成します。8080
Tip
サイトに非推奨の非標準の (boolean) キャストに関するエラー メッセージが表示されている場合は、プロジェクトの DocParser.phpファイルで次の行を見つけます。
$this->ignoreNotImportedAnnotations = (boolean) $bool;
この行を、次のコードで置き換えます。
$this->ignoreNotImportedAnnotations = (bool) $bool;
[ 言語を選択 ] ページで、[ 英語 ] を選択し、[ Save(保存) ] をクリックして続行します。
[ プロファイルの選択 ] ページで、[ 標準 ] を選択したままにし、[ Save(保存) ] をクリックして続行します。
[ データベースを設定する ] ページで、データベースタイプ としてMongoDBを選択し、次の情報を提供します。
データベース名:
drupalデータベースユーザー名:
createUser前のステップで コマンドで構成したデータベースのユーザー名データベース パスワード:
createUser前のステップで コマンドで設定したデータベースパスワードSRV 接続形式: オフのままにします
データベースレプリカセット:
rs01ホスト番号:
localhost、ポート270172ホスト番号:
localhost、ポート270183ホスト番号:
localhost、ポート27019
[ Save(保存) ] をクリックして続行します。
Dropal は必要なモジュールをインストールします。これには数分かかる場合があります。
サイトの コンフィギュレーション ページで、次の情報を提供します。
サイト名:
Drupal on MongoDBと入力します。サイトのメールアドレス: 任意のメールアドレスを入力します。存在しないアドレスを使用できます。
ユーザー名: 管理者ユーザー名を選択します。
パスワード: 強力なパスワードを選択してください。
メール通知を受信する: このボックスをオフにします。
[ Save(保存) ] をクリックして続行します。
コンテンツの作成と表示
インストールが完了したら、このセクションの手順に従ってコンテンツを作成し、そのデータをMongoDBに保存します。
Dropal のホームページを表示します。
インストールが完了すると、サイトは Dropal のホームページにリダイレクトされます。サイトは次の画像のようになります。

Tip
サイトスケーリング
Dropal サイトがスタイルのないプレーン HTML を表示する場合は、 CSS とJavaScript の集計を無効にする必要がある場合があります。集計 を無効にするには、ブラウザで http://localhost:8080 /admin/config/development/ performance にアクセスし、Aggregate CSS files Aggregate JavaScript filesボックスと ボックスをオフにします。
MongoDBでデータを表示します。
Tip
PHPドライバーの使用
mongosh の代わりにPHPドライバーを使用してコレクションとコンテンツ データを表示する場合は、MongoDB\Database::listCollections() メソッドと MongoDB\Collection::find() メソッドを使用します。詳しくは、次のPHPドライバーのドキュメントを参照してください。
コンテンツがMongoDBに保存されていることを確認するには、次の手順を実行します。
新しいターミナルウィンドウを開き、
mongoshのMongoDBレプリカセットに接続します。ターミナルから次のコマンドを実行します。
mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0" drupalデータベースを入力し、コレクションを表示します。mongoshターミナルで次のコマンドを実行します。use drupal show collections Dropal は、次のようなさまざまなタイプのコンテンツを保存するために複数のコレクションを作成します。
node: コンテンツ ノードを保存しますusers: ユーザー アカウントを保存しますconfig: 構成データを保存します
記事データを表示します。
記事に関する情報を表示するには、
mongoshターミナルで次のコマンドを実行します。db.node.find().pretty() [ { _id: ObjectId('...'), nid: 1, vid: 1, type: 'article', uuid: '...', langcode: 'en', node_all_revisions: [ { ... } ], node_current_revision: [ { ... } ], node_latest_revision: [ { ... title: 'Welcome to My Drupal Site', created: ..., changed: ..., promote: true, sticky: false, default_langcode: true, revision_default: true, revision_translation_affected: true, node_latest_revision__body: [ { bundle: 'article', deleted: false, langcode: 'en', entity_id: 1, revision_id: 1, delta: 0, body_value: '<p>This is my first article on Drupal with MongoDB!<br>All content is stored as JSON documents in MongoDB.</p>', body_summary: '', body_format: 'basic_html' } ], node_latest_revision__comment: [ { bundle: 'article', deleted: false, langcode: 'en', comment_status: 2, entity_id: 1, revision_id: 1, delta: 0 } ] } ] } ] このコマンドは、記事テキストとメタデータを含むJSONドキュメントを返します。
Flutter クイック スタート チュートリアルが完了しました。
これらの手順を完了すると、ローカルMongoDBレプリカセットに接続し、コンテンツをJSONドキュメントとして保存する Dropal CMS が作成されます。
追加リソース
Dropal とMongoDBの詳細については、次のリソースを表示します。
「完全な本番構成でMongoDB DEV チュートリアルで Dropal を実行する方法」を参照してください。
Dropal ウェブウェブサイトのMongoDBモジュール
