AWS EC2에 NGINX 설치 및 사용하기
반응형

안녕하세요 Lotts 입니다 😉

 

요새 ReactJS를 공부하고 있습니다 😁😁

물론 독학으로 하진 않고 니꼴라스 쌤의 

ReactJS로 웹서비스 만들기 인강을 듣고 있지요

영화 정보를 보여주는 웹서비스입니다

 

나중에 기회가 되면

강의 후기도 포스팅하도록 할게요 👌👌

 

오늘은 

공부중에 있는 영화 웹서비스를 서버에 배포하고 테스트하기 위해

알아보던 중 nginx에 대해 알게 되어서

이렇게 포스팅을 하게 되었습니다 👏

 

nginx의 전문적인 정보를 다루는 것이 아닌 개인적으로 학습한 내용에 대해

포스팅을 했기 때문에 이점을 감안하여 

봐주시면 감사하겠습니다

 

우선 nginx에 대해서 간략하게 알아보겠습니다

 

What is Nginx ❓

 

동시접속 처리에 특화된 웹 서버 소프트웨어로, 가벼움높은 성능을 지향하고있습니다.

Nginx는 요청에 응답하기 위해 비동기 이벤트 기반 구조이며

이는 Apache 서버의 스레드/프로세스 기반 구조와 대조적입니다

 

Nginx의 이벤트 기반(Event-driven) 구조는 서버에 많은 부하가 생길 경우의 성능을 예측하기 쉽게 해 주며,

고정된 프로세스만 생성하고, 내부에서 비 동기 방식으로

작업들을 처리하기 때문에 스레드/프로세스를 효율적으로 처리할 수 있습니다

 

보통 Apache와 비교를 많이 하기 때문에 간단히 차이점을 작성해 보겠습니다


nginx와 Apache 비교 🔎

 

💡Nginx

비동기, 이벤트 기반 구조 - Event-driven

고정된 프로세스만 사용

동시 접속 수 처리에 특화됨


💡Apache

스레드/프로레스 기반 구조 - Thread-prgramming

한 개의 스레드 당 한개의 프로세스 사용

동시 접속 수가 많은 경우 많은 스레드가 생성되며 메모리, CPU 낭비가 심함

 


 

Netcraft에서 조사한 2020년 3월 웹 서버 수요 조사를 보면

2019년 4월 기점으로 Apache를 뛰어넘었습니다.😲😲

2020년 3월 netcraft 웹서버 수요조사

 

자 그럼 본론으로 넘어가서

nginx를 설치하고 확인해 보겠습니다

😄😄😄


🌈 Amazon Linux 2에 NGINX 설치하기

 

이번에 nginx를 설치하게 될 EC2 환경입니다 👌

역시나 프리 티어로

 

Amazon Linux 2 설치가 완료되면 접속을 합니다

nginx를 설치하여 사용할 수 있는지 이제부터 천천히 진행해보도록 하겠습니다 😉

 

✅ 1. Check repo

우선 사용 중인 ec2에 repository를 확인합니다

$ yum info nginx
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
2 packages excluded due to repository priority protections
Error: No matching Packages to list

찾을 수가 없어서 Error가 발생합니다. 😭

만약 정보가 정상적으로 보이신다면 아래의 2, 3번은 건너뛰셔도 됩니다. 💨

2. Add repo

repository를 등록해 봅니다

vi 편집기로 nginx.repo를 열어 하단의 정보를 입력하고 저장해주세요 👌

$ sudo vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

 

✅ 3. Check repo

다시 repository를 확인해 봅니다

다시 확인해보면 Error 없이 정상적으로 확인을 하실 수 있습니다 👌

$ yum info nginx
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
2 packages excluded due to repository priority protections
Available Packages
Name        : nginx
Arch        : x86_64
Epoch       : 1
Version     : 1.16.1
Release     : 1.el7.ngx
Size        : 766 k
Repo        : nginx/x86_64
Summary     : High performance web server
URL         : http://nginx.org/
License     : 2-clause BSD-like license
Description : nginx [engine x] is an HTTP and reverse proxy server, as well as
            : a mail proxy server.

 

4. install nginx

다음으로는 nginx를 설치해 봅니다

설치는 비교적 간단합니다

$ sudo yum install nginx

간단히 설치가 완료되었습니다 👏👏

제대로 설치가 되었는지 확인해 볼까요? 🔎

 

5. Version Check

nginx 버전을 확인해 봅니다

$ nginx -v
nginx version: nginx/1.16.1

2020.03.13 기준 nginx version 1.16.1 이 확인됩니다

설치가 정상적으로 잘되었습니다

👏👏👏👏👏


🌈 NGINX 사용하기

 

 

이번엔 nginx의 기본적인 명령에 대해 알아보겠습니다

 

 

💡 start nginx

nginx 기동

$ sudo systemctl start nginx

💡 stop nginx

nginx 중지

$ sudo systemctl stop nginx

start/stop 명령 후 별도의 알림이 없습니다

💡 status nginx

nginx 확인

$ sudo systemctl status nginx
[0m nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-03-12 04:38:22 UTC; 43s ago
     Docs: http://nginx.org/en/docs/
  Process: 6452 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 6453 (nginx)
   CGroup: /system.slice/nginx.service
           6453 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           6455 nginx: worker process


Mar 12 04:38:22 ip.ap-northeast-2.compute.internal systemd[1]: Starting nginx - high performance web server...
Mar 12 04:38:22 ip.ap-northeast-2.compute.internal systemd[1]: PID file /var/run/nginx.pid not readable (yet?) after start.
Mar 12 04:38:22 ip.ap-northeast-2.compute.internal systemd[1]: Started nginx - high performance web server.

또는 프로세스 확인 명령어로도 확인 가능합니다

$ ps -ef | grep nginx
root      6453     1  0 04:38 ?        00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
nginx     6455  6453  0 04:38 ?        00:00:00 nginx: worker process
ec2-user  6593 27440  0 04:40 pts/0    00:00:00 grep --color=auto nginx

 

그럼 웹서비스를 확인해보겠습니다 🔎

 

💡 TEST PAGE

 

http://hostname:80 or http://hostname

welcom to nginx!!

 

 

💡 기본 설정 파일

 

nginx를 설정할 수 있는 기본 파일의 경로입니다

$ sudo find / -name nginx.conf
/etc/nginx/nginx.conf

$ sudo vi /etc/nginx/nginx.conf

nginx.conf를 보면 아래의 default.conf 파일은 include 되어있습니다👌

$ sudo vi /etc/nginx/conf.d/default.conf

기본 설정 파일을 확인해 보겠습니다 🔎

server {
    listen       80; //port 설정
    server_name  localhost;


    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;


    location / {
        root   /usr/share/nginx/html; //자신의 컨테이너 프로젝트 경로를 넣어줍니다
        index  index.html index.htm;
    }


    #error_page  404              /404.html;


    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }


    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}


    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}


    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

 

이상으로

❝ AWS EC2에 NGINX 설치 및 사용하기 ❞

였습니다

👏👏👏👏👏

반응형