서버/AWS (Amazon Web Services)

[AWS의 기본 06] EC2 인스턴스에 NGINX 설치와 보안 그룹 설정

날개 2014. 7. 28. 22:27

지난회에 이어 이번에는 경량 웹서버로 인기를 얻고 있는 NGINX를 EC2 인스턴스에 설치해 봅니다.


지금까지 만든 인스턴스의 OS가 우분투 리눅스이므로, 우분투에 설치하는 것과 같습니다.


다만, 지난번에 하지 않은 보안 그룹 설정을 이번 기회에 간단해 해봅니다.



[06] EC2 인스턴스에 NGINX 설치와 보안 그룹 설정


NGINX는 Apache 웹서버와 같은 부류의 웹서버 프로그램입니다.


가볍고 빨라서 사용 빈도가 점점 늘어나고 있다고 하는군요. 아파치의 경우는 프로세스와 쓰레드 기반으로 처리를 하고, NGINX의 경우는 비동기 이벤트 방식으로 요청을 처리한다고 합니다.


특히 모바일 서비스쪽으로 많이들 쓴다고 합니다.


어쨌든 NGINX를 이전에 생성한 EC2 인스턴스에 설치해 보겠습니다.


먼저 NGINX 공식 웹사이트인 http://nginx.org 에서 설치하는 방법을 살펴 보고, 그대로 설치를 합니다.


공식 웹사이트에 들어가면, 우측 메뉴에 documentation 이 있고, 클릭하면, 도큐먼트 맨 윗 항목에 Installing nginx 가 있습니다. 이 항목을 클릭하면, Installation on Linux 라는 제목 밑에 Packages 라는 링크가 있는데, 이 링크를 클릭하면 설치 방법을 알 수 있습니다.


링크는 http://nginx.org/en/linux_packages.html 입니다.


아래 화면과 같이 나오면 됩니다.


사실상 위 내용대로만 설치하면 됩니다.


그러면, 먼저 공개키부터 설치를 해보록 하죠.


위 화면에서 빨간색으로 표시한 'this key'의 주소를 클릭하거나 주소를 알아냅니다.


사파리 웹브라우저의 경우 클릭하니 아래와 같이 키 내용이 나오는데, 상단의 키 주소를 복사합니다.

그런다음, SSH 로 연결된 터미널 상에서 wget 명령어로, 해당 키 파일을 다운로드 받습니다.


$ wget http://nginx.org/keys/nginx_signing.key


다운로드 받았으면, 받은 키 파일을 추가합니다.


$ sudo apt-key add nginx_signing.key


이 키를 추가하지 않으면, 설치할 때 문제가 생길 수 있으므로 꼭 설치하도록 합니다.

이제 소스리스트를 수정해야 하는데, 그 전에 사용하고 있는 우분투의 버전별 코드네임을 알아야 합니다. 위에 NGINX 설치 설명서에서 codename 링크를 클릭하거나 위로 스크롤 하면 확인할 수 있습니다.


저는 우분투 14.04를 설치 했으므로, trusty 가 코드네임이 되겠네요.


터미널에서 sources.list 파일을 텍스트 에디터로 엽니다.


$ sudo vi /etc/apt/sources.list


sources.list 파일 맨 아래에 아래의 내용을 덧붙입니다.


deb http://nginx.org/packages/ubuntu/ trusty nginx

deb-src http://nginx.org/packages/ubuntu/ trusty nginx


위 내용에서 trusty를 본인이 설치한 리눅스 버전의 코드 네임으로 맞추어 줘야 하겠죠.

편집한 sources.list 파일을 저장하고, 새로운 소스 리스트를 반영하여 업데이트 해줍니다.



$ sudo apt-get update


이제 NGINX를 설치합니다.


$ sudo apt-get install nginx


이제 제대로 설치 되었는지 확인해야겠죠?


$ service nginx status

위 화면과 같이 nginx is running 이 나오면 잘 동작하고 있다고 볼 수 있겠죠.


그러면, 웹브라우저로 확인 하면 될까요?


아직은 안됩니다. 왜냐면, 아직까지 우리는 생성한 EC2 인스턴스의 보안그룹에 HTTP 포트인 80포트의 접근을 허용하지 않았기 때문입니다. 지금은 SSH 접근 (22포트)만 허용한 상태입니다.


이제 보안 그룹 설정을 바꾸어 보도록 하죠.


먼저 EC2 관리 콘솔로 들어갑니다.


왼쪽 메뉴에 보면 Security Groups 가 있죠. 클릭합니다.


시큐리티 그룹 항목들이 나옵니다. [Create Security Group]으로 새로운 보안 그룹을 만들어도 되지만, 간편하게 기존 시큐리트 그룹을 복사해서 생성하겠습니다.


인스턴스를 생성할 때 선택한 보안그룹을 선택하고 마우스 오른쪽 버튼을 클릭하여 [Copy to new]를 클릭합니다.


위와 같이 기존 보안 그룹 설정으로 새로운 보안 그룹을 만들 수 있게 됩니다. 그룹 이름과 설명(Description) 을 입력하고, Security group rule에서 [Add Rule]을 클릭하여 HTTP 80포트를 추가 합니다. 내용은 0.0.0.0/0 으로 둡니다.


어쨌든 위 화면처럼 Security group rules가 나오게 해야 합니다.


다 되었으면 [Create]를 클릭합니다.


다시 EC2 관리 콘솔의 왼쪽 메뉴에서 Instances를 클릭하고 EC2 인스턴스에서 마우스 오른쪽 버튼을 클릭하여, [Change Security Groups]을 클릭합니다.


위와 같은 팝업이 나오면, 조금 전에 새로 만든 보안 그룹을 선택하고 [Assign Security Groups]를 클릭합니다.

위와 같이 인스턴스의 Description 의 내용을 보면 Security Groups가 새로 만든 보안 그룹으로 바뀌어 있는것을 볼 수 있습니다.


이제 다 되었습니다.


웹브라우저를 열고, 주소창에 아래와 같이 인스턴스의 Public IP 또는 Public DNS를 입력해 봅시다.

NGINX가 우리를 반기고 있네요.


참고로 중요 디렉터리는 아래와 같습니다.


/usr/share/nginx/html/        디폴트 도큐먼트 루트

/var/log/nginx/                 로그              

/etc/nginx/                      설정



참고로 NGINX의 기본적인 서비스 실행 명령은 아래와 같습니다.


service nginx status

service nginx start

service nginx stop

service nginx restart

service nginx reload


이번 글은 여기까지 입니다.



(1) 이 포스팅은 2014.7.25 기준으로 작성되었습니다. 웹서비스는 서비스 제공 업체에 의해 언제든지 변경될 수 있습니다.

(2) 여기서 사용한 스크린 캡쳐 이미지들의 출처는 따로 표기되지 않으면, http://aws.amazon.com 웹사이트 입니다.

(3) 터미널 화면의 캡쳐 이미지는 글쓴이의 PC 화면 입니다.