LEMP스택 설치 -우분투 서버에 MariaDB 데이터베이스 설치하기 (마리아디비)

 LEMP 스택 설치방법 연재작 시리즈의 마지막 글로써, DB(데이터베이스) 서버프로그램으로 MariaDB를 설치하는 방법을 알아보겠습니다.

 

MariaDB (마리아디비)는 mySQL과 호환이 잘되는 데이터베이스로 요즘 인기인 데이터베이스 애플리케이션입니다.  신규로 LAMP 또는 LEMP 스택구성할 때 데이타베이스를 mySQL로 할지 MariaDB로 할지 고민이되는 사람은 얼마 없을 것입니다. 단지 기존시스템에서 전환할때 MariaDB로 전환한다면 호환성을 잘 알아봐야겠죠. 

 

참고

서버접속에대한 사전지식이 필요하다면 아래 링크에서 내용을 자세히 읽어보시기 바랍니다.

CLI 명령어 입력중 $과 #기호 구분, 명령어 앞에 붙는 sudo 가 궁금하다면 아래 블로그글을 읽어보세요.

 

 

apt: 현재 우분투가 가진 mariadb-server 설치정보 알아보기

최신버전 MariaDB 설치하기위해서 apt 프로그램을 이용해서 설치할 겁니다.  apt는 패키지를 설치할 때 어디에서 받아올지 리스트목록으로 관리하는데요. 우분투 16.04에있는 기본 마리아디비 설치정보는 10.0 버전입니다. 이글을 쓰고 있는 시점에서는 10.3버전이 최신 버전이네요. 그래서 10.3 에대한 apt의 설치정보 리스트를 먼저 업데이트해야합니다.

아래 명령어를 통해서 apt의 리스트 중에 MariaDB 패키지에대한 설치정보를 알 수 있습니다.

sudo apt-cache policy mariadb-server

현재 mariadb-server 패키지 설치정보가 10.0 버전이다

위 그림처럼 설치(Installed)는 현재 none 이라서 시스템에 설치된 마리아디비는 없는 걸로 나오고 설치 후보자(Candidate)는 10.0.34로 나옵니다. 그리고 그 아래로 버전테이블이 나오네요. 이대로 그냥 설치하면 10.0 버전이 설치되니 이 것을 먼저 업데이트 해야 최신버전으로 설치할 수 있습니다.

 

apt: MariaDB 최신버전 설치정보 업데이트하기

이글을 작성중인 현재는 10.3이 최신이지만 여러분들이 이 글을 보고있는 미래 시점에서는 버전이 더 높을 겁니다. 그럼 그 시점에서 최신버전은 어디에서 알 수 있을까요? 바로 MariaDB 공식사이트입니다. 공식사이트에서 레파지토리(저장소)를 찾을 줄 알아야겠죠? 

위 링크에 접속해서 아래처럼 차례대로 OS 종류(우분투) , OS 버전(16.04 LTS) 을 선택하고 3번째에서는 자신이 원하는 MariaDB 버전을 선택, 4번째에서는 자신가 가까운 서버위치를 선택해주고나면 아래쪽에 apt 업데이트 방법이 안내가 됩니다.

마리아디비 공식 사이트의 다운로드 저장소 선택 페이지

 

위 그림에서 업데이트 방법에 안내된대로 4개의 명령어를 먼저 입력해봅시다.

$ sudo apt-get install software-properties-common
$ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
$ sudo add-apt-repository 'deb [arch=amd64,arm64,i386,ppc64el] https://ftp.harukasan.org/mariadb/repo/10.3/ubuntu xenial main'
$ sudo apt update

 

마리아디비 10.3 정보 임포팅 명령어 3개가 입력됨
레파지토리 정보 임포팅

sudo apt update 실행

 

이제 apt 리스트에 레파지토리가 잘 업데이트되었나 확인해봐야겠죠? 리스트를 재확인해봅시다

sudo apt-cache policy mariadb-server

그러면 아래 그림처럼 Candidate가 마리아디비 최신버전인 10.3.8 버전이라고 나옵니다. 

apt의 설치후보자(Candidate)가 10.3.8 이라고 나옴

 

MariaDB 최신버전 설치방법

위 결과에서 보면 목록중에 아래에는 이전에 있던 10.0 버전에대한 설치정보도 그대로 있습니다.  이렇게 여러버전에대한 설치정보가 있을때 Candidate가 아닌 다른 버전을 설치하려면 버전을 명시해서 설치하면 될것입니다. 하지만 저는 Candidate에 명시된 버전을 설치하면 되므로 아래명령어를 통해서 곧바로 설치를 시작할 수 있습니다.

sudo apt install mariadb-server

 

마리아디비 설치 시작 명령어를 입력했다

 

계속 진행할지 묻는 질문에 Y를 입력했다

 

위처럼 Do you want to continue? 질문이 나오면 계속 진행하겠다고 Y를 누르고 엔터키를 눌러 진행합니다. 그러면 아래 그림처럼 MariaDB의 root 사용자 비밀번호를 설정하라고 나옵니다. 특수문자, 대소문자, 숫자 조합으로 복잡한 비밀번호를 입력해줍시다.

중요: DB의 root 사용자는 리눅스컴퓨터 사용자 root와는 다릅니다.

DB의 root 유저 비밀번호 설정하기 화면

 

이때 설정하는 root의 비밀번호는 가장 중요한 비번이므로 잊지않도록 자신만 아는 곳에 써놓으세요. 회사 사무실이라면 키보드 뒷면에 적으시겠죠. 아래처럼 비번 재확인이 나오면 같은 비번을 또 입력해줍니다.

DB의 root 유저 비밀번호 설정하기 재확인 입력화면
재확인: 같은 비번을 입력해주세요
마리아디비 설치 완료
설치 완료!

설치가 완료되면 동시에 MariaDB 가 실행되며, 재부팅시에도 자동 시작되도록 설정됩니다. 서비스 현재상태를 확인하는 명령어를 이용해 현지설치된 MariaDB의 버전은 무엇인지, 잘 돌고있는지 확인해봅시다.

service mysql status
MariaDB 가 active (running) 상태
MariaDB running!

위 내용은 내용이 길어서 방향키로 내려볼 수 있는데 QControl+C 를 입력하여  빠져나갑시다. 이렇게 설치가 완료되었는데요. 이제 PHP 와의 연동모듈을 설치하고 데이터베이스 생성시 기본언어셋을 설정하는 중요한 작업을 추가로 해줘야겠습니다.

 

PHP-FPM 에 DB 연동을 위한 php-mysql 모듈설치

php7.2-mysql 모듈이 설치되어있는지 apt 리스트에서 확인해봅시다. 

sudo apt-cache policy php7.2-mysql

아래화면 처럼 Installed: 버전번호 가 나오면 이미 설치되어있는 것입니다.

Installed: 설치됨

위 화면에서 Installed: (none) 이라고 나온다면 아래명령어로 설치해주세요.

sudo apt-get install php7.2-mysql

 

MariaDB 데이터베이스 기본 언어셋으로 UTF8 설정하기

데이터베이스의 기본 언어셋은 중요한 문제입니다. 우리는 컴퓨터를 사용하면서 한글이나 이모티콘글자가 깨져보이거나 네모표시로 표현되는 걸 가끔 마주하곤 하는데요. 컴퓨터의 언어셋을 유니코드(UTF)로 설정하면 해결되는 문제죠. 

마라이디비 데이터베이스의 기본 언어셋은 설치했을 때 latin1 (라틴문자 언어셋)으로 되어있습니다. 이러면 나중에 DB관련 SQL문을 작성할 때 일일히 언어셋을 바꿔야합니다. 특히 한글을 자주쓰는 우리는 더욱 그렇죠. 그래서 테이블생성시 언어셋 기본값이 utf8이되도록해서 그런 문제가 생기지 않게 해봅시다. 그 보다는 모바일에서 사용하는 이모지(emoji)까지 표현가능한 utf8mb4 언어셋으로 지정하는게 좋겠네요.

 

이런 설정을 하기위해서는 /etc/mysql/conf.d/mariadb.cnf 파일을 수정하면되는데 이 파일이 현재는 없을 것입니다. 아래 그림은 /etc/mysql/conf.d 폴더를 살펴본 모습입니다. 파일이 단 하나 뿐이군요.

/etc/mysql/conf.d 폴더안에 mariadb.cnf 파일이 없음
FTP 프로그램에서 살펴본모습.

저와는 다르게 저곳에 이미 mariadb.cnf 파일이 있다면 해당파일을 수정하시면 되는데요. 저는 없으므로 새로 만들고 설정내용을 추가하겠습니다.

그런데 /etc/mysql/conf.d/ 폴더는 root 계정 권한으로만 수정가능합니다. 그러므로 CLI에서 아래처럼 root 명령어 sudo를 써서, mariadb.cnf 파일을 만들고 nano 편집기로 여는 아래 두개 명령어를 실행하겠습니다.

$ sudo touch /etc/mysql/conf.d/mariadb.cnf
$ sudo nano /etc/mysql/conf.d/mariadb.cnf

nano 편집기로 열었을때 기존파일이 있었다면 그 내용이 나올 겁니다. 그럴땐  control + k 키를 눌러 한줄씩 빠르게 삭제하고 비운뒤에 따라하시면 됩니다. 아래 내용을 #기호도 포함해서 복사해서 그대로 붙여넣으세요. 

# MariaDB-specific config file.
# Read by /etc/mysql/my.cnf

[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4

[mysqld]
#
# * Character sets
#
# Default is Latin1, if you need UTF-8 set all this (also in client section)
#
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_ci

참고: 위 내용에서 앞에 #이 붙은건 주석이므로 작성하지 않아도 무관합니다.

그러면 아래 그림처럼 될겁니다.

nano 편집기로 mariadb.cnf 파일에 utf8mb4 세팅을 위한 내용을 작성했다
utf8mb4 세팅을 위한 mariadb.cnf 파일내용

이제 저장하고 nano 편집기를 빠져나가기위해서 control + x  를 누르고  y -> 엔터를 누르면 내용을 저장하고 빠져나오게 됩니다.

ls 명령어로 폴더안을 다시 살펴보면 해당파일이 있을 겁니다.

이제 MariaDB를 재시작해줍니다.

sudo service mysql restart

 

다음단계

축하합니다. 여기까지 LEMP 스택(리눅스에 nginx, MariaDB, PHP)을 설치하는 과정 시리즈 연재를 마칩니다. DB작업이 필요한 PHP 웹서버 프로그래밍을 위한 서버가 마련되었네요. 저 처럼 아마존 라이트세일에서 설치했다면 스냅샷으로 백업해두기 아주 좋은 시점이겠죠.  그러면 다음에 LEMP 스택이 필요할때 그 스냅샷으로 곧바로 새로운 LEMP스택 인스턴스를 생성할 수 있을 테니까요.

그리고 LEMP스택 구성과는 상관없지만, 이제까지 준비한 LEMP스택의 DB 테이블을 편히 볼수 있는 웹애플리케이션 phpMyAdmin을 설치하는 방법을 알아보는건 어떨까요? 이걸 설치하면 PHP 개발할 때 좀더 편해질거예요. 이후 추천하는 다른 작업들은 다음과 같은 것들이 있네요:

그리고 코딩하려는 목적에 따라 자신의 DB와 테이블을 생성하시고 사용하시면 됩니다.이렇게 나만의 리눅스 서버가 마련되었으니 다음으로 할 수 있는 작업은 여러가지를 해볼 수 있겠습니다.

등등 무한한 가능성이 펼쳐져있겠죠.

Post Author: 스위프트

코딩과 글쓰기는 객체 지향적으로. 새로운 댓글을 기다립니다. 주저말고 댓글을 다십시오.

댓글을 남겨주세요.