이룰수 없는 꿈을 꾸고 이길수 없는 적과 싸우며, 이룰수 없는 사랑을 하고 견딜 수 없는 고통을 견디고, 잡을수 없는 저 하늘의 별도 잡자. - 세르반테스

백엔드/Laravel

몽고DB 연동하기

별구르미 2023. 4. 21. 16:08

몽고DB연동을 위해서 우분투에서 pecl 을 이용해서 설치를 해야하는데 

pecl 를 모른다고 에러가 나네요 

 

그래서 또 열심히 자료를 찾아보니 php-dev를 설치하라고 하네요. 

일단 제 로컬환경인 도커에 먼저 설치해봅니다. 

 

# apt install php7.4-dev
# pecl install mongodb

위와 같이 했는데 오류가 발생하는 경우가 있습니다. 그럴 때는 의존적인 모듈이 빠져 잇을 수 잇으니 추가 설치가 필요합니다. 

$ sudo php -m

설치된 PHP 관련 모듈을 확인해 주시고 , 아래와 같이 필요한 모듈을 설치해주면 됩니다. 저의 경우는 xml이 없어서 발생한 문제였습니다. 

$ sudo apt-get install php-pear

pear는 이미 최신버전이 설치되어 있어 전 건너띄었어요 

$ sudo apt-get install php-xml php7.4-xml
# vi /etc/php/7.4/cli/php.ini

위 파일을 열어 편집합니다.

extension="mongodb.so"

확장모듈을 추가하기 위해서 위와 같이 수정합니다.

# composer require jenssegers/mongodb

위와 같이 실행을 해 줍니다. 

완료되면 Laravel 의 DB환경을 추가해줍니다. 

 

※ Laravel 소스에서 환경파일 수정하기 

Step 1. config\database.php 파일을 수정합니다. 

'connections' => [
  'mongodb' => [
        'driver' => 'mongodb',
        'dsn' => env('DB_URI', 'mongodb+srv://username:password@<atlas-cluster-uri>/myappdb?retryWrites=true&w=majority'),
        'database' => 'myappdb',
],

Step 2. DB 커넥션을 기본값으로 mongodb로 변경하기(필요할 분만)

/*
    |--------------------------------------------------------------------------
| Default Database Connection Name
    |--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
    */

'default' => env('DB_CONNECTION', 'mongodb'),

전 몽고DB가 부가적인 거라 안했어요 

Step 3. Define Providers 수정

'providers' => [

/*
* Laravel Framework Service Providers...
*/

Jenssegers\Mongodb\MongodbServiceProvider::class,

이제 완료되었으니 몽고DB를 이용하여 CRUD를 구현해보면 됩니다. 

 

저의 경우에는 Laravel에서는 Read 만 목적으로 설치했어요.