Learn the "why" behind slow queries and how to fix them in our 2-Part Webinar.
Register now >
Docs Menu
Docs Home
/ /

MongoDB 와 Drupal 통합

이 가이드 에서는 MongoDB 데이터베이스 로 사용하는 Drupal CMS(콘텐츠 관리 시스템)를 만드는 방법을 학습 수 있습니다. Drupal은 PHP 로 작성된 오픈 소스 웹 CMS로 콘텐츠 저작, 구성 가능성 및 인증 기능을 제공합니다.

개인화된 사용자 경험을 제공하는 웹사이트에는 강력한 사용자 인증 기능이 필요합니다. 인증된 사용자가 많은 사이트에서는 관계형 데이터베이스 의 여러 테이블에서 엔터티 데이터를 검색할 때 성능 문제가 발생할 수 있습니다. MongoDB 복잡한 테이블 조인이 필요하지 않으며 개인화된 대시보드 및 동적 콘텐츠 피드와 같은 기능의 데이터 검색 속도를 높입니다.

MongoDB 사이트의 데이터베이스 로 사용하는 경우 Drupal은 엔터티를 모든 수정본, 번역 및 필드 데이터를 포함하는 JSON 문서로 저장합니다. 이 유연한 데이터 구조는 지연 시간 줄이고 사용자를 위한 개인화된 데이터 중심 환경을 지원합니다.

MongoDB Drupal 사이트를 개선하는 다음과 같은 기능을 제공합니다.

  • 수평적 확장: 여러 서버에 로드를 분산하여 대규모 사용자 기반에 맞게 데이터베이스 확장 가능한 있습니다.

  • 통합 파일 저장 : 사용자 파일을 웹 서버 아닌 데이터베이스 에 직접 저장하여 호스팅을 간소화합니다.

  • 전체 텍스트 검색 : MongoDB Search 기능 활용하여 별도의 검색 솔루션을 구현하지 않아도 됩니다.

  • AI 기능: MongoDB Vector Search 기능 사용하여 벡터 검색을 수행하고 AI 서비스를 통합합니다.

이 튜토리얼에서는 MongoDB 사용하여 Drupal 사이트의 데이터를 저장 하는 Drupal CMS를 빌드 . 로컬에서 호스팅되는 Drupal 사이트 생성하고, 사이트 에 아티클을 추가하고, MongoDB 에서 아티클의 데이터를 볼 수 있습니다.

이 튜토리얼에서는 로컬 MongoDB 복제본 세트 와 로컬에서 호스팅되는 사이트 사용합니다. MongoDB Atlas M10 클러스터 와 AWS EC2 서버 사용하는 유사한 튜토리얼을 보려면 MongoDB DEV에서 Drupal을 실행하는 방법 문서를 참조하세요.

이 섹션의 단계에 따라 프로젝트 종속성을 설치하고, MongoDB 복제본 세트 배포 , Drupal을 설정하다 합니다.

1

빠른 시작 애플리케이션 만들려면 개발 환경에 다음 소프트웨어를 설치하세요.

전제 조건
참고 사항

PHP 종속성 관리 도구입니다.

운영 체제에 해당하는 지침을 따르세요.

복제본 세트 실행 하려면 로컬에 MongoDB 설치합니다.

MongoDB PHP 확장인 mongodb을 설치합니다. 운영 체제에 해당하는 확장 문서의 지침을 따르세요.

이 튜토리얼에서는 MongoDB Shell (mongosh)을 사용하여 데이터를 보고 상호 작용 . 운영 체제와 설치 방법을 선택한 다음 지침을 따르세요.

버전 8.3 이상을 사용하세요.

터미널 앱 및 shell

MacOS 사용자의 경우 터미널 또는 유사한 앱 사용하세요. Windows 사용자의 경우 PowerShell 또는 명령 프롬프트를 사용하세요.

2

MongoDB Drupal과 함께 사용하려면 MongoDB 복제본 세트 실행 해야 합니다. 다음 단계를 수행하여 로컬 3노드 복제본 세트 준비하고 시작합니다.

  1. 시스템 리소스 제한을 해결하려면 ulimit 값을 늘리세요.

    Drupal은 짧은 시간 내에 여러 파일과 인덱스를 생성합니다. 터미널에서 다음 명령을 실행 ulimit 을(를) 64000(으)로 설정하다 하면 복제본 세트 충돌하는 것을 방지할 수 있습니다.

    ulimit -n 64000
  2. 복제본 세트 배포합니다.

    ulimit를 늘린 후 테스트 및 개발을 위한 자체 관리 복제본 세트 배포 튜토리얼의 지침에 따라 복제본 세트 배포 하고 초기화합니다. 복제본 세트 의 이름이 rs0 이고 포트 27017, 2701827019에서 실행 세 개의 노드 가 있는지 확인합니다.

3

PHP 드라이버 사용

