$ sudo apt-get update
$ sudo apt-get install nginx
이렇게 패키지 관리자를 쓰면 인생이 편해진다...
Nginx
라는 웹 서버를 설치했으니까 인스턴스의 퍼블릭 ipv4
값으로 접속을 하면 Nginx
의 초기페이지가 떠야한다
하지만 안나올거다. 왜냐하면 AWS EC2
의 방화벽에 의해 비승인된 접근은 다 막아버리기 때문이다.
저번 글에서 인스턴스를 설정하는 중에 나온 보안 그룹에서 우리는 SSH
가 사용하는 포트인 22
포트만 열어놓고 지나간 것을 볼 수 있다.
우리가 접속하려는 웹서버는 http
라는 프로토콜을 이용하고 80
포트를 사용한다. 따라서 우리는 http
가 사용하는 80
포트를 열어놓아야한다.
보안그룹 설정페이지에서 인바운드 규칙 편집
을 누르면 외부에서 접근할 수 있는 포트를 설정할 수 있게된다.
보면 http
나 SSH
는 0.0.0.0/0
를 가진 사용자가 접속 할 수 있다고 나오는데 이 말은 모든 사람이 어떤 조건에서도 접근할 수 있다는것을 의미한다.
따라서 이 방식으로 하면 보안이 최악이다. 그리고 운이 안 좋은 경우 누군가가 불특정 다수한테 뿌리는 패킷 공격을 받고 프리 티어 인스턴스
가 돈 먹는 하마로 업그레이드 될 수도 있다.
나는 최근 페이팔이 해킹당해서 액땜을 했기때문에 그냥 열어놓겠다...눙물
헛소리 그만하고 다시 접속해보면
짜짠 접속이 되었다. ㅎ
$ sudo apt-get install mysql-server
MySQL
의 설치가 완료되었다. 소스 설치할때는 진짜 한나절 걸리더니 여기서는 30초 컷...
$ sudo apt-get install php-fpm php-mysql
php 설치가 성공적으로 되었는지 확인할때는 웹서버 Nginx
의 기본 경로 /var/www/html
에 phpinfo.php
를 만들고
<?php
phpinfo();
?>
을 작성한 뒤 저장하고 퍼블릭 IPV4 주소/phpinfo.php
로 접속하면 오류가 난다...
이유는 Nginx와 PHP가 연동이 안되었기때문이다. 따라서 Nginx
의 설정파일인 /etc/nginx/sites-available/default
을 수정해야한다.
$ cd /etc/nginx/sites-available
$ sudo vi default
노란색 부분의 주석을 해제해 주고 두번째 노란색 부분의 php-fpm
의 버전을 7.0
에서 7.2
로 바꿔준다.
$ sudo service nginx restart
$ journalctl -xe
$ sudo vi /etc/nginx/sites-enable/default
$ sudo service nginx restart
Nginx
를 다시 시작하려고 하면 오류가 뜬다
오류에서 나온것처럼 journalctl -xe
을 입력해보니까
/eㅅc/nginx/sites-enable/default
에서 괄호가 빠진것을 알 수 있다.
sudo vi /etc/nginx/sites-enable/default
에서 괄호를 추가해주면 문제없이 재시작이 되는것을 볼 수 있다.
그리고 다시 퍼블릭 IPV4 주소/phpinfo.php
로 접속하면 아래와 같은 화면이 뜨는것을 볼 수 있다
그럼 이로써 AWS에서 Nginx+Ubuntu+MySQL+PHP를 이용한 서버 구축은 끝이났다.