Docs Menu
Docs Home
/ /

MongoDBと Dropal の統合

このガイドでは、 MongoDBをデータベースとして使用する Dropal コンテンツ管理システム(CMS)を作成する方法を学びます。 Dropal は、コンテンツの認可、作成、作成可能性、認証機能を提供するPHPで記述されたオープンソースのウェブ CMS です。

パーソナライズされたユーザー エクスペリエンスを提供するウェブサイトには、 ユーザー認証のための堅牢な機能が必要です。認証済みユーザーが多いサイトでは、リレーショナルデータベース内の複数のテーブルからエンティティ データを検索する際にパフォーマンスの問題が発生する可能性があります。 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 の設定 を行います。

1

クイック スタートアプリケーションを作成するには、開発環境に次のソフトウェアをインストールします。

前提条件
ノート

これはPHP依存関係管理ツールです。

オペレーティング システムに対応する手順に従います。

MongoDB をローカルにインストールして、レプリカセットを実行します。

MongoDB PHP拡張機能である mongodb をインストールします。ご使用のオペレーティング システムに対応する拡張ドキュメント内の手順に従います。

このチュートリアルでは、 MongoDB Shell(mongosh)を使用してデータを表示および操作します。オペレーティング システムとインストール方法を選択し、指示に従います。

バージョン 8.3 以降を使用します。

ターミナルアプリとシェル

MacOS ユーザーの場合は、 ターミナル または 類似アプリを使用します。 Windowsユーザーの場合は、 PowerShell または コマンドプロンプトを使用します。

2

Dropal とMongoDB を一緒に使用するには、 MongoDBレプリカセットを実行する必要があります。ローカル 3 ノードレプリカセットを準備して起動するには、次の手順を実行します。

  1. システムリソースの制限を解決するには、ulimit の値を増やします。

    Dropal は短期間に複数のファイルとインデックスを作成します。ターミナルから次のコマンドを実行して、ulimit64000 に設定し、レプリカセットのクラッシュを防ぎます。

    ulimit -n 64000
  2. レプリカセットを配置します。

    ulimitを増やしたら、「 テストおよび開発用に自己管理型レプリカセットを配置する 」チュートリアルに従って、レプリカセットを配置して初期化します。レプリカセットの名前がrs0 27017で、ポート 、27018 、 で実行中327019 つのノードがあることを確認します。

3

Tip

PHPドライバーの使用

の代わりにMongoDB PHPドライバー を使用してデータベースユーザーを作成する場合は、mongosh createUserコマンドをMongoDB\Database::command() メソッドに渡します。詳細については、ドライバーのドキュメントの「 データベースコマンドの実行 」を参照してください。

次の手順を実行して、DRupalデータベースに必要な権限を持つユーザーを作成します。

  1. ターミナルから次のコマンドを実行して、mongosh のレプリカセットに接続します。

    mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0"
  2. mongosh シェルで次のコマンドを実行して、adminデータベースを入力します。

    use admin
  3. 次に、 シェルから次のコマンドを実行してユーザーを作成します。

    db.createUser({
    user: "<database username>",
    pwd: "<database user password>",
    roles: [
    { role: "readWrite", db: "drupal" },
    { role: "dbAdmin", db: "drupal" }
    ]
    })

    <database username><database user password> を希望する認証情報に置き換えます。これらの値を保存して、後の手順で使用します。

4

新しいターミナルウィンドウから、次のコマンドを実行して、drupal-quickstart という名前の Dropalプロジェクトを作成します。

composer create-project drupal/recommended-project:11.1.5 drupal-quickstart
cd drupal-quickstart

次に、次のコマンドを実行中してMongoDBモジュールをインストールします。

composer require drupal/mongodb:^3.1

Dropal をインストールしたら、このセクションの手順に従ってアプリケーションがMongoDBと連携できるようにします。

1

Dropal コアPHPファイルには、 MongoDBで動作するためのパッチが必要です。 drupal-quickstart/webディレクトリに移動し、次のコマンドを実行中してパッチを適用します。

cd web
git apply -v modules/contrib/mongodb/patches/drupal-core-11.1.5.patch
cd ..
2

drupal-quickstartディレクトリから、web/sites/default サブディレクトリに移動し、次のコマンドを実行します。

cd web/sites/default
cp default.settings.php settings.php
chmod 777 settings.php
cd ../../..

これらのコマンドは、デフォルト設定ファイルをsettings.php という名前の新しいファイルにコピーし、このファイルの権限を更新して Dropal が新しいコンテンツを書込むできるようにします。

3

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 でコメント アウトされている場合は、コメントを外します。

このセクションの手順に従って、DRupal 構成ウィザードを使用して Dropupal のインストールを完了します。

