본문 바로가기
코딩과 알고리즘

AWS(아마존 웹서비스) 몽고DB + php 드라이버 설치

몽고DB를 보면 볼수록 그 매력이 더한것 같습니다.
비록 관계형 데이터 베이스처럼 간단하게 한줄로 group by 문을 통한 통계를 낼 수는 없지만,
맵 리듀스라는 기술을 이용해서 가능하고,
맵 리듀스라는 기술은 관계형 데이터베이스의 프로시저와 맞먹는 기술이라
응용력은 매우 다양해 보입니다.

오늘 그 부분을 다룰건 아니구요.
지난번에 이어 AWS 에 몽고DB 및 php 드라이버를 설치하는 부분을 진행해보겠습니다.
itadventure.tistory.com/373

 

AWS(아마존 웹서비스) 웹서비스 자동 시작 & PHP 설치

지난 시간에는 AWS 프리티어 서버를 세팅하고 nginx 웹서비스를 설치하여, 홈페이지를 띄워보는 부분까지 알아보았습니다. 그리고 소요 시간이 소진되지 않게 서버를 중지하는 부분까지 진행했었

itadventure.tistory.com

역시 몇번의 시행착오 끝에 몽고DB를 설치하고 PHP에서 이를 연결하는 부분을 알아냈습니다.
자. 하나씩 보실까요? :)
※ 이 설치방법은 아마존 리눅스 2 버전에서 성공한 경우이며, 향후 아마존 리눅스 3버전으로 바뀌거나 다른 요인에 의해 작동이 안 될 가능성은 있습니다. ( 2020. 11. 21일 기준 )


아마존 리눅스2에서는 몽고DB 4.4버전이 설치에 성공했었는데요.
우선 몽고DB를 yum 으로 설치하려면 yum 저장소 정보를 추가해야 합니다.
sudo su - root 명령으로 루트 권한으로 바꾼 단계부터 진행합니다.

아래 명령을 내려 vi 편집기를 시작합니다.

vi /etc/yum.repos.d/mongodb-org-4.4.repo

그러면 아래와 같이 vi 편집기가 열리면서 새로운 파일 ( 화면 하단 [New File] ) 이라고 뜰 겁니다.

이 상태에서 i 키를 눌러 삽입모드로 전환한 다음 아래 내용을 복사해서 넣어 주세요

[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc

그리고 저장해 줍니다.  아래 키를 순차 입력하면 저장소 정보가 저장됩니다.
ESC, :wq!, Enter

이어서 yum 으로 몽고DB를 설치합니다.

yum install -y mongodb-org

이어서, php 에서 몽고 DB를 사용하려면 PHP 몽고 드라이버를 설치해주셔야 하는데요.
PHP몽고 드라이버를 설치하기 위한 php-pear 라이브러리를 먼저 설치해주셔야 합니다.

yum -y install php-pear

그리고 phpize 라는 php 모듈 컴파일러와 gcc 도 추가로 설치해줍니다.

yum -y install php-devel
yum -y install gcc

그리고 몽고DB PHP 드라이버를 설치해주면 되는데요. 드라이버 소스를 다운받아 컴파일까지 진행하므로 약간 시간이 소요됩니다.

pecl install mongodb

끝나면 화면에는 이런 결과가 나와 있을 겁니다.
몽고DB에 접속할 PHP 드라이버 파일이 /usr/lib64/php/modules/mongodb.so 파일로 설치되었다는 내용입니다.

이제 PHP 환경설정 파일에서 이 드라이버를 사용하겠다고 정해주어야 하는데요.
vi 편집기로 PHP 환경설정 파일을 여신 다음에,

vi /etc/php.ini

대문자 'G'키를 누르면 맨 마지막 줄로 이동합니다.

이어서 $, a, Enter 키를 순차 입력해보세요.
$ 키는 문장의 맨 마지막으로 이동, a 키는 새로운 글자를 추가하되 뒷 부분에 추가,
Enter 키는 '다음줄'이라는 글자를 추가한 거라서 다음줄로 한칸 벌려집니다.

아래 내용을 넣어 주신 다음에

extension=mongodb.so

ESC, :wq!, Enter 키를 순차 입력해서 파일을 저장해 주세요.

자, 이제 몽고 DB 와 php 드라이버가 설치완료되었습니다.
아래 명령을 내려 웹서비스와 php 를 재시작합시다.

systemctl restart nginx
systemctl restart php-fpm

이제 마지막 단계입니다. PHP에는 네임스페이스라는게 있는데요.
이 네임스페이스는 컴포저라는 도구와 밀접한 관련이 있는데요.
먼저 아래와 같이 컴포저를 설치하고

yum -y install composer

기본적으로 root 권한으로는 컴포저를 실행할 수 없기 때문에 아래 명령을 이용, 컴포저를 실행 가능하도록 변경합니다.

export COMPOSER_ALLOW_SUPERUSER=1;

그리고 현재 nginx 의 홈 폴더로 이동하신 다음,

cd /usr/share/nginx/html

아래 명령을 내려줍니다.

composer require mongodb/mongodb

이제 완전히 설치가 끝났습니다.

몽고DB 에 접속할 테스트 코드를 만들어 봅시다

마침 현재 홈페이지 홈 폴더에 위치해 있기 때문에, 

vi 에디터로 웹페이지를 하나 만들어 봅시다.
아래 명령을 내려 vi 편집기를 여신 다음에,

vi mongotest.php

i 키를 누르고 아래 내용을 붙여 넣어 주세요.

<?php  
require 'vendor/autoload.php';  
// 몽고 DB에 연결합니다.
$con = new MongoDB\Client("mongodb://localhost:27017");  
// craydb 데이터 베이스를 선택합니다.
// 만약 데이터베이스가 없어도 데이터 삽입 단계에서 자동 생성됩니다.
$db = $con->craydb;
// book 콜렉션을 선택합니다. 역시 컬렉션이 없어도 삽입 단계에서 자동 생성됩니다.
$collectionBook = $db->book;
// 도서 정보를 삽입합니다.
$collectionBook->insertOne( [ 'title' =>'Secret of MongoDB', 'author' =>'cray' ] );  
$collectionBook->insertOne( [ 'title' =>'Secret of PHP7', 'author' =>'cray' ] );  
$collectionBook->insertOne( [ 'title' =>'Secret of Cooking', 'author' =>'cray`s wife' ] );  
// 입력한 정보를 검색합니다.
$books = $collectionBook->find( [ 'author' =>'cray'] );  
foreach ($books as $book) {  
echo $book['title'], ': ', $book['author']."<br>";  
}  
?> 

크레이가 IT관련 새로운 책을 2권 냈고, 크레이의 사랑하는 아내가 요리 관련 책을 한 권 낸 내용이지만,
뭐 여러분께서 자유롭게 바꿔 주셔도 됩니다 :)

