EC2 인스턴스
에 접속해서 Nginx
를 설치한다.
Nginx
설치가 완료되었다면 잘 설치되었는지 확인하기 위해 EC2 인스턴스
의 퍼블릭 IPv4 주소
를 브라우저에 입력해서 접근해본다. 하지만 Nginx
화면이 나오지 않는데, 이는 보안 그룹 설정을 하지 않았기 때문이다. 인스턴스 세부 정보의 보안
탭에서 확인해보면 인바운드 규칙
에 22번 포트
만 열려있는 것을 확인할 수 있다(이 때문에 WinSCP
로 서버에 접속할 수 있는 것이다). 따라서, 웹 브라우저(클라이언트)에서 접근하기 위해서 보안 규칙을 추가해줘야 한다.
보안
탭 내부의 보안 그룹
을 클릭하면 인바운드 규칙을 편집할 수 있다. 인바운드 규칙 편집
버튼을 눌러 진입한 뒤, 규칙 추가
버튼을 누르고 다음과 같이 추가한다. HTTP
유형을 선택하면 프로토콜은 자동으로 TCP
로 선택되므로 소스 유형만 위치 무관
으로 변경해준 뒤 규칙 저장
버튼을 눌러 저장한다. 이 과정을 거치면 EC2 인스턴스
서버에서 80번 포트
를 접근할 수 있도록 열어준 것과 같다.
다시 EC2 인스턴스
의 퍼블릭 IPv4 주소
를 브라우저에 입력해서 접근해보면 다음과 같이 Nginx
화면이 잘 나오는 것을 볼 수 있다. 이렇게 나온다면 성공적으로 Nginx
를 설치한 것이다.
MySQL
을 설치한다.
MySQL
의 root
비밀번호를 입력하라는 창이 나오는데, 원하는 비밀번호를 입력해주면 된다.
비밀번호를 입력한 뒤 설치가 완료되면, sudo mysql -u root -p
명령어를 입력하고 비밀번호를 입력하면 MySQL
에 접근할 수 있다.
PHP
를 설치한다. 이때, Nginx
에서는 php-fpm
을 반드시 설치해야 한다.
- 왜 fpm
을 설치해야하는가? 를 찾아보자.
설치가 완료되었다면 PHP
가 잘 설치되었는지 phpinfo
를 통해서 확인해야 한다. Nginx
의 기본 경로는 /var/www/html
이므로, 해당 디렉토리를 확인했을 때 index.nginx-debian.html
파일이 존재할 것이다(이 파일이 앞서, Nginx
의 설치가 잘 되었음을 확인할 수 있는 화면을 보여주는 파일이다).
/var/www/html
디렉토리로 이동한 뒤, 다음과 같이 index.php
파일을 만들어준다.
index.php
파일을 만들고 브라우저에서 EC2 인스턴스
의 퍼블릭 IPv4 주소/index.php
주소로 접근하면 index.php
파일이 다운로드 되는 것을 확인할 수 있는데, 이는 아직 PHP
와 Nginx
가 연동되지 않았기 때문에 발생하는 현상이다. 따라서 연동을 위해 Nginx
에 설정을 추가해줘야 한다.
Nginx
의 기본 설정 파일은 /etc/nginx/sites-available/default
이다. vi
편집기로 해당 파일을 열어서 다음과 같이 설정 파일을 수정해준다. 여기서, 사용하는 php-fpm
의 버전에 따라 pastcgi_pass
부분의 php7.0-fpm.sock
를 수정해줘야 한다(만약 php7.2-fpm
을 사용한다면 php7.2-fpm.sock
로 변경해준다. Ubuntu 16.04
버전에서는 해당사항이 없으므로 본 글에서는 그대로 두었다).
변경된 설정을 적용해주기 위해 Nginx
를 다시 시작하려고 했는데, 에러가 발생했다.
journalctl -xe
명령어를 입력해서 확인해보니 이유는 모르겠지만 /etc/nginx/sites-enable/default
파일이 적절하게 끝나지 않았다고 하며, 87번째 라인에 }
기호가 필요하다고 한다. 따라서 sudo vi /etc/nginx/sites-enable/default
의 87번째 라인에 }
기호를 추가해준 뒤 다시 Nginx
를 실행했더니 잘 되는 것을 확인할 수 있었다.
Nginx
를 재시작해 설정을 적용했으므로 앞서 접근했던 EC2 인스턴스
의 퍼블릭 IPv4 주소/index.php
로 접근하면 다음과 같이 설치된 PHP
정보를 확인할 수 있다.