이제 서비스를 위한 준비는 되었습니다.
제가 준비하는 서비스는 django + Channels 서비스입니다. Channels를 사용하려면 asgi를 사용하여 서비스를 하여야 합니다.
asgi서비스를 위해서는 uwsgi를 사용하지 않고 daphne를 이용하여 서비스를 해야합니다. daphne + Nginx를 연동하는 자료는 부족하였습니다. 구글 검색과 channels의 공식 설명서를 보면서 어렵게 daphne + Nginx 서비스를 구현하게 되었습니다.
이에 다음에 다른 프로젝트를 수행할 때 시행착오를 겪지 않으려고 자료를 남기려는 목적과 저 처럼 서비스를 구현하는데 어려움을 겪는 분들에게 조금이나봐 도움이 되었으면 하는 생각에 남기게 되었습니다.
daphne 설치
daphne는 python 패키지로 pip을 통해 설치 할 수 있습니다.
$ sudo pip install daphne
supervisord 설치
supervisord는 프로세스를 daemon으로 위탁관리해주는 tool입니다.
설치방법
ubuntu 기준 설치입니다.
$ sudo apt-get install supervisor
설치가 완료 되었습니다.
supervisord 기동 스크립트
$sudo service supervisor start
$sudo service supervisor status
이렇게 실행되고 있는 상태를 확인할 수 있습니다.
supervisor conf 재로드
$sudo supervisorctl reread
supervisor에 channels를 daemon화 config를 작성해보겠습니다.
아래와 같은 순서로 작성합니다.
$cd /etc/supervisor/conf.d
$vi channels.conf
[fcgi-program:asgi]
# TCP socket used by Nginx backend upstream, nginx를 통해 들어오는 요청을 처리하기 위한 소켓
socket=tcp://localhost:8000
# Directory where your site's project files are located, 프로젝트 디렉토리입니다.
directory=/usr/local/share/iothook
# Each process needs to have a separate socket file, so we use process_num
# Make sure to update "mysite.asgi" to match your project name
# daphne를 실행하는 명령입니다. 밑은 numprocs의 갯수에 따라 소켓이 만들어집니다.
# config.asgi:application은 asgi.py의 내용을 확인하시면 됩니다.
# 별도로 asgi.py와 함께 설명드리겠습니다.
command=/root/.virtualenvs/iothook_env/bin/daphne -u /run/daphne/daphne%(process_num)d.sock --fd 0 --access-log - --proxy-headers config.asgi:application
#소켓의 숫자입니다. 늘이셔도 되고 줄이셔도 됩니다.
# Number of processes to startup, roughly the number of CPUs you have
numprocs=4
# 프로세스 이름을 어떻게 만들 것인지 입니다.
# Give each process a unique name so they can be told apart
process_name=asgi%(process_num)d
# 자동시작할 것인가, 그리고 문제가 발생했을때 다시 재시작을 어떻게 할 것인가 하는 부분입니다.
# Automatically start and recover processes
autostart=true
autorestart=true
# 로그파일을 저장할 위치입니다.
# Choose where you want your log to go
stdout_logfile=/usr/local/share/iothook/log/asgi.log
stderr_logfile=/usr/local/share/iothook/log/asgi_err.log
redirect_stderr=true
user=root # 실행 user
group=root # 실행 그룹
이렇게 작성하여 저장 한 후,
$ supervisorctl reread
$ $sudo service supervisor restart
하시면 supervisord가 daphne를 실행하게 됩니다.
실행이 제대로 되는 지 확인하기 위해서는 위 command =... 부분의 -u 옵션 뒤 /run/daphne/ 의 디렉토리를 확인하면 됩니다.
이곳에 아래와 같은 파일이 있으면 제대로 실행이 되는 것입니다.
1차 설정이 되었습니다. 이제 nginx 설정을 해보겠습니다
nginx 설치 및 설정
Nginx는 웹서버입니다.
웹서버는 보통 사용자의 요청들을 관리하여 WAS의 부하를 줄여주며 정적파일을 담당하고 응답해주는 역할을 합니다.
Nginx를 설치해보도록 하겠습니다.
$apt update
$ apt install nginx
Nginx 버전 및 상태 확인 - version/status
설치가 완료되면 nginx가 자동으로 실행됩니다.
아래 명령어로 nginx 버전과 상태를 확인 할 수 있습니다.
$nginx -v
$ service nginx status
Nginx 웹브라우저 확인
웹서버가 설치된 IP로 접근하면 위의 화면과 나오면 성공입니다.
'IT > Django' 카테고리의 다른 글
장고 channels 서비스를 위한 nginx 설정 변경 (1) | 2021.09.22 |
---|---|
장고(Django) 서비스를 위한 기본 패키지 설치 및 장고 서비스 시작 (0) | 2021.09.22 |
장고(django)서비스를 위한 방화벽 설정 (0) | 2021.09.22 |
우분투 서버에 pip3 모듈 설치 및 Python 가상 환경 설정 (0) | 2021.09.22 |
github로부터 django 프로젝트 소스 복사하여 서버에 설치 (0) | 2021.09.21 |