Programming/Web (์›น)

[์›น] nginx๋ž€? / uwsgi ๋กœ Django ํ”„๋กœ์ ํŠธ ์—ฐ๊ฒฐ

MOONCO 2021. 4. 7. 20:40

๐Ÿ‘‰ nginx๋ž€?

์œ ์šฐ๋ช…ํ•œ ์›น ์„œ๋ฒ„

# ์›น ์„œ๋ฒ„ : ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ๋ฐ›์•„, ๊ทธ์— ๋”ฐ๋ฅธ ์ •๋ณด๋ฅผ ๋Œ๋ ค์ฃผ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

 

nginx์˜ ํ•„์š”์„ฑ

ํ•˜๋‚˜์˜ ์›น์„œ๋ฒ„์— 10000 ๋ช…์˜ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด์กŒ๋‹ค

์šฉ๋Ÿ‰์ด ์ ๋‹ค!

ํšจ์œจ์ ์ด๋‹ค! ( Reverse Proxy Server )

Apache ๋ณด๋‹ค ๋” ์ ์€ cpu ์ž์›์„ ์‚ฌ์šฉํ•ด, ๋” ๋น ๋ฅด๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‹ค!

 

๐Ÿ‘‰ ์„ค์น˜ ( Linux )

// yum
sudo yum install nginx

// apt
sudo apt install nginx

// amazon-linux-extras
sudo amazon-linux-extras install nginx1

 

์„ค์น˜ ํ™•์ธ

which nginx

 

 ์„œ๋น„์Šค ์‹คํ–‰

systemctl start nginx

 

nginx ์„ค์ • ํŒŒ์ผ

// ์„ค์ •ํŒŒ์ผ vim ์—๋””ํ„ฐ๋กœ ์—ด๊ธฐ
sudo vim /etc/nginx/nginx.conf

์„ค์ • ํŒŒ์ผ ํŽธ์ง‘ ํ™”๋ฉด

 

 

nginx ์„ค์ •ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ ( ๋‚ด ์ปดํ“จํ„ฐ๋กœ ๋Œ์•„์˜ค๊ธฐ / <ํ”„๋กœ์ ํŠธ>.conf )

<ํ”„๋กœ์ ํŠธ>
    manage.py
    ...
    
    .config
    	uwsgi
            <ํ”„๋กœ์ ํŠธ>.ini
        nginx
            <ํ”„๋กœ์ ํŠธ>.conf
server {
    listen 80;
    server_name <ํผ๋ธ”๋ฆญDNS>;
    charset utf-8
    client_max_body_size 128M;
    
    location / {
        uwsgi_pass unix:///tmp/<ํ”„๋กœ์ ํŠธ>.sock;
        include uwsgi_params;
    }
}
listen ์š”์ฒญ์„ ๋ฐ›์„ ํฌํŠธ
server_name ์š”์ฒญ์„ ๋ฐ›์„ ์„œ๋ฒ„ ์ฃผ์†Œ
location / {} "/" ์ฃผ์†Œ์—์„œ ๋ฐ›์€ ์š”์ฒญ์„ ์ •๋ฆฌ

 

uwsgi ์„ค์ •ํ•ด์ฃผ๊ธฐ ( <ํ”„๋กœ์ ํŠธ>.ini )

[uwsgi]
chdir = /home/ubuntu/learn_django/
module = learn_django.wsgi:application
home = /home/ubuntu/myvenv/

uid = deploy
gid = deploy

socket = /tmp/learn_django.sock
chmod-socket = 666
chown-socket = deploy:deploy

enable-threads = true
master = true
vacuum = true
pidfile = /tmp/learn_django.pid
logto = /var/log/uwsgi/learn_django/@(exec://date +%%Y-%%m-%%d).log
log-reopen = true
socket ์†Œ์ผ“ ํŒŒ์ผ ๊ฒฝ๋กœ ์ง€์ •
chmod-socket ์†Œ์ผ“ ๊ถŒํ•œ ์ง€์ •
chown-socket ์†Œ์ผ“ ์†Œ์œ ์ž ์ง€์ •

 

์ฃผ์˜ํ•  ์ 

- nginx๋Š” ํ•ญ์ƒ ์ผœ์ ธ์žˆ์–ด์•ผ ํ•จ

- uwsgi๋Š” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์‹คํ–‰์„ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ uwsgi์™€ nginx๋ฅผ ์—ฐ๊ฒฐํ•ด์•ผํ•˜๋ฏ€๋กœ, uwsgi๋„ ํ•ญ์ƒ ์ผœ์ ธ์žˆ์–ด์•ผ ํ•œ๋‹ค.

- ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰์ค‘์ผ ๋•Œ, ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๊ณ„์† ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

 

uwsgi ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ ( uwsig/uwsgi.service )

[Unit]
Description=uWSGI service
After=syslog.target

[Service]
ExecStart=/home/ubuntu/myvenv/bin/uwsgi -i /home/ubuntu/<ํ”„๋กœ์ ํŠธ>/.config/uwsgi/<ํ”„๋กœ์ ํŠธ>.ini

Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

 

github์— ์—…๋กœ๋“œ

git add .

git commit -m <๋ฉ”๋ชจ>

git push origin <๋ธŒ๋žœ์น˜>

 

AWS์— ๋‹ค์šด๋กœ๋“œ

git pull origin <๋ธŒ๋žœ์น˜>

 

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰ ๋ชฉ๋ก์— uwsgi.service ํŒŒ์ผ ์ถ”๊ฐ€ํ•˜๊ธฐ

sudo ln -f /home/ubuntu/<ํ”„๋กœ์ ํŠธ>/.config/uwsgi/uwsgi.service /etc/systemd/system/uwsgi.service

 

๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค ๋ฐ๋ชฌ ์žฌ์‹œ์ž‘ํ•˜๊ธฐ

sudo systemctl daemon-reload

 

uwsgi ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์„œ๋น„์Šค ์ผœ๊ธฐ

sudo systemctl enable uwsgi

sudo systemctl restart uwsgi

 

nginx ์„ค์ •ํŒŒ์ผ nginx์•ฑ์— ๋“ฑ๋กํ•˜๊ธฐ

sudo cp -f /home/ubuntu/<ํ”„๋กœ์ ํŠธ>/.config/nginx/<ํ”„๋กœ์ ํŠธ>.conf /etc/nginx/sites-available/<ํ”„๋กœ์ ํŠธ>.conf

 

๋“ฑ๋กํ•œ nginx์•ฑ ํ™œ์„ฑํ™”ํ•˜๊ธฐ

sudo ln -sf /etc/nginx/sites-available/<ํ”„๋กœ์ ํŠธ>.conf /etc/nginx/sites-enabled/<ํ”„๋กœ์ ํŠธ>.conf

 

๊ธฐ๋ณธ nginx์•ฑ ์‚ญ์ œํ•˜๊ธฐ

sudo rm /etc/nginx/sites-enabled/default

 

๋ฐ๋ชฌ ์žฌ์‹œ์ž‘ํ•˜๊ณ , nginx์™€ uwsgi ์žฌ์‹œ์ž‘ํ•˜๊ธฐ

sudo systemctl daemon-reload

sudo systemctl restart uwsgi nginx

 

nginx๊ฐ€, ํ”„๋กœ์ ํŠธ ํŒŒ์ผ๋“ค ์ปจํŠธ๋กค ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ถŒํ•œ ์ฃผ๊ธฐ

sudo chown -R deploy:deploy <ํ”„๋กœ์ ํŠธ>

 

AWS์—์„œ HTTP 80 ํฌํŠธ ํ—ˆ์šฉํ•ด์ฃผ๊ธฐ ( ๋ณด์•ˆ -> ๋ณด์•ˆ๊ทธ๋ฃน -> ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ์ถ”๊ฐ€ )

80 ํฌํŠธ๊ฐ€ ํ—ˆ์šฉ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ / ์—†์œผ๋ฉด ์ถ”๊ฐ€!

 

์ ‘์†ํ•˜๊ธฐ ( ํผ๋ธ”๋ฆญ DNS๋กœ, ํฌํŠธ ์—†์ด )

 

ํฌํŠธ ์—†์ด๋„, ์‚ฌ์ดํŠธ ์ ‘์† ๊ฐ€๋Šฅ!

 

 

Google Site Speed๋กœ [ uwsgi - nginx ] ์‚ฌ์šฉ ์ „ํ›„ ์ ์ˆ˜ ๋น„๊ต ํ•ด๋ณด๊ธฐ

 

[ uwsgi - nginx ] ์‚ฌ์šฉ์ „ ์ ์ˆ˜

86์  ์ด๋‹น

 

[ uwsgi - nginx ] ์‚ฌ์šฉํ›„ ์ ์ˆ˜

ใ…—ใ…œใ…‘

 


nginx์—์„œ CSS(์Šคํƒ€์ผ) ์ ์šฉํ•˜๊ธฐ

 

[AWS] nginx์—์„œ CSS ์ ์šฉํ•˜๊ธฐ ( static ํŒŒ์ผ )

์ด์ „ ํฌ์ŠคํŒ…๊ณผ ์ด์–ด์ง‘๋‹ˆ๋‹ค. STATIC ๊ฒฝ๋กœ ์„ค์ • ํ™•์ธํ•˜๊ธฐ ( ๋‚ด ์ปดํ“จํ„ฐ/ํ”„๋กœ์ ํŠธ/settings.py ) STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') nginx์—๊ฒŒ STATIC ๊ฒฝ๋กœ ์•Œ๋ ค์ฃผ๊ธฐ ( ๋‚ด ์ปดํ“จ..

defineall.tistory.com

 

 

 

๋ฐ˜์‘ํ˜•