이 포스트에서는 간단히 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
'KnowHow > Web Server' 카테고리의 다른 글
Apache2 에서 특정 IP 만 허용하기 (0) | 2018.10.17 |
---|