본문 바로가기

Django

AWS EC2에 github를 이용해 장고 어플리케이션 배포하기3

1. static 파일 생성을 위한 셋팅

프로젝트의 settings.py에 해당 내용을 추가한다.

 

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

 

추가 후 깃허브로 푸시

 

 

 

2. 서버의 프로젝트 폴더로 이동 후 파일 생성

먼저 깃허브에서 최신 버전으로 pull을 한다. 그 후 하래 명령어를 실행

가상환경 실행은 필수다

 

python manage.py collectstatic --settings=config.settings

 

뒷부분 --settings=config.settings 부분은 자신의 설정 경로에 맞게 수정하면 된다

 

 

3. nginx 설치

sudo apt-get install nginx

 

 

4. nginx 사용 유저 설정

먼저 해당 파일을 연다

 

sudo vi /etc/nginx/nginx.conf

 

 

그 후 user 부분을 자신의 유저로 변경

 

user ubuntu; <---------- 이 부분을 ubuntu로 설정
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
 
events {
        worker_connections 768;
        # multi_accept on;
}
 
http {
 
        ##
        # Basic Settings
        ##
.... 중략

 

 

5. 프로적트 폴더에 nignx 설정 파일 생성

 

project/config/nginx/mysite.conf 경로에 해당 파일 생성

 

server {
    listen 80;
    server_name 111.222.333.444; <----- 당신의 서버 주소
    charset utf-8;
    client_max_body_size 128M;
 
    location / {
        uwsgi_pass  unix:///tmp/mysite.sock;
        include     uwsgi_params;
    }

    location /static/ {
        alias /home/ubuntu/app/project/config/static;
    }
}

 

6. uwsgi service파일 생성

project/config/uwsgi/uwsgi.service 경로에 해당 파일 생성

 

[Unit]
Description=uWSGI service
After=syslog.target
 
[Service]
ExecStart=/home/ubuntu/myvenv/bin/uwsgi -i /home/ubuntu/app/project/.config/uwsgi/mysite.ini
 
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
 
[Install]
WantedBy=multi-user.target

 

ExecStart : /home/ubuntu/myvenv/ 해당 경로는 자신의 가상환경 경로

-i 뒷 부분은 서버상의(프로젝트 아님) 자신의 mysite.ini 파일의 위치

 

 

이 두 파일을 생성 후 커밋하여 깃허브로 푸시 한다.

 

 

7. uwsgi.service 파일을 데몬에 등록 후 재실행

sudo ln -f /home/ubuntu/app/project/config/uwsgi/uwsgi.service /etc/systemd/system/uwsgi.service
sudo systemctl enable uwsgi
sudo systemctl restart uwsgi

 

 

8. nginx 설정 파일을 nginx 어플리케이션에 등록

sudo cp -f /home/ubuntu/app/project/config/nginx/mysite.conf /etc/nginx/sites-available/mysite.conf

 

 

 

 

복사된 파일을 sites-enables 폴더 안에 링크

 

sudo ln -sf /etc/nginx/sites-available/mysite.conf /etc/nginx/sites-enabled/mysite.conf

 

 

 

 

기본 파일 삭제

 

sudo rm /etc/nginx/sites-enabled/default

 

 

 

 

데몬 재실행

 

sudo systemctl daemon-reload
sudo systemctl restart uwsgi nginx

 

 

마지막으로 AWS에서 80번 포트를 열지 않았다면 열어준다

 

 

 

자신의 서버 아이피로 접속되면 성공!

 

 

 

 

 

배포를 하면서 발생하는 문제는 대부분 경로를 재대로 입력하지 않아서 발생했다. 만일 500 에러나 접속은되는데 화면이 재대로 나오지 않는다면 위 설정 파일 중 하나의 경로가 맞지 않는 경우가 많다

 

 

 

 

참고 : https://nerogarret.tistory.com/45