우분투 메이트 16.04 LTS Apache, PHP, Maria DB 서버 구축하기
안녕하세요! 상큼한놈 입니다. 오늘은 본격적으로 우분투 메이트(Ubuntu Mate|우분투 마테)에 웹 서버를 구축하는 방법에 대해서 알아보려고 합니다. 라즈베리파이 3 Model B로도 간단한 웹 서버를 구축할 수 있는데, 심지어 워드프레스를 이용한 블로그(구동 속도가 조금 느리지만)도 구현이 가능합니다. 라즈베리파이에 SMB 서버가 구축되어 있으면 NetBean을 이용한 원격 관리가 가능합니다.
원래 리눅스 환경에서는 XAMPP로 손쉽게 서버를 구축할 수 있으나 이것이 arm에서는 동작하지 않더군요. 최근 버전에서는 x86도 제외되어서 x64만 지원합니다.
우분투 메이트(Ubuntu Mate) 16.04에 Apache2, PHP, MariaDB를 설치
먼저 php와 apache2, mariadb를 APT(Advanced Packaging Tool)를 통하여 다운로드 및 설치해 줍니다.
1 2 3 |
$ sudo apt-get install php $ sudo apt-get install apache2 $ sudo apt-get install mariadb-server |
아파치의 동작을 확인한 뒤, 아파치와 php가 연동하는 데 필요한 패키지를 설치해 줍니다. 이후 PHP가 동작하는지 확인해 봅니다.
1 2 3 |
$ apache2 -v $ sudo apt-get install libapache2-mod-php7.0 $ php -v |
MariaDB 보안 설정하기
MariaDB(mysql)에 접속한 뒤 Root 비밀번호를 설정해 줍니다.
1 2 3 |
$ sudo mysql > SET PASSWORD FOR root@localhost = PASSWORD('원하는 패스워드 입력'); > quit; |
MariaDB(mysql)_secure_installation을 실행하여 보안 속성일 설정해 줍니다. 이미 암호는 앞에서 지정했기 때문에 첫 번째 패스워드를 변경하겠냐는 질문에는 n을 나머지는 (이 설정에 대해서 잘 모르는 분이라면) 엔터키를 끝날 때까지 눌러 주세요.
1 |
sudo /usr/bin/mysql_secure_installation |
마지막 ‘Thanks for MariaDB!’ 창이 뜨면 기본적인 MariaDB(mysql)의 보안 설정은 완료된 것입니다.
하지만 아직 관리자 권한으로 비밀번호를 입력하지 않아도 Maria DB에 접속이 되는 문제가 있기 때문에 이 점을 수정하도록 하겠습니다.
1 2 3 4 5 |
$ sudo mysql > USE mysql; > UPDATE user SET plugin='' WHERE user='root'; > FLUSH privileges; > quit; |
이제 관리자 권한으로 MariaDB에 접근하더라도 비밀번호를 입력하지 않으면 접속이 되지 않습니다. 그 대신 다음과 같이 로그인을 시도해 줍니다.
1 2 |
$sudo mysql -u root -p 자신이 설정한 패스워드 |
이제 php와 MariaDB(mysql)가 연동되도록 돕는 패키지를 설치합니다.
1 |
$ sudo apt-get install php-mysql |
웹 서버 구축을 위한 전용 사용자 추가 및 동작 테스트 파일 제작하기
이후 웹사이트 구축 전용 사용자를 생성합니다. 필자의 경우에는 ‘webuser’ 계정을 생성하였습니다. 그 뒤 생성된 사용자의 홈 디렉토리로 진입한 뒤, www 폴더를 생성합니다. 모들 설정을 마친 후 정상 동작 확인 테스트를 위하여 index.php 파일을 제작합니다.
1 2 3 4 |
$ sudo adduser webuser $ cd ~webuser $ sudo mkdir www $ sudo nano www/index.php |
phpinfo를 출력하는 간단한 php 파일을 생성합니다.
1 2 3 |
<?php phpinfo(); ?> |
Apache 기본 디렉토리 변경하기
Apache의 기본 디렉토리를 변경하기 위하여 apache2.conf 파일을 편집기로 실행합니다.
1 |
$ sudo nano /etc/apache2/apache2.conf |
다음과 같이 디렉토리 설정을 ‘/var/www’에서 ‘/home/사용자/www’로 변경해 줍니다. (저장시 단축키는 ‘Control+X’ ->’Y’->’↵’ 입니다.)
정확히 수정해 주기 위하여 또 다른 설정 파일을 변경해 줍시다. 설정 파일을 잘못 변경했을 때를 대비해서 필자는 백업 파일을 생성하였습니다.
1 2 |
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/000-default.conf.bak $ sudo nano /etc/apache2/sites-available/000-default.conf |
DocumentRoot를 ‘/var/www’에서 ‘/home/사용자/www’로 변경해 줍니다. 이후 변경된 파일을 저장해 줍니다.
PHP 설정을 변경하기
이제 마지막으로 PHP 설정을 변경하기 위하여 php.ini 파일을 편집기로 실행합니다.
1 |
$ sudo nano /etc/php/7.0/apache2/php.ini |
변경사항이 꽤 많습니다. 이후에 나오는 표를 참고하여 변경된 사항을 모두 변경해 줍니다. ‘Control+W’ 키를 이용하여 문자열을 검색할 수 있습니다. 세미콜론(;)만 제거하는 항목도 있으니 잘 확인해서 변경해 주세요.
변경 전(前) | 변경 후(後) |
;default_charset =”UTF-8″ | default_charset=”UTF-8″ |
data.timezone=”Europe/Berlin” | data.timezone=”Asia/Seoul” |
;mbstring.language = Japanese | mbstring.language = Korean |
;mbstring.internal_encoding = | mbstring.internal_encoding = UTF-8 |
;mbstring.http_input = auto | mbstring.http_input = UTF-8 |
;mbstring.http_output = SJIS | mbstring.http_output = pass |
;mbstring.encoding_translation = Off | mbstring.encoding_translation = On |
;mbstring.detected_order = auto | mbstring.detected_order = UTF-8 |
;mbstring.substitute_charcter = none; | mbstring.substitute_charcter = none; |
(해당 설정은 ‘PHP+MySQL 웹 개발 마스터 북 -나가타 요리노부’의 PHP 설정 챕터를 참고하였습니다!)
항목이 꽤 많습니다. 위와 같이 검색기능을 이용하시면 좀 더 쉽게 설정을 변경해 주실 수 있습니다. 모든 설정 변경이 완료되면 저장해 줍니다.
변경된 설정을 적용하기 위하여 Apache를 재시작합니다.
현재의 진행 상황에서는 특별히 방화벽을 켜주거나 꺼주는 작업을 하지 않았습니다. 우분투 메이트 기본값은 모든 방화벽이 꺼져있기 때문인데, 모든 설정이 완료되면 방화벽을 켠 후 특정 포트만 열어주는 작업을 진행해 주셔야 합니다. 방화벽을 구성하시고자 하시는 분은 ‘우분투 메이트 16.04 LTS 방화벽(firewall) 설정 및 관리하기‘ 포스트를 참고해 주세요.
우분투 메이트(Ubuntu Mate) 서버 동작 확인하기
방화벽 설정까지 모두 마친 뒤 웹브라우저로 라즈베리파이 3의 ip주소를 입력해 보았습니다. 그럼 위와 같이 서버 설정 중에 생성했던 index.php의 phpinfo()가 정상적으로 나타나는 것을 확인할 수 있습니다.
이제 라즈베리파이 3에서 PHP나 HTML 문서를 제작하여 자신의 서버를 간단하게 운영할 수 있습니다. 수고하셨습니다.
필자가 작성한 우분투 메이트에 관한 포스트 목록을 확인하고 싶으시면 이곳을 클릭해 주세요.