[초보자를 위한 AWS 웹구축] 6. 웹서버 (Apache) 구축

이전의 포스트에서 Nat Instance를 Public Subnet에 구축하였습니다. 이번에는 Private Subnet안에 Web Server 역할을 할수 있는 인스턴스를 구축해 보도록 하겠습니다. 즉, private subnet 안에 Instance를 구축하고 Apache(아파치)를 설치하여 웹서버의 역할을 담당하는 인스턴스를 구축할 것입니다. Nat Instance를 설치한 과정과 매우 유사합니다.

위의 아키텍처에서 보시는 바와 같이 두개의 인스턴스를 각각의 가용영역에 위치한 private subnet 1,2 에 생성할 것입니다.

1. [Services] -> [Instances] -> [Launch Instance] 클릭

2. Amazon Machine Image(AMI, 아마존 머신 이미지)를 선택함으로써 기능에 맞는 인스턴스를 선택합니다. 이 포스트에서는 ‘Quick Start’ 탭에 있는 Amazon Linux AMI를 선택하여 만들겠습니다.

3. 인스턴스의 타입을 선택하는 단계입니다. AWS는 여러가지 기능을 가지는 인스턴스들을 제공하고 있습니다 (인스턴스 유형 바로가기 -> 클릭). 그 중, t2.micro 인스턴스 타입은 프리티어 사용자를 위해 무료로 제공하고 있으므로 이것으로 구축할 것입니다. 오른쪽 하단에서 [Next: Configure Instance Details] 를 클릭합니다.

3. 인스턴스에 대해 세부사항을 설정하는 단계입니다. 1개의 인스턴스에 대해 ‘Network’란에 설정안 VPC를 선택하고 ‘Subnet’에 가용영역 2a의 private subnet1을 선택합니다. 또한 예기치못한 인스턴스 종료를 막기 위해서 ‘Enable termination protection’란의 ‘Protect against accidental termination’옆의 박스에 체크를 해줍니다. 지금은 초보자의 단계이므로 나머지는 지금은 체크하지 않고 하단의 [Next: Add Storage]클릭하여 다음 단계로 넘어갑니다

4. 저장공간을 추가하는 단계입니다. [Add New Volume]을 클릭하여 추가적인 EBS 스토리지를 추가할 수 있습니다. 여기서는 루트 볼륨만 설정만 하겠습니다.  ‘Volume Type’은 ‘General Purpose SSD (gp2)’를 선택하겠습니다 (더 자세한 볼륨 타입에 대해서 ‘클릭‘). 아래 그림과 같이 설정한 후 오른쪽 하단의 [Next: Add Tags]를 클릭합니다

5. AWS 리소스를 다양한 방식으로 분류하기 위한 태그 설정을 위한 단계입니다. 할당한 태그에 따라 특정 리소스를 빠르게 식별할 수 있습니다 (태그에 대해 더 자세히 알고싶으시면 ‘클릭‘). 태그는 일반적으로 ‘Key’와 ‘Value’값으로 이루어져 있는데 임의로 지정해 주는데, 나중에 리소스를 많이 설치할 경우를 대비해서 소유자나 스택 수준을 추적하는데 도움이 되는 태그 세트를 정의하는 것을 추천합니다. 태그를 지정한 후 오른쪽 하단에 [Next: Configure Security Group]을 클릭합니다.

6.보안그룹(Security Group)을 설정하는 단계입니다. 각 인스턴스에 맞는 보안그룹을 설정해야만 하며 여기서는 구축하는 Web Instance에 대한 보안그룹 설정입니다 (보안그룹에 대해 더 자세한 설명을 원하시면 ‘클릭’). AWS의 Security Group에 대한 기본 정책은 Inbound Deny All / Outbound Any Open 입니다 (Outbound Traffic에 대한 정책설정은 보안그룹에서 할수 없고 Network ACL기능을 사용해야 합니다. 여기해 대해서는 추후 다시 포스팅 하겠습니다). 그러므로 허용할 Protocol, Port, IP를 지정하여 Inbound traffic에 대한 정책을 허용해 줍니다. 설명에 앞서 일단 밑의 그림을 살펴보겠습니다.

새로 보안그룹을 설정하는 것이므로 ‘Create a new security group’을 설정합니다. 또한, ‘Security group name’에는 임의의 보안그룹 이름을 지정합니다.

그림의 각 항목에 대해 설명하겠습니다.

Type:  네트워크 트래픽에 오픈할 일반적인 프로토콜 타입을 지정합니다.

