"장고 + 아파치로 웹서비스 시 소스 변경 후 적용이 안된다면?"
이 문제로 구글링을 계속 해봤지만 누구는 세팅 정보가 아니면 바로 적용된다고 하고
누구는 아파치를 재시작 해야한다고 설명했다.
직접 테스트를 해본 결과로는 바로 적용이 되었다가 안되었다가 하는데
한번 안되면 하루가 지나도 안되고 아파치를 재시작해야만 적용이 되었다.
느낌 상으로는 수정을 하다가 오류가 발생하면 적용이 막히는 느낌이다. (이것도 모르겠다 ㅜㅜ)
정확한 정답은 아직 모르겠으나 어쨌든, 뭔가를 해줘야 하기는 해야할 것 같은데
서비스를 하고 있는데 소스 변경할 때마다 아파치를 재시작하는건 위험한것 같다.
그래서, 찾은 다른 방법은 아래와 같다.
"장고 애플리케이션을 다시 로드한다!!"
1. mod_wsgi 를 사용할 경우 장고 애플리케이션을 다시 로드하는 방법
. 터치 파일 사용: 아파치 설정 파일(httpd.conf 또는 sites-available 설정 파일)에서 WSGIApplicationGroup %{GLOBAL}와 같은 설정을 사용하지 않는다면, 터치 파일을 사용하여 애플리케이션을 다시 로드할 수 있습니다. 예를 들어, myapp.wsgi 파일이 있는 디렉토리로 이동하여 다음 명령을 실행합니다:
- touch myapp.wsgi
. 아파치 graceful 재시작: 터치 파일을 사용하는 대신, 아파치 서버를 graceful하게 재시작할 수도 있습니다. 이 방법은 서버를 중단하지 않고, 현재 연결된 클라이언트 요청을 모두 처리한 후에 재시작합니다. 다음 명령을 실행합니다
- sudo apachectl graceful
2. 시스템 서비스 스크립트 사용
. Ubuntu/Debian : sudo systemctl reload apache2
. CentOS/RHEL : sudo systemctl reload httpd
* 요약
. 아파치를 완전히 재시작할 필요는 없고, 장고 애플리케이션을 다시 로드하면 됩니다.
. touch 명령을 사용하여 WSGI 파일의 수정 시간을 갱신하거나 아파치 서버를 graceful 재시작하여 애플리케이션을 다시 로드할 수 있습니다.
. 시스템 서비스 스크립트를 사용할 경우 systemctl reload 명령을 사용할 수 있습니다.
'Django' 카테고리의 다른 글
settings.py 에 선언한 값 가져오기 - django (0) | 2024.07.23 |
---|---|
django 내장 템플릿 필터 (0) | 2024.07.22 |
views.py 여러 개 파일로 분리하기 2 - django (0) | 2024.07.10 |
views.py 여러 개 파일로 분리하기 1 - django (0) | 2024.07.09 |
템플릿에서 for문 사용하기 - django (0) | 2024.07.08 |