본문 바로가기

KnowHow/Web Server

Ubuntu 16.04 에서 APM 설치 하기 (Apache2 + PHP + Mysql or MariaDB)

작성자 : Deok



이 포스트에서는 간단히 apt 를 이용하여 많이 사용하는 서버 스택인 APM ( Apache2 + PHP + Mysql or MariaDB ) 를 설치하는 방법을 알아 보겠습니다. 

* 개인적으로는 Nginx + PHP + MariaDB 를 추천 드립니다.


1. OS 버전 확인


Ubuntu 의 경우 아래의 방법으로 간단히 버전 확인이 가능합니다.


$ lsb_release -a



버전 확인에서 버전이 16.04 로 확인 되었다면 진행합니다.



2. Ubuntu 업데이트 및 업그레이드 진행하기


* 경험상 꼭 필요한 과정은 아닙니다. 잘 모르신다면 진행하지 않는 편이 좋을 수 있습니다. 

* update 까지는 괜찮지만 upgrade는 서버의 패키지들을 업그레이드해 주는데 현재 상태가 크게 문제없고 잘 모르신다면 추천드리지 않습니다. - 특히 운영 중인 서버라면


$ sudo apt-get update && apt-get upgrade



3. Apache2 설치하기


$ sudo apt-get install apache2


위의 명령어로 정상적으로 설치되었다면 이제 서버의 public ip로 접속할 경우 apache2의 기본 페이지를 확인하실 수 있을 것입니다.





4. PHP 설치하기


이제 APM 의 P 인 PHP 를 설치할 차례 입니다. 여기서는 php7.2 를 설치 합니다.


우선 설치에 필요한 기본 툴 들을 설치 하여 주시고


$ sudo apt-get install software-properties-common python-software-properties


그리고 저장소를 업데이트 시켜 주시도록 합니다.


$ sudo add-apt-repository -y ppa:ondrej/php
$ sudo apt-get update


이제 설치를 시작합니다. 아래는 기본 적으로 설치해야할 패키지 입니다.


$ apt-get install php7.2 php7.2-cli php7.2-common


그리고 아래는 많이 쓰이는 php7.2 추가 패키지들 입니다. 필요에 따라서 apt-get 을 이용해 설치 하시면 됩니다.


$ sudo apt-get install php7.2-curl php7.2-gd php7.2-json php7.2-mbstring php7.2-intl php7.2-mysql php7.2-xml php7.2-zip


이제 설치가 완료 되었다면 php -v 를 통해 php 의 버전을 확인 하실 수 있습니다.


$ php -v





5. apache2 에서 php7.2 사용 하도록 하기 - 기존 Apache2 + PHP7.0 이 있었을 경우


apt-get 으로 설치된 apache2 + php 는 기본적으로 php7.0을 이용하고 있는데요. 이것을 아래의 명령어로 php7.2 로 변경 할 수 있습니다.


php7.0 비활성화

$ a2dismod php7.0



php7.2 활성화

$ a2enmod php7.2


Apache2 재시작


$ service apache2 restart


만약 설치가 되어 있지 않았다면 저와 같이 php7.0 모듈이 없고 php7.2  모듈이 이미 활성화 되었다는 메세지를 확인 하실 수 있을 것 입니다.




6-1. DB 설치하기 - Mysql


$ sudo apt-get install mysql-server


설치를 시작하면 아래와 같이 root 의 비밀번호를 설정하는 화면이 뜨게 됩니다. 원하는 비밀번호를 넣고 OK 를 눌러 주시면 됩니다.




정상 적으로 설치되었다면 mysql -V를 통해 버전을 확인하실 수 있습니다.


$ mysql -V




mysql 삭제 방법


$ sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
$ sudo rm -rf /etc/mysql /var/lib/mysql
$ sudo apt-get autoremove
$ sudo apt-get autoclean


6-2. DB 설치하기 MariaDB


MariaDB 의 경우 외부 저장소를 가져오셔야 합니다. 아래의 명령어로 저장소를 추가하고 업데이트 해주도록 합니다.


$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

$ apt-get udpate


* 위의 저장소는 아래의 프로그램들을 포함하고 있습니다. 물론 여기서는 mariadb-server 와 mariadb-client 만 설치할 예정입니다.


MariaDB Repository

MariaDB MaxScale Repository

MariaDB Tools Repository


자세한 내용은 아래의 주소를 참고하시기 바랍니다. (영문 공식 문서)

링크 : https://mariadb.com/kb/en/library/mariadb-package-repository-setup-and-usage



이제 mariadb 를 설치해 주도록 합니다. 위의 저장소 추가가 잘 되었다면 아래의 명령어로 간단히 설치가 가능합니다.

$ sudo apt-get install mariadb-server mariadb-client


설치가 모두 되었다면 mysql 과 마찬가지로 mysql -V 를 통하여 버전 확인이 가능합니다.





7-1. 테스트 - Apache2 + PHP 테스트 하기


일단 apache2 + php 를 테스트 하도록 합니다.


vi 를 통해서 /var/www/html/phpinfo.php 를 생성 후 phpinfo 코드를 넣어 주도록 합니다. 

$ vi /var/www/html/phpinfo.php

<?php
        phpinfo();
?>


이제 위에서 http://[서버주소]/phpinfo.php 에 들어 가시면 아래와 같은 phpinfo 를 확인 하실 수 있을 것 입니다.



이제 apache2 + php 의 연동이 확인 되었으니 mysql or mariadb 를 확인 할 차례 입니다.


간단히 아래의 코드에서 본인이 설정한 비밀 번호만 넣어서 테스트를 해보도록 합니다.


7-2. 테스트 - Apache2 + PHP + Mysql 테스트 하기


우선 PHP 로  Mysql 에 접속하기 위해서는 계정을 만들고 접속 할수 있는 권한을 주셔야 하는데요.


아래와 같이 Mysql 접속 후 계정을 생성 후 localhost 로 접근 할 수 있게 권한을 주시면 됩니다.


$ mysql -u root -p 

MariaDB [(none)]> CREATE USER '[사용자이름]'@localhost IDENTIFIED BY '[비밀번호]';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO '[사용자이름]'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit


 위의 문구에서 GRANT ALL PRIVILEGES ON *.* 에서 *.* 은 [database].[table] 입니다. 위와 같이 권한을 줄 경우 데이터베이스의 전체 권한을 주는 것이기 때문에 주의 하시기 바랍니다.


이제 vi /var/www/html/db.php 로 파일을 생성 하고 들어가서 코드를 넣어 주시기 바랍니다.


$ vi /var/www/html/db.php

<?php
    $mysql_hostname = 'localhost';
    $mysql_username = '[사용자이름]';
    $mysql_password = '[비밀번호]';
    $mysql_port = '3306';
    $mysql_charset = 'utf8';

    $connect = new mysqli($mysql_hostname, $mysql_username, $mysql_password);

    var_dump($connect);

    if($connect->connect_errno){
        echo '[연결실패] : '.$connect->connect_error.'';
    }else{
        echo '[연결성공!]';
    }

?>


이제 http://[서버주소]/db.php 로 들어가서 접속이 정상적으로 되는지 테스트를 해보시면 됩니다.


아래는 정상적으로 접속이 되었을 경우 상태입니다.



만약 접속에 실패할 경우 아래와 같이 실패 메시지와 함께 이유를 확인하실 수 있으실 것입니다.



간단히 Apache2 + PHP7.2 + Mysql or MariaDB 를 셋팅해 봤습니다.


즐거운 개발 되시기 바랍니다 :D