Protocol: ‘Type’에 따라서 지정 할 수있는 항목으로 ‘Type’에서의 그 외에 필요한 protocol이 있는 경우에 사용됩니다.

Port Range: 프로토콜에 따른 port 번호와 범위를 지정할 수 있습니다.

Source: 인스턴스에 접속 할 클라이언트의 IP를 넣어줍니다. Anywhere로 선택 할 경우 전체 허용을 의미합니다. SSH의 Source에는 Nat instance의 private IP를 넣어줍니다.

지금 여기서는 Web Server를 구축하는 것임으로 모든 사용자가 접속할 수 있도록  설정하였고 서버로의 터미널접속이나 파일전송을 위해 사용하는 22번 포트는 이전 포스트에서 만들었던 Nat Server 의 IP를 기재하였습니다.

이  포스트에서는 위와 같이 설정 한 후 (필요한 경우 임의대로 바꾸셔도 됩니다) 오른쪽 하단의 [Review and Launch]버튼을 클릭합니다.

7. Web Instance에 대해 어떠한 방식으로 설정되었는지 만들기 전에 리뷰를 하는 단계입니다. 리뷰 후 수정사항이 있으면 [Previous]버튼을 눌러 수정할 수 있고 없는 경우 [Launch]버튼을 클릭합니다.

8. [Launch]버튼을 누르면 로그인 정보를 암호화 및 해독을 위한 key-pair설정에 대한 창이 하나 뜹니다. 이 창에서 새로이 key-pair를 설정 할 수 있지만 이번 포스트에서는 이전 포스트에서 만든 키페어를 사용하도록 하겠습니다 (key-pairs에 대한 자세한 설명을 위한 ‘클릭’). ‘choose an existing key pair’를 선택하시고 이전에 만든 키페어 이름을 선택해 주세요. 그리고 바로 밑의 박스에 체크 표시를 해주고 [Launch Instances]버튼을 누릅니다.

9. 생성된 인스턴스를 아래 그림과 같이 생성된 것을 볼 수 있습니다(인스턴스의 이름은 임의대로 지어주세요)

10. 위와 같은 방식으로 나머지 하나의 web instance도 생성시켜 줍니다 (다만, 가용 영역은 2c로 설정하고 같은 보안그룹으로 지정하면 됩니다)

다르게 설정해야 하는 부분을 아래 그림을 통해 볼 수 있습니다.

아래와 같이 두번째 웹서버가 2c가용영역의 private subnet2에 설치된 것을 볼 수 있습니다.

11. 방금 구축한 인스턴스에 대한 Apache설치를 Nat Instance에서  터미널접속 통해 진행해 보도록 하겠습니다.

* 이후로는 OpenVPN이 설치 되었다는 전제 하에 이루어 지는 내용입니다. (OpenVPN설치에 대해서의 문의 사항은 NDS SA팀으로 문의 주세요)

12. Nat Instance를 putty로 접속해 주시고  openVPN과 연결된 것을 확인해 주세요.

13. 연결된 것이 확인되었으니 본격적으로 web 인스턴스에 아파치를 설치해 보도록 하겠습니다. 다른 새로운 putty를 열고 Host Name에 웹 인스턴스용 IP를 입력합니다.

14. Category 란의 SSH를 클릭하여 Auth로 들어갑니다. Browse로 들어가 만들어 두었던 .ppk를 선택한 후 open합니다

15. login as로 ec2-user 를 기재합니다. 연결된 것을 확실히 하기 위하여 ping itef.org 명령어로 확인합니다

16. sudo 명령어를 사용하여 루트 권한을 줍니다. 권한이 바뀐 것이 확인 되면 yum 명령어를 통해 아파치를 설치합니다 (yum install httpd -y)

17. 설치가 완료된 것을 확인한 후 아파치를 실행합니다 (service httpd start).

18. chkconfig 명령어로 부팅과 동시에 apache를 구동하고 확인합니다.

이상으로 인스턴스에 아파치를 설치함으로써 웹서버의 역할을 하는 인스턴스를 생성하였습니다.

감사합니다,

SA팀 이현지

 

 


 AWS에 대해 더 많은 정보를 얻고 싶으신가요?

 NDS의 AWS 전문 엔지니어가 답해드리겠습니다.

 

 

 

 

 

 

 

 

 

 

 

 

By |2018-10-19T11:58:18+00:002018-10-18|Categories: AWS, TechBlog|

About the Author: