django 2.1 버전
python 3.6.x
로컬에서
django 프로젝트를 pycharm을 사용해서
만들어주고
git 사용해서 버전관리
python3 manage.py startapp app이름
해서 앱 만들어주고 settings.py에 추가
settings.py에
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
추가
gunicorn 설치
pip install gunicorn
gunicorn 설치 후 서비스에 등록해주기
/etc/systemd/system에
gunicorn.service 만들기
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=프로젝트루트
ExecStart=/usr/local/bin/gunicorn \
--workers 7 \
--bind unix:/프로젝트루트/프로젝트명.sock \
프로젝트명.wsgi:application
[Install]
WantedBy=multi-user.target
User, Group은 사용할 계정과 그룹으로 지정하고
WorkingDirectory는 프로젝트루트로
django 사용해 보신분들은 이해하실듯
프로젝트루트밑에 프로젝트명으로 폴더 하나더있는데 프로젝트루트 경로로 해야함
bind 시킬 위치는 저 위치로 안해도 상관없음 나중에 nginx에서 경로 잘 설정해주면 됨
wsgi.py가 있는 프로젝트명폴더가 abc면
abc.wsgi:application으로 해야함
통상 워커 수는
1 + 2 * 코어수
위와 같이 만든 후
sudo systemctl enable gunicorn 하면
스크립트에 설정된 multi-user.taget 디렉토리에
심볼릭링크가 걸림
링크 만들어지는거 확인하고
sudo systemctl start gunicorn
sudo systemctl status gunicorn 해서
active 상태인지 확인하기
active 상태이면
nginx 설정
/etc/nginx/site-available에서
설정 하나 만든 후 /etc/nginx/site-enabled에 ln -s로 심볼릭링크걸기
서버 블락 밑에
location /static {
alias /static폴더 경로;
}
location / {
include proxy_params;
proxy_pass http://unix:bind시킨소켓경로
}
static 경로는 위에 settings.py에서 설정한 경로이고
static 폴더를 생성 하려면 python3 manage.py collectstatic 해주면 자동으로 생성됨
간혹 static 폴더를 찾을 수 없다하는데
설정이 제대로 되어있는지 확인하기
location /static/ 이렇게 스면 안되고 /static으로
root 로 static 경로를 지정해주는 경우가 있는데 alias로
static 폴더 퍼미션 확인하기
// 그 외
pycharm을 사용 할 경우
상단 메뉴중에
File -> Settings -> Project Interpreter에서 원격으로 쉽게 패키지 추가 할 수 있음
코드를 수정하고 git pull로 배포 한 후
sudo systemctl restart gunicorn을 해야 반영이 됨
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.