mongosh 대신 MongoDB PHP 드라이버 사용하여 데이터베이스 사용자를 생성하려는 경우 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이라는 이름의 Drupal 프로젝트 만듭니다.

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

그런 다음, 다음 명령을 실행 하여 MongoDB 모듈을 설치합니다.

composer require drupal/mongodb:^3.1

Drupal을 설치한 후 이 섹션의 단계에 따라 애플리케이션 이 MongoDB 에서 작동하도록 허용하세요.

1

Drupal 핵심 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 라는 새 파일 에 복사하고 Drupal이 새 콘텐츠를 쓰기 (write) 수 있도록 이 파일의 권한을 업데이트 .

3

Drupal이 공개 파일을 수정하도록 허용하려면 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';

앞의 값이 settings.php에서 주석 처리된 경우 주석 처리를 제거합니다.

이 섹션의 단계에 따라 Drupal 구성 마법사를 사용하여 Drupal 설치를 완료합니다.

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:8080 를 열어 Drupal 설치 마법사를 시작합니다. 그런 다음 다음 응답을 선택하여 프로젝트 구성합니다.

사이트 에 더 이상 사용되지 않는 비표준 (boolean) 캐스트에 대한 오류 메시지가 표시되는 경우 프로젝트의 DocParser.php 파일 에서 다음 줄을 찾습니다.

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

이 줄을 다음 코드로 바꿉니다.

$this->ignoreNotImportedAnnotations = (bool) $bool;
  1. 언어 선택 페이지에서 영어 를 선택하고 저장하고 계속하기를 클릭합니다.

  2. 프로필 선택 페이지에서 표준 을 선택한 상태로 저장하고 계속하기를 클릭합니다.

  3. 데이터베이스 설정 페이지에서 데이터베이스 유형으로 MongoDB 를 선택하고 다음 정보를 제공합니다.

    • 데이터베이스 이름: drupal

    • 데이터베이스 사용자 이름: 이전 단계에서 createUser 명령으로 구성한 데이터베이스 사용자 이름.

    • 데이터베이스 비밀번호: 이전 단계에서 createUser 명령을 사용하여 구성한 데이터베이스 비밀번호입니다.

    • SRV 연결 형식: 선택하지 않은 상태로 둡니다.

    • 데이터베이스 복제본 세트: rs0

    • 호스팅하다 #1: localhost, 포트 27017

    • 호스팅하다 #2: localhost, 포트 27018

    • 호스팅하다 #3: localhost, 포트 27019

    저장하고 계속하기를 클릭합니다.

  4. Drupal은 필요한 모듈을 설치합니다. 이 작업은 몇 분 정도 걸릴 수 있습니다.

  5. 사이트 구성 페이지에서 다음 정보를 제공합니다.

    • 사이트 이름: Drupal on MongoDB을(를) 입력합니다.

    • 사이트 이메일 주소: 이메일 주소 입력합니다. 존재하지 않는 주소 사용할 수 있습니다.

    • 사용자 이름: 관리자 사용자 이름 선택합니다.

    • 비밀번호: 강력한 비밀번호를 선택합니다.

    • 이메일 알림 수신: 이 상자를 선택 취소합니다.

    저장하고 계속하기를 클릭합니다.

3

Drupal을 설치하고 사이트 구성한 후에는 Drupal에서 더 이상 설정 파일에 대한 쓰기 (write) 액세스 필요하지 않습니다. 이러한 파일을 보호하려면 drupal-quickstart 디렉토리 에서 다음 명령을 실행 .

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

설치를 완료한 후 이 섹션의 단계에 따라 콘텐츠를 만들고 해당 데이터를 MongoDB 에 저장 .

1

설치가 완료되면 사이트 가 Drupal 홈페이지로 리디렉션됩니다. 사이트 는 다음 이미지와 유사합니다.

초기 설치 후 Drupal 홈페이지의 스크린샷

사이트 스타일링

Drupal 사이트 에 스타일링 없이 일반 HTML이 표시되는 경우 CSS 및 JavaScript 집계 비활성화해야 할 수 있습니다. 집계를 비활성화하려면 브라우저에서 http://localhost:8080/admin/config/development/performance 를 방문하여 Aggregate CSS filesAggregate 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

저장 후 게시된 기사를 볼 수 있습니다. 사이트 는 다음 이미지와 유사합니다.

Drupal 문서 페이지 스크린샷
5

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

    Drupal은 다음을 포함한 다양한 유형의 콘텐츠를 저장 위해 여러 컬렉션을 만듭니다.

    • 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 문서 반환합니다.

Drupal 빠른 시작 튜토리얼을 완료한 것을 축하합니다!

이 단계를 완료하면 로컬 MongoDB 복제본 세트 에 연결하고 콘텐츠를 JSON 문서로 저장하는 Drupal CMS가 생성됩니다.

Drupal 및 MongoDB 에 대해 자세히 학습 다음 리소스를 참조하세요.

돌아가기

Symfony Integration

이 페이지의 내용