Django: Nginx

GreenBeanΒ·2022λ…„ 1μ›” 14일
0
post-thumbnail

Nginx

점프 투 μž₯κ³ : 4-10 Nginx

  • μ›Ήμ„œλ²„(Web Server)λŠ” λΈŒλΌμš°μ €μ˜ 정적 νŽ˜μ΄μ§€ μš”μ²­μ„ μ²˜λ¦¬ν•˜κ³  동적 νŽ˜μ΄μ§€ μš”μ²­μΈ 경우 WSGI μ„œλ²„λ₯Ό ν˜ΈμΆœν•˜μ—¬ 응닡
    • 이번 μž₯μ—μ„œλŠ” μ›Ή μ„œλ²„μΈ μ—”μ§„μ—‘μŠ€(Nginx)λ₯Ό μ„€μΉ˜ν•˜κ³  적용

Tip! Nginx

  • NginxλŠ” 높은 μ„±λŠ₯을 μœ„ν•΄μ„œ 개발된 μ›Ή μ„œλ²„λ‘œ 점점 μ‚¬μš©μžκ°€ μ¦κ°€ν•˜λŠ” 좔세이며 특히 파이썬 μ›Ή ν”„λ ˆμž„μ›Œν¬μΈ μž₯κ³ λ‚˜ ν”ŒλΌμŠ€ν¬λ“±μ—μ„œ 주둜 μ‚¬μš©λ˜λŠ” μ„œλ²„
  • λ˜ν•œ Nginxλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•œ 섀정도 무척 κ°„λ‹¨ν•˜μ—¬ μ‰½κ²Œ μ‚¬μš©ν• μˆ˜ 음

Nginx μ„€μΉ˜

  • λ‹€μŒκ³Ό 같이 κ΄€λ¦¬μž κΆŒν•œμœΌλ‘œ Nginxλ₯Ό μ„€μΉ˜
(mysite) ubuntu@ip-172-26-12-247:~/projects/mysite$ sudo apt install nginx

Nginx μ„€μ •

  • λ¨Όμ € /etc/nginx/sites-available λ””λ ‰ν„°λ¦¬λ‘œ 이동
(mysite) ubuntu@ip-172-26-12-247:~/projects/mysite$ cd /etc/nginx/sites-available/
  • /etc/nginx/sites-available λ””λ ‰ν„°λ¦¬λŠ” Nginx의 μ„€μ • νŒŒμΌλ“€μ΄ μœ„μΉ˜ν•œ 디렉터리
    • 졜초 μ„€μΉ˜μ‹œμ—λŠ” deafultλΌλŠ” μ„€μ • 파일만 쑴재
    • μ„œλΉ„μŠ€μ— λŒ€ν•œ Nginx의 μ„€μ • νŒŒμΌμ„ λ‹€μŒκ³Ό 같이 κ΄€λ¦¬μž κΆŒν•œμœΌλ‘œ μž‘μ„±
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-available$ sudo nano mysite
  • 그리고 mysite 파일의 λ‚΄μš©μ€ λ‹€μŒκ³Ό 같이 μž‘μ„±
# [파일λͺ…: /etc/nginx/sites-available/mysite]

server {
        listen 80;
        server_name 3.35.153.92;

        location = /favicon.ico { access_log off; log_not_found off; }

        location /static {
                alias /home/ubuntu/projects/mysite/static;
        }

        location / {
                include proxy_params;
                proxy_pass http://unix:/tmp/gunicorn.sock;
        }
}
  • listen 80 은 μ›Ή μ„œλ²„λ₯Ό 80 포트둜 μ„œλΉ„μŠ€ ν•œλ‹€λŠ” 의미
    • HTTP ν”„λ‘œν† μ½œμ˜ κΈ°λ³Έν¬νŠΈλŠ” 80
    • λ”°λΌμ„œ 이제 http://3.35.153.92:8000/ λŒ€μ‹  포트λ₯Ό μƒλž΅ν•˜μ—¬ http://3.35.153.92 처럼 μ›Ή λΈŒλΌμš°μ €μ—μ„œ 접속 ν•  수 있음
  • server_name μ—λŠ” κ³ μ • IPλ₯Ό 등둝

  • location /static 은 정적 νŒŒμΌμ— λŒ€ν•œ μ„€μ •μœΌλ‘œ /static으둜 μ‹œμž‘λ˜λŠ” URL μš”μ²­μ€ Nginxκ°€ /home/ubuntu/projects/mysite/static λ””λ ‰ν„°λ¦¬μ˜ νŒŒμΌμ„ μ½μ–΄μ„œ μ²˜λ¦¬ν•œλ‹€λŠ” μ„€μ •

  • location /은 location /static μ—μ„œ μ„€μ •ν•œ 것 μ΄μ™Έμ˜ λͺ¨λ“  μš”μ²­μ€ Gunicorn이 μ²˜λ¦¬ν•˜λ„λ‘ ν•˜λŠ” μ„€μ •
    • proxy_pass λŠ” 이전 μž₯μ—μ„œ μ„€μ •ν–ˆλ˜ Gunicorn의 μœ λ‹‰μŠ€ μ†ŒμΌ“ 경둜
  • 이와 같은 섀정을 톡해 /static 으둜 μ‹œμž‘λ˜λŠ” URL은 Nginxκ°€ μ²˜λ¦¬ν•˜κ³  λ‚˜λ¨Έμ§€ URL에 λŒ€ν•΄μ„œλŠ” Gunicorn이 μ²˜λ¦¬ν•˜κ²Œ 됨
  • 이제 μž‘μ„±ν•œ mysite νŒŒμΌμ„ Nginxκ°€ ν™˜κ²½ 파일둜 읽을 수 μžˆλ„λ‘ μ„€μ •ν•΄μ•Ό 함
    • /etc/nginx/sites-enabled λ””λ ‰ν„°λ¦¬λ‘œ 이동
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-available$ cd /etc/nginx/sites-enabled/
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-enabled$
  • sites-enabled λ””λ ‰ν„°λ¦¬λŠ” site-available 디렉터리에 μžˆλŠ” μ„€μ • 파일 μ€‘μ—μ„œ ν™œμ„±ν™”ν•˜κ³  싢은 것을 링크둜 κ΄€λ¦¬ν•˜λŠ” 디렉터리
  • ls λͺ…령을 μˆ˜ν–‰ν•˜λ©΄ ν˜„μž¬ default μ„€μ • 파일만 링크됨을 확인할 수 있음
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-enabled$ ls
default
  • 이제 default λ§ν¬λŠ” μ‚­μ œν•˜κ³  mysite νŒŒμΌμ„ λ§ν¬ν•˜λ„λ‘ λ³€κ²½ν•΄μ•Ό 함
# default 링크 μ‚­μ œ
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-enabled$ sudo rm default
# mysite 파일 링크
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-enabled$ sudo ln -s /etc/nginx/sites-available/mysite
  • ls λͺ…령을 μˆ˜ν–‰ν•˜λ©΄ defaultλŠ” 사라지고 mysite 링크만 남은 것을 확인할 수 있음
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-enabled$ ls
mysite

Nginx μ‹€ν–‰

  • NginxλŠ” μ„€μΉ˜ν•  λ•Œ μžλ™μœΌλ‘œ μ‹€ν–‰λ˜λ―€λ‘œ μ•žμ—μ„œ μž‘μ„±ν•œ Nginx 섀정을 μ μš©ν•˜λ €λ©΄ Nginxλ₯Ό λ‹€μ‹œ μ‹œμž‘ν•΄μ•Ό 함
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-enabled$ sudo systemctl restart nginx

ν˜Ήμ‹œ Nginx μ„€μ • νŒŒμΌμ— 였λ₯˜κ°€ λ°œμƒν–ˆλ‹€λ©΄?

  • Nginx의 μ„€μ • νŒŒμΌμ— 였λ₯˜κ°€ μžˆλŠ”μ§€ ν™•μΈν•˜λŠ” 방법
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-enabled$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  • nginx -t λͺ…λ Ή μˆ˜ν–‰ μ‹œ 였λ₯˜κ°€ λ°œμƒν•œλ‹€λ©΄ 섀정이 μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ κ²½μš°μ΄λ―€λ‘œ Nginx μ„œλ²„κ°€ μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜μ§€ μ•Šμ„ 것
# Nginx μ€‘μ§€ν•˜λŠ” λͺ…λ Ή
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-enabled$ sudo systemctl stop nginx
# Nginx μ‹œμž‘ν•˜λŠ” λͺ…λ Ή
(mysite) ubuntu@ip-172-26-12-247:/etc/nginx/sites-enabled$ sudo systemctl start nginx
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 λŒ“κΈ€