Aws ec2를 이용해 Django 서버 배포하기에 앞서
- 네로의 다락방님의 글을 보며 진행하였습니다. 네로의 다락방님이 간결하고 알기 쉽게 설명해 주셔서 무사히 배포할 수 있었습니다. 감사합니다.
- 해당 글은 저의 프로젝트 배포를 진행하며 생긴 문제점과 해결방안 등 다시 정리해가며 글을 새롭게 작성됩니다.
- 진행하는 OS는 mac 환경입니다.
- window 환경이라면 mobaxterm 사용을 추천드립니다. (따로 가이드 작성 예정)
- 리눅스 명령어를 따로 설명하지 않습니다.
- COVID-19-REPORT 프로젝트를 실제 사용해 보기 위하여 배포를 진행합니다.
- 현재 글은 배포 방법만 정리하였으며 설명을 추가중에 있습니다.
nginx 설치 및 설정
sudo apt-get install nginx
nignx를 사용하기 위해 설치
sudo vi /etc/nginx/nginx.conf
vi 에디터를 사용해 nginx를 편집합니다.
user www-data -> user "배포용 게정"
vscode 설정
server {
listen 80;
server_name *.compute.amazonaws.com;
charset utf-8;
client_max_body_size 128M;
location / {
uwsgi_pass unix:///tmp/mysite.sock;
include uwsgi_params;
}
}
.config 폴더 아래에 mysite.conf를 넣어줍니다.
; #linku_uwsgi.ini file
[uwsgi]
; # Django-related settings
; # the base directory (full path)
chdir = /srv/covid-19-report/
; # Django's wsgi file
module = project.wsgi:application
; # the virtualenv (full path)
home = /home/ubuntu/myvenv/
socket = /tmp/mysite.sock
chmod-socket = 666
chown-socket = jsji:jsji
uid = jsji
gid = jsji
enable-threads = true
master = true
vacuum = true
pidfile=/tmp/jsji.pid
logto = /var/log/uwsgi/covid-19-report/@(exec://date +%%Y-%%m-%%d).log
log-reopen = true
수정하면서 mysite.ini 파일도 수정합니다.
왜냐하면 uwsgi를 계속 켜둘 수 있도록 설정 파일을 추가해서 백그라운드에 계속 실행하도록 합니다.
(설명 추가 예정)
uwsgi.service 생성
[Unit]
Description=uWSGI service
After=syslog.target
[Service]
ExecStart=/home/ubuntu/myvenv/bin/uwsgi -i /srv/covid-19-report/.config/uwsgi/mysite.ini
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
관리자 권한으로 실행할 때의 명령어입니다. 이걸 service 로 등록하여 백그라운드에 계속 실행하게 할 거에요
aws 서버로 돌아가 git pull을 해줍니다.
pull을 해준 뒤 백그라운드 등록을 해줄겁니다.
uwsgi.service 파일을 데몬(백그라운드에 실행)에 등록해줍니다.
이 파일을 /etc/systemd/system/ 에 링크를 걸예정
(설명 추가)
sudo ln -f /srv/covid-19-report/.config/uwsgi/uwsgi.service /etc/systemd/system/uwsgi.service
sudo systemctl daemon-reload
데몬을 새로고침 해주고,
sudo systemctl enable uwsgi
sudo systemctl restart uwsgi
uwsgi 서비스를 사용 가능하게 변경해주고 restart 한 번 해줍니다.
Django에 nginx 등록
#1
sudo cp -f /srv/covid-19-report/.config/nginx/mysite.conf /etc/nginx/sites-available/mysite.conf
#2
sudo ln -sf /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf
#3
sudo rm /etc/nginx/sites-enabled/default
#1 sites-available 경로로 git에서 가져온 mysite.conf를 복사하여 줍니다.
#2 sites-available에 복사된 mysite.conf 파일을 sites-enables폴더 안에서도 링크해줍니다.
#3 sites-enables폴더에 있는 default 파일을 삭제해줍니다. (저는 이미 삭제한 상태)
sudo systemctl daemon-reload
sudo systemctl restart uwsgi nginx
이제, 다시 데몬을 새로 고침 해주고 nginx와 uwsgi를 다시 실행해 줍니다.
인바운드 규칙 추가
인바운드 규칙 편집 들어가는 방법 >>> integer-ji.tistory.com/304
이제 포트 80에 대한 새로운 규칙을 추가해 줍니다.
포트번호 입력 없이 자신의 사이트로 접속하게 되면
ec2-13-125-216-23.ap-northeast-2.compute.amazonaws.com
짠
'코딩공부 > Server' 카테고리의 다른 글
[CI/CD] Django Jenkins 자동 배포하기 - Django 프로젝트 생성 (1) (0) | 2022.05.13 |
---|---|
Aws ec2를 이용해 Django 서버 배포하기 - static 파일 설정 (0) | 2020.09.11 |
Aws ec2를 이용해 Django 서버 배포하기 - ec2 계정 만들기 (0) | 2020.09.08 |
Aws ec2를 이용해 Django 서버 배포하기 - uWSGI 연결 (0) | 2020.09.08 |
Aws ec2를 이용해 Django 서버 배포하기 - ec2 인스턴스 가상환경, runserver 실행하기 (0) | 2020.09.07 |