1

drupal-quickstartディレクトリから、次のコマンドを実行して組み込みPHPウェブサーバー を起動します。

php -S localhost:8080 -t web

成功させた場合、このコマンドは次の情報を出力します。

[Date Time] PHP 8.3.0 Development Server (http://localhost:8080) started
2

ウェブ ブラウザで http://localhost: を開き、DRupal インストールウィザードを起動します。次に、次の応答を選択してプロジェクトを構成します。8080

Tip

サイトに非推奨の非標準の (boolean) キャストに関するエラー メッセージが表示されている場合は、プロジェクトの DocParser.phpファイルで次の行を見つけます。

$this->ignoreNotImportedAnnotations = (boolean) $bool;

この行を、次のコードで置き換えます。

$this->ignoreNotImportedAnnotations = (bool) $bool;
  1. [ 言語を選択 ] ページで、[ 英語 ] を選択し、[ Save(保存) ] をクリックして続行します。

  2. [ プロファイルの選択 ] ページで、[ 標準 ] を選択したままにし、[ Save(保存) ] をクリックして続行します。

  3. [ データベースを設定する ] ページで、データベースタイプ としてMongoDBを選択し、次の情報を提供します。

    [ Save(保存) ] をクリックして続行します。

  4. Dropal は必要なモジュールをインストールします。これには数分かかる場合があります。

  5. サイトの コンフィギュレーション ページで、次の情報を提供します。

    • サイト名:Drupal on MongoDB と入力します。

    • サイトのメールアドレス: 任意のメールアドレスを入力します。存在しないアドレスを使用できます。

    • ユーザー名: 管理者ユーザー名を選択します。

    • パスワード: 強力なパスワードを選択してください。

    • メール通知を受信する: このボックスをオフにします。

    [ Save(保存) ] をクリックして続行します。

3

Dropal をインストールしてサイトを構成することで、DRupal は設定ファイルへの書込みアクセスが不要になります。これらのファイルを保護するには、drupal-quickstartディレクトリから次のコマンドを実行します。

chmod 555 web/sites/default
chmod 444 web/sites/default/settings.php

インストールが完了したら、このセクションの手順に従ってコンテンツを作成し、そのデータをMongoDBに保存します。

1

インストールが完了すると、サイトは Dropal のホームページにリダイレクトされます。サイトは次の画像のようになります。

初期インストール後の Dropal ホームページのスクリーンショット

Tip

サイトスケーリング

Dropal サイトがスタイルのないプレーン HTML を表示する場合は、 CSS とJavaScript の集計を無効にする必要がある場合があります。集計 を無効にするには、ブラウザで http://localhost:8080 /admin/config/development/ performance にアクセスし、Aggregate CSS files Aggregate JavaScript filesボックスと ボックスをオフにします。

2

Contentページ上部のナビゲーション バーで [] をクリックします。次に、[ コンテンツの追加 > 記事 ] をクリックします。

3

Create Article ページで、次のアクションを実行します。

  1. Title セクションに "Welcome to My Drupal Site" を入力します。

  2. Body セクションで、次のテキストを入力します。

    This is my first article on Drupal with MongoDB!
    All content is stored as JSON documents in MongoDB.
  3. [ Menu settingsを選択し、[] ボックスをオンにします。Provide a menu link

  4. [Save] をクリックします。

4

保存すると、公開された記事が表示されます。サイトは次の画像のようになります。

Dropal の記事ページのスクリーンショット
5

Tip

PHPドライバーの使用

mongosh の代わりにPHPドライバーを使用してコレクションとコンテンツ データを表示する場合は、MongoDB\Database::listCollections() メソッドと MongoDB\Collection::find() メソッドを使用します。詳しくは、次のPHPドライバーのドキュメントを参照してください。

コンテンツがMongoDBに保存されていることを確認するには、次の手順を実行します。

  1. 新しいターミナルウィンドウを開き、mongosh のMongoDBレプリカセットに接続します。

    ターミナルから次のコマンドを実行します。

    mongosh "mongodb://localhost:27017,localhost:27018,localhost:27019/?replicaSet=rs0"
  2. drupalデータベースを入力し、コレクションを表示します。

    mongoshターミナルで次のコマンドを実行します。

    use drupal
    show collections

    Dropal は、次のようなさまざまなタイプのコンテンツを保存するために複数のコレクションを作成します。

    • node: コンテンツ ノードを保存します

    • users: ユーザー アカウントを保存します

    • config: 構成データを保存します

  3. 記事データを表示します。

    記事に関する情報を表示するには、 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の詳細については、次のリソースを表示します。

戻る

Symfony Integration

項目一覧