연결 가이드
이 페이지의 내용
개요
이 가이드에서는 Laravel MongoDB를 사용하여 Laravel 애플리케이션을 MongoDB 인스턴스 또는 복제본 세트 배포에 연결하는 방법을 배울 수 있습니다.
이 가이드에는 다음 섹션이 포함되어 있습니다.
연결 URI와 그 구성 부분을 설명하는 연결 URI
Laravel 데이터베이스 연결 구성 에서는 Laravel 앱에 대한 MongoDB database 연결을 설정하는 방법을 설명합니다.
연결예제 에서는 MongoDB Atlas 연결 을 사용하여 에 연결하는 방법을 보여주는 예제를 string 제공합니다.
MongoDB에 연결하는 다른 방법 에서는 Atlas에서 호스팅되지 않는 MongoDB 배포에 연결하는 방법을 설명합니다.
연결 URI
연결 이라고도 하는 연결 URI string 는 Laravel 통합이 에 연결하는 MongoDB 방법과 연결된 동안 동작하는 방법을 지정합니다.
연결 URI의 부분
다음 그림에서는 샘플 연결 URI의 각 부분을 설명합니다.
이 연결 URI에서 mongodb+srv
프로토콜은 DNS 시드 목록 연결 형식 을 사용하여 배포서버의 유연성을 높이고 클라이언트를 재구성하지 않고도 서버를 교대로 변경할 수 있습니다.
MongoDB 배포를 호스팅하는 머신이 이 기능을 지원하지 않는 경우 대신 표준 연결 string 형식 에 프로토콜을 사용하세요.
비밀번호 기반 인증을 사용하는 경우 프로토콜 뒤의 연결 string 부분에 사용자 이름과 비밀번호가 포함됩니다. user
의 자리 표시자를 사용자 이름으로 바꾸고 pass
을 비밀번호로 바꿉니다. 사용자 이름과 비밀번호가 필요하지 않은 인증 메커니즘을 사용하는 경우 연결 URI에서 이 부분을 생략합니다.
자격 증명 뒤의 연결 string 부분은 MongoDB 인스턴스의 호스트 이름 또는 IP 주소 및 포트를 지정합니다. 앞의 예에서는 호스트 이름으로 sample.host
, 포트로 27017
를 사용합니다. 이 값을 MongoDB 인스턴스를 가리키도록 바꿉니다.
연결 string 의 마지막 부분은 연결 및 인증 옵션을 지정합니다. 이 예제에서는 다음과 같은 연결 옵션 및 값을 설정합니다.
maxPoolSize=20
w=majority
연결 옵션에 학습 보려면 연결 옵션을 참조하세요.
Laravel 데이터베이스 연결 구성
Laravel 통합을 사용하면 config/database.php
Laravel 애플리케이션 파일 에서 MongoDB database 연결을 구성할 수 있습니다. 이 파일 에서 다음 연결 세부 정보를 지정할 수 있습니다.
default
, 지정되지 않은 경우 사용할 데이터베이스 연결을 지정합니다.connections
애플리케이션에서 하나 이상의 데이터베이스에 액세스하기 위한 데이터베이스 연결 정보가 포함되어 있습니다.
구성 파일에서 다음 코드를 사용하여 connections
배열의 해당 mongodb
항목에 대한 기본 연결을 설정할 수 있습니다.
'default' => 'mongodb',
MongoDB database 연결의 경우 다음 세부 정보를 지정할 수 있습니다.
설정 | 설명 | ||
---|---|---|---|
driver | 연결에 사용할 데이터베이스 드라이버를 지정합니다. | ||
dsn | MongoDB 연결 URI를 지정하는 데이터 소스 이름(DSN)입니다. | ||
host | Specifies the network address and port of one or more MongoDB nodes
in a deployment. You can use this setting instead of the dsn
setting.To specify a single host, pass the hostname and port as a string as
shown in the following example:
To specify multiple hosts, pass them in an array as shown in the
following example::
참고이 옵션은 DNS 시드 목록 연결 형식을 사용하는 호스트를 허용하지 않습니다. | ||
database | 읽고 쓸 MongoDB database 의 이름을 지정합니다. | ||
username | MongoDB로 인증하기 위한 데이터베이스 사용자의 사용자 이름 자격 증명을 지정합니다. | ||
password | MongoDB로 인증하기 위한 데이터베이스 사용자의 비밀번호 자격 증명을 지정합니다. | ||
options | 연결 동작을 결정하는 MongoDB에 전달할 연결 옵션을 지정합니다. 연결 옵션에 대해 자세히 알아보려면 연결 및 인증 옵션을 참조하세요. | ||
driver_options | 해당 연결의 드라이버 동작을 결정하는 MongoDB PHP 라이브러리에 전달할 특정 옵션을 지정합니다. 드라이버 옵션에 대해 자세히 알아보려면 드라이버 연결 옵션을 참조하세요. |
참고
배열 항목 대신 MongoDB 연결 string 의 매개 변수로 dsn
구성에서 다음 설정을 지정할 수 있습니다.
host
username
password
options
및driver_options
, 옵션 이름으로 지정됩니다.
다음 예는 connections
배열 항목에서 MongoDB 연결 세부 정보를 지정하는 방법을 보여줍니다.
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => 'mongodb+srv//myUser:myPass123@sample.host:27017/', 'database' => 'sample_mflix', 'options' => [ 'maxPoolSize' => 20, 'w' => 'majority', ], 'driver_options' => [ 'serverApi' => 1, ], ], // ... ],
다음 섹션에서는 MongoDB 연결을 지정하는 일반적인 방법을 제공합니다.
연결 예시
이 섹션에서는 MongoDB Atlas 연결 string 을 사용하여 Laravel 애플리케이션의 DSN을 구성하는 방법을 설명합니다.
Laravel 애플리케이션에 MongoDB DSN을 추가하려면 다음과 같이 변경합니다.
프로젝트의
.env
환경 구성 파일에 DSN을 환경 변수로 추가합니다. 변수 값을 Atlas 연결 string 로 설정합니다.config/database.php
구성 파일의connections
배열에 MongoDB 연결에 대한 연결 항목을 추가합니다. 연결 항목의dsn
값을 DSN이 포함된 환경 변수를 참조하도록 설정합니다.
다음 예에서는 관련 구성 파일에서 "mongodb+srv://myUser:myPass123@mongodb0.example.com/"
연결 string 로 지정하는 방법을 보여줍니다.
DB_URI="mongodb+srv://myUser:myPass123@mongodb0.example.com/"
'connections' => [ 'mongodb' => [ 'dsn' => env('DB_URI'), // uses the value of the DB_URI environment variable 'driver' => 'mongodb', 'database' => 'sample_mflix', // ... ], // ... ]
팁
Atlas 연결 string 을 검색하려면 빠른 시작 튜토리얼의 연결 string만들기 단계를 따르세요.
MongoDB에 연결하는 다른 방법
다음 섹션에서는 MongoDB Atlas에서 호스팅되지 않는 단일 MongoDB 서버 인스턴스 또는 복제본 세트에 연결하는 방법을 설명합니다.
로컬 기계에서 MongoDB Server에 연결하기
이 섹션에서는 string 로컬 MongoDB 개발 환경과 같은 동일한 머신에서 Laravel 애플리케이션과 서버를 실행할 때 사용할 수 있는 연결 의 예를 보여줍니다.
애플리케이션을 동일한 머신에서 호스팅되는 MongoDB 인스턴스에 연결하려면 다음 작업을 완료해야 합니다.
MongoDB 서버를 다운로드, 설치 및 실행합니다.
MongoDB 서버가 실행 중인 IP 주소와 포트를 가져옵니다. MongoDB 서버의 로컬 설치의 기본 설정을 사용하는 경우 IP 주소는
127.0.0.1
이고 포트는27017
입니다.연결 예제 섹션에 표시된 대로
dsn
값에 대한 환경 변수DB_URI
를 참조하도록config/database.php
연결을 설정합니다.
다음 예제는 애플리케이션이 기본 string .env
MongoDB 주소 IP 및 포트에서 실행되는 서버에 연결되는 경우 파일에 추가할 수 있는 샘플 연결 을 보여줍니다.
DB_URI="mongodb://127.0.0.1:27017/";
MongoDB Server를 다운로드하고 설치하는 방법을 알아보려면 MongoDB Server 매뉴얼의 MongoDB Community Edition설치 를 참조하세요.
복제본 세트에 연결
MongoDB 복제본 세트 배포는 연결된 인스턴스 또는 노드의 그룹으로, 노드가 동일한 데이터 세트를 저장합니다. 이러한 인스턴스 구성은 데이터 중복성과 높은 데이터 가용성을 제공합니다.
복제본 세트 배포서버에 연결하려면 각 노드의 호스트 이름과 포트 번호를 쉼표로 구분하고, 연결 string 의 replicaSet
매개변수 값으로 복제본 세트 이름을 지정합니다.
복제본 세트에 연결하기 위해 Laravel 애플리케이션의 .env
파일에 추가할 수 있는 연결 string 을 보여주는 이 예제에서는 다음 샘플 값을 사용합니다.
host1
,host2
및host3
을 MongoDB 노드의 호스트 이름으로 사용27017
해당 호스트에서 MongoDB가 실행되는 포트myRS
복제본 세트의 구성된 이름으로myUser
및myPass123
을 데이터베이스 사용자의 자격 증명으로 사용
DB_URI="mongodb://myUser:myPass123@host1:27017,host2:27017,host3:27017/?replicaSet=myRS"
복제본 세트 에 연결할 때, Laravel 통합이 MongoDB 와의 연결을 관리 하는 데 사용하는 라이브러리는 달리 지정되지 않는 한 다음 작업을 수행합니다.
한 멤버의 주소가 제공되면 모든 복제본 세트 멤버를 검색합니다.
프라이머리 노드에 대한 쓰기 지침과 같은 작업을 적절한 멤버에게 보냅니다. 복제본 세트 프라이머리에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 복제본 세트 프라이머리를 참조하세요.
팁
복제본 세트에 연결할 호스트를 하나만 지정하면 됩니다. 그러나 선택한 호스트를 사용할 수 없는 경우 연결을 보장하려면 호스트의 전체 목록을 제공합니다.
MongoDB 복제본 세트 설정에 대해 자세히 알아보려면 MongoDB Server 매뉴얼 의 복제본 세트 배포 를 참조하세요.
직접 연결
MongoDB 복제본 세트의 특정 노드에서 작업을 강제로 실행하려면 연결 string 에 노드에 대한 연결 정보를 지정하고 true
값이 있는 directConnection
매개 변수를 지정합니다.
직접 연결에는 다음과 같은 제한 사항이 있습니다.
DNS 시드 목록 연결 형식 연결 문자열은 사용할 수 없습니다.
지정된 호스트가 프라이머리 호스트가 아닌 경우 쓰기 작업이 실패합니다.
호스트가 프라이머리가 아닌 경우 연결 옵션에서
secondary
읽기 설정을 지정해야 합니다. 이 제한에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 세컨더리 읽기 설정 항목 을 참조하세요.
다음 예제는 string Laravel 애플리케이션의 .env
파일에 MongoDB 추가하여 복제본 세트의 세컨더리 노드에 직접 연결을 설정할 수 있는 연결 을 보여줍니다. 이 예제에서는 다음 샘플 값을 사용합니다.
host2
세컨더리 노드의 호스트 이름으로27017
MongoDB 노드가 수신 대기하는 포트
DB_URI="mongodb://host2:27017/?directConnection=true&readPreference=secondary"