일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 대전 웨딩홀 추천
- EC2 MySQL
- 대전 웨딩홀 비교
- Django EC2 gunicorn nginx
- AIBootcamp
- 코린이블로그9일차 #알고리즘공부 #C언어
- 대전 팔레드오페라 후기
- CLI
- 팔레드오페라 웨딩홀 계약 후기
- 코린이블로그17일차 #알고리즘공부 #C언어
- 팔레드오페라 웨딩홀 후기
- 코린이블로그8일차 #알고리즘공부 #C언어
- 코드스테이츠
- 2주차
- AI부트캠프
- 코린이블로그4일차 #알고리즘공부 #C언어
- 코린이블로그2일차 #알고리즘공부 #C언어
- 오블완
- 웅장한 웨딩홀
- codestates
- Django EC2
- 대전 웨딩홀 가격
- 파이썬
- 티스토리챌린지
- Linux Timezone
- 대전 피로연장 넉넉한 웨딩홀
- 1주차
- 폰노이만 아키텍쳐
- Von Neumann Architecture
- 폰노이만의 구조
- Today
- Total
찰리의 놀이터
[EC2] Django REST Framework 배포하기(feat. Miniconda, Gunicorn, NginX) 본문
지난 포스팅에서 EC2 Local에서 다루는 MySQL을 보여드렸습니다.
EC2 인스턴스 생성은 지난 포스팅에서 다루었기 때문에 EC2 인스턴스를 만들고 MySQL 설정이 끝난 시점부터 시작하도록 하겠습니다.
Git 설치 후 레포지토리 복제
Django Project는 github로 가져옵니다.
가져온 이 후, MySQL 설정을 해주시고 migrate를 진행해주시면 됩니다.
$ sudo apt-get install git
$ git clone [Repository 주소]
Miniconda 설치
저는 기존 Local에서 Anaconda 가상환경을 사용하고 Virtualenv 사용 시 pip 설치할 때, 설치할 수 있는 최신버젼이 맞지 않아 Miniconda를 사용합니다.
miniconda 공식 사이트에서도 확인할 수 있습니다.
wget으로 파일을 설치합니다.
$ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
권한 변경을 해줍니다.
$ chmod -R 755 Miniconda3-latest-Linux-x86_64.sh
받은 파일을 설치합니다. 중간중간 yes 또는 엔터를 눌러줍니다.
엔터로 넘어가는 속도가 느리면 스페이스바를 눌러주시면 됩니다.
$ ./Miniconda3-latest-Linux-x86_64.sh
conda 설치가 완료되면 아래 명령어로 새로 추가된 PATH를 활성화 시켜주도록 합니다. 실행시키고 입력창 앞에 (base)가 뜬다면 설치 완료입니다.
$ source ~/.bashrc
requirements.txt
개발 진행한 가상환경의 설치 프로그램을 옮기기 위해 requirements.txt를 설치하셨을겁니다.
가상환경을 생성하신 후 모두 다운로드 받도록 합니다.
Gunicorn
Gunicorn 설치
$ pip install gunicorn
Gunicorn 세팅
settings.py에 정적파일 저장할 경로 추가 및 정적파일 저장
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
또는
STATIC_ROOT = '/static/'
manage.py가 있는 디렉토리에서 아래 명령어를 실행합니다.
$ python manage.py collectstatic
DRF를 그냥 불러오면 DRF에서 보이는 HTML, CSS, JavaScript가 없어서 이상한 모습으로 렌더링됩니다.
Gunicorn 파일 설정
gunicorn 대신 다른 이름을 쓰셔도 됩니다.
$ cat /etc/systemd/system/gunicorn.service
- WorkingDirectory : Django Project의 절대경로
- EnvironmentFile : Django Project의 환경변수
- ExecStart : gunicorn을 install한 가상환경 내의 gunicorn 위치
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/[Django Project]
EnvironmentFile=/home/ubuntu/[Django Project]/.env
ExecStart=/home/ubuntu/miniconda3/envs/de/bin/gunicorn \
--workers 2 \
--bind unix:/tmp/gunicorn.sock \
config.wsgi:application
[Install]
WantedBy=multi-user.target
Gunicorn 명령어
서비스 등록
$ sudo systemctl start gunicorn
$ sudo systemctl enable gunicorn
서비스 재시작(Django 파일 수정 시 수행)
$ sudo systemctl daemon-reload
$ sudo service gunicorn restart
상태 확인
$ systemctl status gunicorn
NginX
NginX 설치
$ pip install nginx
NginX 파일 설정
$ sudo vi /etc/nginx/sites-available/프로젝트이름
server {
listen 80;
server_name [Public DNS 또는 IP];
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/[Django Project];
}
location / {
include proxy_params;
proxy_pass http://unix:/tmp/gunicorn.sock;
}
}
$ sudo ln -s /etc/nginx/sites-available/프로젝트이름 /etc/nginx/sites-enabled
이미 존재한다고 뜬다면 f 옵션을 걸어줍니다.
$ sudo ln -sf /etc/nginx/sites-available/django_test /etc/nginx/sites-enabled
문법 검사 후 NginX를 다시 시작합니다.
$ sudo nginx -t
$ sudo systemctl restart nginx
Errors
Failed to start A high performance web server and a reverse proxy server
[https://stackoverflow.com/questions/51525710/nginx-failed-to-start-a-high-performance-web-server-and-a-reverse-proxy-server]
server name has suspicious symbols
[https://2vup.com/nginx-server-name-has-suspicious/]
could not build server_names_hash, you should increase server_names_hash_buck\
[https://pram.tistory.com/entry/django-nginx-error-%EC%9E%A5%EA%B3%A0%EC%97%90%EB%9F%AC-emerg-could-not-build-the-servernameshash-you-should-increase-servernameshashbucketsize-64]
'AWS' 카테고리의 다른 글
[EC2] EC2 mysql 설정하기 + DBeaver 연결하기 (0) | 2023.03.20 |
---|