[Gunicorn] logrotate, crond를 활용한 nginx와 gunicorn의 log 파일 관리하기
·
Middleware/WSGI
logrotate 란? Linux 환경에서 로그의 관리를 도와주는 CUI 기반의 도구이다. 사용자가 정한 주기마다 쌓인 로그를 아카이빙, 아카이빙된 파일의 갯수를 일정 갯수로 제한하는 등의 로그 관리를 하여, 스토리지 용량이 부족해지는 등의 문제를 방지할 수 있도록 한다. logrotate 자체는 daemon이 아닌, 로그의 관리를 도와주는 단순 실행파일이므로, 주기적으로 알아서 작업할 수 있는 능력이 없다. 따라서, 반드시 Linux 내의 ‘crond’ 와 같은 스케줄러 설정이 필요하다. 그리고 /etc/logrotate.d 디렉토리에 각 로그파일마다의 logrotate 설정에 대한 파일들이 있는데, 여기에 ‘nginx’, ‘{Gunicorn으로 구동할 APP 이름}’ 으로 파일명을 하여 Nginx 및..
[Gunicorn] gunicorn - nginx 연동
·
Middleware/WSGI
1. nginx 디렉토리 권한 수정 RHEL9 에서 dnf로 nginx를 설치하면 nginx 디렉토리들에 대한 권한이 default로 root로 들어가 있을 것이다. 이는 보안상 취약하므로, 아래 명령어를 수행하여 ‘nginx’ 유저 및 그룹으로 변경해 주도록 하자. # /etc/nginx/ 디렉토리 권한을 nginx:nginx로 변경 chown -R nginx:nginx /etc/nginx/ 2. SELinux 설정 변경 SELinux는 최신 RHEL 및 CentOS 에서 기본적으로 활성화되어 있는 Linux 시스템용 보안 아키텍처이다. SELinux 모듈이 켜져 있으면, 파일 접근 권한, Upstream 위치로의 Proxy 및 소켓을 통한 다른 프로세스와 통신하는 것 등에 제한이 따르기 때문에, ng..
[Gunicorn] RHEL9, Python 3.11 환경에서 Gunicorn(구니콘) 설치
·
Middleware/WSGI
사전 요구 사항 Python, pip 설치 - https://co-no.tistory.com/entry/Python-RHEL9%EC%97%90%EC%84%9C-Python-311-%EC%84%A4%EC%B9%98-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BDvenv-%EA%B5%AC%EC%84%B1 내 환경의 경우, Python 3.11로 개발하였기 때문에 아래 문서 모두 Python 3.11, pip 3.11을 기준으로 한다. 0. 프로젝트에 대한 가상환경 활성화 gunicorn은 pip로 설치하는 Python 패키지이므로, gunicorn에서 띄우려는 애플리케이션(프로젝트)에 대한 가상환경을 구성한 후에 해당 가상환경을 활성화하도록 하자. 이 글의 예시에서는 배포하려는 애플리케이션..