본문 바로가기

Python Web Framework/Django, Flask

[Nginx + Gunicorn + Django] API 서버 구축

웹서버인 Nginx, 앱서버인 Django,

그리고 그 둘을 통신하게 도와주는 Guniron 인터페이스

이렇게 3개를 함께 구축하여 Rest API 통신을 하는 서버를 구축!

 

 

 

 

가상환경 구축 (Aanaconda)

$ wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh

- 아나콘다 공식 홈페이지에서 다운로드 할 경로를 받아와서 설치 진행

 

$ bash Anaconda3-2019.10-Linux-x86_64.sh

- yes로 설치 진행

아나콘다 설치 화면 (enter 클릭)
설치 경로 확인

- 아나콘다 설치 위치를 확인한다.

 

$ source ~/.bashrc

- 변경 된 사항 적용

 


<Trouble Shooting>

 

anaconda 설치 후 변경 사항 적용 후에도 conda not found 에러가 뜨는 경우

export PATH=~/anaconda3/bin:$PATH 

위와 같이 경로 설정해주면 conda 사용가능

 

 

 

가상환경 생성 및 확인

$ conda create -n "가상환경이름" python=3.5.6

- 가상환경 생성

 

$ conda --version

-  가상환경 버전 확인

 

$ conda info --envs

- 가상환경 리스트 확인

 

$ conda remove -name "가상환경이름" -all

- 가상환경 삭제

 

$ conda activate "가상환경이름"
$ conda deactivate "가상환경이름"

- 가상환경 활성화, 비활성화

 


<Trouble Shooting>

가상환경 activate 할때 아래와 같이 에러 발생할 경우

CommandNotFoundError
: Your shell has not been properly configured to use 'conda activate'


source ~/.bashrc 를 통해 변경사항을 적용한다.

그럼 아래와 같이 잘 실행된다.

 

error 발생화면

 

 

Django, DjangoFrameWork 설치

- pip으로 라이브러리 설치 전 업그레이드를 먼저 진행한다

$ pip install --upgrade pip

$ pip install django
$ pip install djangorestframework

 

 

장고 프로젝트 시작

$ django-admin startproject [프로젝트이름]

- 프로젝트 시작 시 프로젝트라는 이름으로 폴더가 생성된다.

- 또한 프로젝트 시작 위치에 실행을 시킬 수 있는 manage.py가 생성된다

 

# 기본 생성 파일

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

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

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

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

 

$ python manage.py runserver 0.0.0.0:8000

- 외부에서 접속이 가능하게 하려면 runserver 뒤에 0.0.0.0을 붙여주고, 그렇지 않다면 포트만 작성

- 외부에서 접속이 가능하게 하는 또 다른 설정은 프로젝트/setting.py에서 아래와 같이 추가 수정

- 서버를 debug 모드로 실행시킬 때는 DEBUG = True로 설정한다.

- 실행 후 잘 접속이 된다면 제대로 장고가 설치가 된 것이다.

 

$ python manage.py startapp 앱이름

- 추가적으로 앱을 새로 시작한다. 

- 앱이름으로 프로젝트 폴더 안에 앱 폴더가 생성된다.

- 이후 자세한 설정은 아래 포스팅 참고

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

 

Django_project 시작하기

Django_project Process # 가상 환경 활성화 (venv : 가상 환경 이름) activate venv # 장고 프로젝트 시작 django-admin startproject myproject # 장고 프로젝트 시작 후 소스트리 구조 확인 tree /f # 기본 생..

soyoung-new-challenge.tistory.com

 

 

Gunicorn 설치하기

$ conda install -c anaconda gunicorn

- 아나콘다를 사용하여 Gunicorn 설치 진행

 

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

- Gunicorn이 설치가 완료되면, 장고 프로젝트 안에 manage.py가 있는 경로로 와서 위 명령어로 Gunicorn 실행

- 위와 같은 화면이 보여지면 잘 설치가 된것으로 확인

- 웹 브라우저로 http://서버IP:8000 로 접근해 제대로 작동하는지 한번 더 체크 후 종료

 

 

Gunicorn 설정하기

$ vi /etc/systemd/system/gunicorn.service

- system에 Gunicorn을 등록하기 위해 위 파일 생성하여 아래 내용을 입력해준다.

 

- Anaconda를 통해 Gunicorn을 설치했다면 gunicon(소켓? 실행파일)의 경로는 /anaconda3/가상환경이름/python3/bin/gunicorn이다.

- ExecStart : Gunicorn실행위치 --workers 숫자 --bind 0.0.0.0:8000 장고프로젝트이름.wsgi:application

 

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

gunicorn 상태 확인

- 제대로 실행이 되었는지 확인

 

 

NGINX 설치하기

$ sudo apt-get update
$ sudo apt-get install nginx

- Nginx 설치하기

 

$ service nginx restart 
$ service nginx status

- service로 nginx 시작하고 상태 확인하기

nginx 상태 확인

 

 

Nginx - Gunicorn - Django 연결하기 위한 설정

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

>> 위 설정파일을 생성해서 아래와 같이 입력한다

 

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

    charset utf-8;

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

    }
}

>> 위 설정을 하고 nginx를 재시작한다

>> 80 포트로 요청을 보내면 8000번 구니콘 인터페이스에서 장고로 연결되어 요청이 처리된다.

'Python Web Framework > Django, Flask' 카테고리의 다른 글

[Django MySQL] Python으로 DB에 접속하기  (0) 2020.02.08
[Django] Trouble Shooting  (0) 2020.01.24
[Nginx + Gunicorn + Django] API 서버 구축  (0) 2020.01.20
Django_Admin  (0) 2019.04.08
Django_Model  (0) 2019.04.07
Django_project 시작하기  (0) 2019.04.07