아마존 리눅스 콘솔창에서는 한글이 깨져보이실 텐데요.
실행에는 문제 없을 겁니다 :)

저장하기 위해  ESC, :wq!, Enter 키를 순차 입력해 주세요.
그리고 웹브라우저 창에서 퍼블릭 URL + mongotest.php 를 붙여서 띄워 보시면
아래와 같은 내용이 보이실 겁니다.

방금 전에 어떤 일이 일어났냐면 몽고DB에 접속해서 책 3권의 정보를 저장하였습니다.
그리고 그 중 크레이가 지은 책만 골라서 2권을 검색, 그 결과를 보여주는 간단한 소스입니다.

정말로 책이 입력되었는지, 눈속임이 아닌지 확인하시려면 :)
몽고 DB에 접속해서 확인해 보시면 됩니다.

mongo 를 입력하여 몽고DB 콘솔창에 접속하신 다음에,
show dbs 명령을 내려봅시다.
그러면 현재 데이터 베이스 목록이 나오는데, 금방 PHP에서 만들어진 craydb 가 새로 생겨났습니다.

use craydb 명령을 내려 craydb 데이터베이스를 선택하신 다음

show collections 명령을 내려보면 book 테이블이 존재하는 것을 볼 수 있습니다.
이 역시 PHP 소스를 실행해서 생겨난 것입니다.

그리고 db.book.find().pretty() 명령을 내려보면, 
3권의 책 정보가 노출되는 것을 보실 수 있습니다.
그 중 2권은 저자(author)가 cray 이고, 1권은 cray`s wife 인 것을 보실 수 있습니다 :)

이로써 AWS 아마존 리눅스2 버전에 nginx + php + 몽고DB + php몽고DB드라이버 설치가 완료되었습니다.

서버 설치는 크레이가 다루던 일이 아니라서 그런지 꽤 헤메인 부분이 있지만, 그래도 설치에 성공해서 통쾌하군요.
아무쪼록 필요하신 분에게 유용한 정보가 되셨으면 좋겠습니다.

오늘도 여기까지 긴 내용 읽어주셔서 감사합니다 :)


하나님의 말씀을 마음에 새겨두면 환난날에 도움이 됩니다.

아무 것도 염려하지 말고 오직 모든 일에 기도와 간구로 너희 구할 것을 감사함으로 하나님께 아뢰라 그리하면 모든 지각에 뛰어난 하나님의 평강이 그리스도 예수 안에서 너희 마음과 생각을 지키시리라
빌립보서 4장 6, 7절 말씀

반응형