Nginx + Gunicorn + Django   서버구축
Python/Django

Nginx + Gunicorn + Django 서버구축

@@@@@@@@@@@@@@@

2020 5/15 작성

2020 7/16 수정

 

@@@@@@@@@@@@@@@

 

Aws ec2  그리고 가상환경은 Anaconda or Miniconda 로 했다는 가정하에 진행한다.

https://invalueable.tistory.com/71?category=752115

 

아나콘다 설치 (with aws)

aws 에 아나콘다 설치도중 payload 가 0에서 올라가지않았다 . 그래서 10월 꺼대신 7월 버전을 받아서 해결했다 . @@@ 2020 05/06 7월꺼 안됨.. 최신걸로 하세용 wget https://repo.anaconda.com/archive/Anaconda..

invalueable.tistory.com

이블로그를 참조했습니다.

https://soyoung-new-challenge.tistory.com/62?category=831257

 

 

1. Django (2.2.5) 버전사용 설치

conda install -c anaconda django==2.2.5

2.Django 프로젝트 시작

django-admin startproject 프로젝트이름

시작하면 프로젝트이름으로 폴더가 생성된다.

 

1) manage.py : 실행시 사용 ( runserver )

2) 프로젝트이름/settings.py : 장고 프로젝트 설정을 하는 곳

3) 프로젝트이름/urls.py : 앱단위 전체 url을 관리하는 곳

4) wsgi.py : 배포관련 파일이 존재하는 곳

 

3.Django 확인하기  , 외부접속

 

1. Aws에 보안그룹에서 8000 포트를 열어주어야한다 (포트번호는자유)

2. 프로젝트/setting.py 에서 ALLOWED_HOSTS = []  가있을텐데  []  를   ['*'] 로 바꿔주자

 ㄱㄱ

 python manage.py runserver 0:8000

접속되면 잘된것 ㅇㅇ

 

추가적으로 앱을 새로 시작 (추후에 다루기로함)

python manage.py startapp 앱이름

 

4.Gunicorn 설치

 

보통 Gunicorn 아니면 uwsgi를 쓰더라.(이 두개는 나중에 비교해보자)

Gunicorn으로 해보자

1. conda 명령어로 설치 ㄱㄱ

conda install -c anaconda gunicorn

2.설치후 프로젝트안에 manage.py가 있는 경로에서 실행

 gunicorn --bind 0.0.0.0:8000 프로젝트이름.wsgi:application

에러 없이 4줄뜨면 잘된것 ㅇㅇ

그리고 ip주소 + :8000 으로 접속해서 확인해보자

 

5.Gunicorn 설정

system에 Gunicorn을 등록하자 .

 vi /etc/systemd/system/gunicorn.service

안되면 저장안될지 sudo붙여서 실행하자.

 

경로못찾아서  이것때문에 진짜 해맴 ㅠ

여튼 적어주자.

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

[Service]
User=사용자이름
Group=www-data
WorkingDirectory=프로젝트 설치경로(manage.py파일이있는곳)
ExecStart= Gunicorn 실행위치 

[Install]
WantedBy=multi-user.target

사용자이름은 aws ubuntu 를 사용한다면 디폴트로 ubuntu 이다 !

ExecStart가 헬이었는데 Anaconda로 Gunicorn을 설치했다면

anaconda3/envs/가상환경이름/bin/gunicorn --workers 3 --bind 0.0.0.0:8080 프로젝트이름.wsgi:application

 

그후

sudo systemctl start gunicorn
sudo systemctl enable gunicorn
sudo systemctl status gunicorn.service

해서 초록빛 들어오면 성공이다 !

 

6. Nginx 설치

 sudo apt-get update
 sudo apt-get install nginx
 
 service nginx restart 
 service nginx status

초록빛 들어오면 성공 ㅇㅇ

 

7. Nginx - Gunicorn - Django 연결설정

vi /etc/nginx/sites-enabled/장고프로젝트이름

역시 저장안되면 +sudo

server {
    listen 80;
    server_name [IP주소];

    charset utf-8;

    location / {
        include proxy_params;
        proxy_pass http://[IP주소]:8000;

    }
}

저장후

nginx를 재시작 ...

80포트로 요청을 보내고 8080 번 유니콘 인터페이스에서 장고로 연결되어 요청이 처리된다!

 

 

 

@@@@@  번외 gunicorn을 선택한 이유

인스타 그램도    Gunicorn을 사용한다.

내가 찾아본거에 따르면..

uwsgi는 무거우나 확장성이 높다!

gunicorn은 가볍다 !   이정도이다 .

'Python > Django' 카테고리의 다른 글

[Django] Nginx- Gunicorn 삽질  (0) 2020.07.17
[Django] Django-Admin css 적용안되는문제 (정적파일이해)  (0) 2020.07.16
[Django] ORM  (1) 2020.06.20
[Django] Class Based Views  (0) 2020.06.20
[Django] Paginator  (0) 2020.06.19