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 에러나 접속은되는데 화면이 재대로 나오지 않는다면 위 설정 파일 중 하나의 경로가 맞지 않는 경우가 많다
'Django' 카테고리의 다른 글
로그 남기기 (0) | 2023.02.09 |
---|---|
설정 파일 분리하기 (0) | 2023.02.08 |
서버 배포 하기 (0) | 2023.02.07 |
AWS EC2에 github를 이용해 장고 어플리케이션 배포하기2 (0) | 2023.01.25 |
AWS EC2에 github를 이용해 장고 어플리케이션 배포하기1 (0) | 2023.01.25 |