๐ 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 ํฌํธ ํ์ฉํด์ฃผ๊ธฐ ( ๋ณด์ -> ๋ณด์๊ทธ๋ฃน -> ์ธ๋ฐ์ด๋ ๊ท์น ์ถ๊ฐ )
์ ์ํ๊ธฐ ( ํผ๋ธ๋ฆญ DNS๋ก, ํฌํธ ์์ด )
Google Site Speed๋ก [ uwsgi - nginx ] ์ฌ์ฉ ์ ํ ์ ์ ๋น๊ต ํด๋ณด๊ธฐ
[ uwsgi - nginx ] ์ฌ์ฉ์ ์ ์
[ uwsgi - nginx ] ์ฌ์ฉํ ์ ์
nginx์์ CSS(์คํ์ผ) ์ ์ฉํ๊ธฐ