Django Gunicorn, Nginx 리눅스 배포

이민기·2022년 7월 6일
0
post-thumbnail

리눅스 파이썬 글로벌 버전 설정

pyenv install 3.9.6
pyenv global 3.9.6
python -V
#=> Python 3.9.6

settings.py static, media, allow_host

STATIC_ROOT = BASE_DIR / 'static'
STATIC_URL = '/static/'

MEDIA_ROOT = BASE_DIR / 'media'
MEDIA_URL = '/media/'

ALLOWED_HOSTS = [
	'리눅스 아이피'
]

Gunicorn 설치하기

pip install Django gunicorn

Gunicorn 잘되는지 테스트

gunicorn --bind 0.0.0.0:8000 {wsgi 있는 폴더이름}.wsgi:application

sudo nano /etc/systemd/system/gunicorn.service

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/{프로젝트상위폴더이름}
ExecStart={venv 경로}/bin/gunicorn \
        --workers 3 \
        --bind 127.0.0.1:8000 \
        {wsgi 있는 폴더이름}.wsgi:application

[Install]
WantedBy=multi-user.target

기본 실행 명령어

sudo systemctl daemon-reload
sudo systemctl start gunicorn
sudo systemctl enable gunicorn 
sudo systemctl status gunicorn.service 
sudo systemctl restart gunicorn

Nginx 설치및 세팅

sudo apt-get update
sudo apt-get install -y nginx

sudo nano /etc/nginx/sites-available/{wsgi 있는 폴더이름}

server {
        listen 80;
        server_name 3.36.78.222;

        location /static {
                root /home/ubuntu/{프로젝트 최상위 폴더이름}/;
        }

        location /media {
                root /home/ubuntu/{프로젝트 최상위 폴더이름}/;
        }

        location / {
                include proxy_params;
                proxy_pass http://0:8000;
        }
}

nginx 디폴트 파일 지우기 (안될시)

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

문법검사

sudo nginx -t

# 링크 걸어 주기!
sudo ln -s /etc/nginx/sites-available/{wsgi 있는 폴더이름} /etc/nginx/sites-enabled
sudo systemctl restart nginx

아파치 서버 80번 포트 죽이기

sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill

Nginx 에러 로그 확인하기

tail -f /var/log/nginx/error.log

TIP

혹시 nginx permission 오류 발생시

nano /etc/nginx/nginx.conf

# 들어가서 user 값 변경

user 계정;
profile
지나가는사람

0개의 댓글