안녕하세요 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를 뛰어넘었습니다.😲😲
자 그럼 본론으로 넘어가서
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
💡 기본 설정 파일
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 설치 및 사용하기 ❞
였습니다
👏👏👏👏👏