본문 바로가기
Web Programming

AWS EC2 웹 서버 nginx 설치, 설정 부터 실행까지 ( 프리티어 )

by 맑은안개 2021. 12. 14.

Image from pixabay

EC2 웹서버 nginx 설치

프리티어 기준에서 설치 가능한 EC2(Amazon Linux 2 AMI) 에서 nginx를 설치하고 실행해본다. 

 

준비사항

  • ec2 ( Amazon linux2 ami ) - os가 다른 경우 yum을 사용한 nginx install시 방법이 상이할 수 있다.
  • putty ( terminal ) - ec2에 접속가능한 terminal

 

nginx 설치

[ec2-user@ip-172-31-32-189 ~]$ sudo yum update


[ec2-user@ip-172-31-32-189 ~]$ sudo yum install nginx
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
No package nginx available.
Error: Nothing to do


nginx is available in Amazon Linux Extra topic "nginx1"

To use, run
# sudo amazon-linux-extras install nginx1

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras

설치된 OS가 AMI인 경우 위 메세지와 같이 amazon-linux-extras를 사용해 설치해야 한다.

[ec2-user@ip-172-31-32-189 ~]$ sudo amazon-linux-extras install nginx1
Installing nginx
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Cleaning repos: amzn2-core amzn2extra-docker amzn2extra-kernel-5.10 amzn2extra-nginx1
17 metadata files removed
6 sqlite files removed
0 metadata files removed
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
amzn2-core                                                                       | 3.7 kB  00:00:00
amzn2extra-docker                                                                | 3.0 kB  00:00:00
amzn2extra-kernel-5.10                                                           | 3.0 kB  00:00:00
amzn2extra-nginx1                                                                | 3.0 kB  00:00:00

...

Is this ok [y/d/N]: y
Downloading packages:
(1/3): nginx-filesystem-1.20.0-2.amzn2.0.4.noarch.rpm                            |  23 kB  00:00:00
(2/3): nginx-1.20.0-2.amzn2.0.4.x86_64.rpm                                       | 579 kB  00:00:00
(3/3): gperftools-libs-2.6.1-1.amzn2.x86_64.rpm                                  | 274 kB  00:00:00

...

 

Nginx 설치 확인

[ec2-user@ip-172-31-32-189 ~]$ which nginx
/usr/sbin/nginx

[ec2-user@ip-172-31-32-189 ~]$ nginx -v
nginx version: nginx/1.20.0

root 유저로 접속

지금은 별도의 User로 nginx를 관리하지 않는다.

sodu -s

 

최초 설치시 nginx 상태는 비서비스 상태이다. systemctl status nginx 명령으로 현재 상태를 체크한다.

[root@ip-172-31-32-189 nginx]# netstat -an | grep 80
udp6       0      0 fe80::89e:69ff:fedc:546 :::*
unix  3      [ ]         STREAM     CONNECTED     17980
unix  2      [ ]         DGRAM                    18035
unix  3      [ ]         STREAM     CONNECTED     16280    /run/systemd/journal/stdout
unix  3      [ ]         STREAM     CONNECTED     15780
[root@ip-172-31-32-189 nginx]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

 

Nginx 서비스 활성화

[root@ip-172-31-32-189 nginx]# systemctl start nginx
[root@ip-172-31-32-189 nginx]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-12-14 01:45:01 UTC; 7s ago
  Process: 8936 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 8932 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 8931 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 8938 (nginx)
   CGroup: /system.slice/nginx.service
           ├─8938 nginx: master process /usr/sbin/nginx
           └─8939 nginx: worker process

Dec 14 01:45:01 ip-172-31-32-189.ap-northeast-2.compute.internal systemd[1]: Starting The nginx HTTP ...
Dec 14 01:45:01 ip-172-31-32-189.ap-northeast-2.compute.internal nginx[8932]: nginx: the configuratio...
Dec 14 01:45:01 ip-172-31-32-189.ap-northeast-2.compute.internal nginx[8932]: nginx: configuration fi...
Dec 14 01:45:01 ip-172-31-32-189.ap-northeast-2.compute.internal systemd[1]: Started The nginx HTTP a...
Hint: Some lines were ellipsized, use -l to show in full.
[root@ip-172-31-32-189 nginx]# netstat -an | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp6       0      0 :::80                   :::*                    LISTEN
udp6       0      0 fe80::89e:69ff:fedc:546 :::*

위와 같이 서비스가 정상 기동되고 80포트가 LISTEN 상태이면 정상이다.

 

EC2 보안그룹 / 네트워크 ACL 활성화

이제 EC2에 연결된 보안그룹과 네트워크 ACL에서 80 / 443 포트를 활성화한다. ( 해당 작업을 하지 않으면 퍼블릭 DNS로 접속되지 않는다. )

 

보안그룹 HTTP/HTTPS 활성화

대상 EC2의 인스턴스에서 하단에 "보안" 탭을 선택한 후 "보안그룹" 링크를 클릭한다.

인바운드규칙 편집을 클릭하여 위와 같이 등록해준다.

 

네트워크 ACL 활성화

다시 EC2 인스턴스로 돌아가서, 연결된 서브넷 ID 링크를 클릭한다. 하단에 "네트워크 ACL" 탭을 선택하고 "네트워크 ACL 연결 편집으로 들어가 위 보안그룹과 같이 80 / 443을 열어준다. 

ssh를 사용하여 원격접속을 한다면 위처럼 SSH포트를 활성화 해야 한다. 

 

웹서버 접속

ec2 인스턴스에 퍼블릭 IPv4 DNS로 접속해보자.

 

마무리하며..

Nginx 설치와 접속을 기본설정으로 해보았다. 이제 Nginx에서 제공하는 다양한 설정을 알아볼 시간이다. Nginx는 직관적인 설정방법으로 쉽게 원하는 기능을 적용할 수 있다. Nginx가 제공하는 기능들을 AWS 서비스에 조금씩 적용해 보자.

 

 

#nginx #setup #install #config #not working #aws #webserver #80 #443 #ec2 #free-tier #public dns

반응형