서버 운영/APM 서버 구축

phpMyAdmin 수동 설치 02 - 심볼릭 링크를 이용한 보안 접속

씨실과 날실 2019. 7. 3. 09:00

지금까지 phpMyAdmin을 설치하고 업그레이드하는 방법들에 대해 글을 올렸습니다. 최근에는 phpMyAdmin을 수동으로 설치하는 방법에 대해 글을 올렸습니다. 그러나 그 방법은 보안상 그다지 좋은 방법이 아닙니다. 개인적으로만 활용할 목적으로 가상 서버를 구성한 것이라면 이전 방법도 그다지 큰 문제는 없겠지만 실제 서버 서비스를 제공하는 중이라면 이전 방법들은 보안에 취약한 설치 방법입니다. 따라서 심볼릭 링크를 이용한 보안 접속 설치 방법을 알려드리도록 하겠습니다.

사전 설치 패키지

study@study-VirtualBox:~$ sudo apt install dbconfig-common dbconfig-mysql javascript-common libjs-jquery libjs-sphinxdoc libjs-underscore libzip4 php-bz2 php-curl php-gd php-mbstring php-mysql php-pear php-php-gettext php-phpseclib php-tcpdf php-xml php-zip php7.2-bz2 php7.2-curl php7.2-gd php7.2-mbstring php7.2-mysql php7.2-xml php7.2-zip

phpMyAdmin을 설치하기 전 위 패키지들을 설치해주셔야 문제 없이 작동됩니다. 특히 php7.2-mysql 패키지는 필수로 설치해주셔야 합니다. 만약 php 버전이 7.2아닌 경우, 서버에서 사용 중인 php 버전에 맞는 패키지를 설치해주셔야 합니다.

phpMyAdmin 다운로드

study@study-VirtualBox:~$ sudo wget -P ~/다운로드 https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

설치하고자 하는 phpMyAdmin 버전의 파일 링크 주소를 확인하여 내려받습니다.

이 글을 쓰고 있는 시점에서 phpMyAdmin 최신 버전은 4.9.0.1입니다. 

웹루트 디렉토리 밖에 다운받은 파일 압축 풀기

study@study-VirtualBox:~$ sudo tar -xzf /home/study/다운로드/phpMyAdmin-4.9.0.1-all-languages.tar.gz -C /var/www 

우분투 APM 서버의 웹루트 디렉토리는 보통 /var/www/html입니다. 만약 이 디렉토리 안에 phpMyAdmin을 설치한다면 누구나 손쉽게 접속할 수 있는 문제가 있습니다.

인터넷과 연결되지 않은 개발 서버 또는 테스트 서버라면 문제가 없겠지만 인터넷에 연결되어 서비스를 제공하는 서버라면 해킹 가능성을 늘 염두할 필요가 있습니다. 따라서 웹루트 디렉토리가 아닌 상위 디렉토리로 뺀 것입니다.

심볼릭 링크 생성

study@study-VirtualBox:~$ sudo ln -s /var/www/phpMyAdmin-4.9.0.1-all-languages /var/www/html/dbmgt

이제 심볼릭 링크를 이용해 웹루트 디렉토리에 실제로는 존재하지 않는 가상의 디렉토리 링크를 생성하여 실제 phpMyAdmin 디렉토리와 연결해줍니다.

저는 dbmgt라는 심볼릭 링크를 웹루트에 만들어 실제 phpMyAdmin 디렉토리와 연결해주었습니다.

study@study-VirtualBox:/var/www/html$ ls -al
... 생략 ...
lrwxrwxrwx  1 root     root        41  6월 28 17:47 dbmgt -> /var/www/phpMyAdmin-4.9.0.1-all-languages
... 생략 ...
study@study-VirtualBox:/var/www/html$

이제 ls 명령어를 이용해 심볼릭 링크가 잘 생성되었는지 확인합니다.

phpMyAdmin 설정

config.inc.php 파일 생성

http://도메인 주소/심볼릭 링크 이름/setup에 접속합니다. 그러면 phpMyAdmin의 환경설정을 할 수 있습니다. 설정을 끝마친 후 다운로드 버튼을 눌러 파일인 phpMyAdmin의 환경설정 파일인 config.inc.php를 다운받습니다.

웹브라우저 다운로드 폴더 기본값은 계정명/다운로드입니다. 우분투의 경우 /home/계정명/다운로드가 기본값입니다.

study@study-VirtualBox:/var/www/html$ cd ~/다운로드
study@study-VirtualBox:~/다운로드$ sudo cp config.inc.php /var/www/phpMyAdmin-4.9.0.1-all-languages

위 명령을 실행하여 내려받은 config.inc.php 파일을 실제 phpMyAdmin 폴더 안에 복사해줍니다.

오류 문제 해결

config.inc.php 파일을 복사해 넣은 다음 http://도메인 주소/심볼릭 링크 이름에 접속하여 첫 로그인을 하면 위 그림과 같은 오류 안내가 화면 하단에 뜹니다. 해당 오류 내용을 옮기면 아래와 같습니다.

The $cfg['TempDir'] (./tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.

phpmyadmin 하위 디렉토리 중 tmp라는 디렉토리가 없어서 나타나는 오류입니다.

해결 방법은 두가지 입니다.

해결법 1

config.inc.php 파일을 열어 아래 구문을 추가해줍니다.

$cfg['TempDir'] = '/tmp';

해결법 2

해당 디렉토리를 생성해주고 퍼미션 설정을 해주시면 됩니다.

study@study-VirtualBox:~/다운로드$ cd /var/www/phpMyAdmin-4.9.0.1-all-languages study@study-VirtualBox:/var/www/phpMyAdmin-4.9.0.1-all-languages$ sudo mkdir tmp study@study-VirtualBox:/var/www/phpMyAdmin-4.9.0.1-all-languages$ ls -l | grep tmp drwxr-xr-x 2 root root 4096 6월 27 17:31 tmp study@study-VirtualBox:/var/www/phpMyAdmin-4.9.0.1-all-languages$ sudo chmod 777 tmp study@study-VirtualBox:/var/www/phpMyAdmin-4.9.0.1-all-languages$ ls -l | grep tmp drwxrwxrwx 2 root root 4096 6월 27 17:31 tmp study@study-VirtualBox:/var/www/phpMyAdmin-4.9.0.1-all-languages$

위 명령에 대한 자세한 설명은 아래 링크를 참고하시기 바랍니다.

위 작업을 마치고 재접속을 하면 하단의 오류 경고가 사라지며 무사히 설치가 완료됩니다.