티스토리 뷰
Rocky Linux에서 Django의 정적 파일이 정상적으로 서빙되지 않는다면 다음 항목들을 체크해 보세요.
1. STATIC 관련 Django 설정 확인 (settings.py)
먼저 settings.prod.py 또는 관련된 설정 파일에서 STATICFILES 관련 설정을 확인하세요.
STATIC_URL = '/static/' # 정적 파일 요청 URL 경로
STATIC_ROOT = '/opt/django-apps/static/' # `collectstatic` 실행 후 정적 파일이 모이는 폴더
STATICFILES_DIRS = [ # 개발 환경에서 사용하는 정적 파일 경로 (운영 환경에서는 사용하지 않아도 됨)
os.path.join(BASE_DIR, "staticfiles"),
]
STATIC_ROOT가 올바른 경로인지 확인하세요. Django에서 collectstatic 실행 시 이 디렉터리로 정적 파일을 모읍니다.
2. 정적 파일 수집 (collectstatic)
Django는 운영 환경에서 직접 정적 파일을 제공하지 않으므로, collectstatic 명령어를 실행해야 합니다.
DJANGO_SETTINGS_MODULE=jira_to_okta.settings.prod python manage.py collectstatic --noinput
이후, STATIC_ROOT 경로(/opt/django-apps/static/)에 정적 파일들이 정상적으로 수집되었는지 확인하세요.
ls -l /opt/django-apps/static/
파일들이 없다면 settings.prod.py의 STATICFILES_DIRS가 올바르게 설정되었는지 확인하세요.
3. Gunicorn이 정적 파일을 서빙하지 않음
Gunicorn은 정적 파일을 직접 제공하지 않습니다. 따라서 Nginx가 정적 파일을 제공하도록 설정해야 합니다.
✅ Nginx 설정 확인 (/etc/nginx/conf.d/django.conf)
Nginx가 STATIC_ROOT를 올바르게 서빙하고 있는지 확인하세요.
server {
listen 80;
server_name your_domain_or_ip;
location /static/ {
alias /opt/django-apps/static/;
autoindex on;
}
location / {
proxy_pass http://unix:/opt/django-apps/iis_jira_to_okta/gunicorn.sock;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
이후 Nginx 설정을 다시 로드합니다.
sudo nginx -t # 설정 테스트
sudo systemctl restart nginx # Nginx 재시작
4. SELinux 확인 (SELinux 활성화 시 정적 파일 접근 문제 발생 가능)
SELinux가 활성화되어 있으면 Nginx가 STATIC_ROOT에 접근하지 못할 수도 있습니다. 아래 명령어로 확인하세요.
sestatus
만약 Enforcing으로 설정되어 있다면, SELinux의 보안 컨텍스트를 변경해야 합니다.
sudo chcon -R --type=httpd_sys_content_t /opt/django-apps/static/
또는 SELinux를 일시적으로 비활성화할 수도 있습니다.
sudo setenforce 0
5. 파일 및 디렉터리 권한 확인
Nginx가 정적 파일을 읽을 수 있도록 올바른 권한이 설정되어 있는지 확인하세요.
sudo chown -R deploy_user:deploy_user /opt/django-apps/static/
sudo chmod -R 755 /opt/django-apps/static/
6. Nginx & Gunicorn 로그 확인
문제가 지속된다면 로그를 확인하세요.
Nginx 에러 로그 (/var/log/nginx/error.log)
sudo tail -f /var/log/nginx/error.log
Gunicorn 로그 (journalctl -u gunicorn --no-pager)
sudo journalctl -u gunicorn --no-pager | tail -n 20
🔥 최종 점검 체크리스트
✅ STATIC_ROOT 설정이 올바른지 확인
✅ collectstatic 실행 후 정적 파일이 존재하는지 확인
✅ Gunicorn이 정적 파일을 서빙하지 않는다는 점을 이해하고 있는지 확인
✅ Nginx 설정에서 /static/ 요청이 STATIC_ROOT로 매핑되는지 확인
✅ SELinux가 문제를 일으키고 있는지 확인
✅ 파일 및 디렉터리 권한이 올바른지 확인
✅ Nginx 및 Gunicorn 로그를 점검하여 추가 오류 확인
이제 다시 한 번 확인해 보고 정적 파일이 정상적으로 로드되는지 테스트해 보세요! 🚀
'Python > Django Framework (DRF)' 카테고리의 다른 글
| [Django] Python 매직 메서드(Magic Methods) 완벽정리 (0) | 2025.03.09 |
|---|---|
| Django ORM의 특성과 깊이 있는 이해 (1) | 2025.03.09 |
| Gunicorn과 Nginx를 이용한 Django 애플리케이션 배포 및 자동화 (가상환경 적용) (0) | 2025.02.18 |
| manage.py migrate 오류 해결 (0) | 2025.02.18 |
| Django Settings 관리하기: 로컬과 프로덕션 환경 분리 전략 (0) | 2025.02.12 |
- Total
- Today
- Yesterday
- 퀀트투자
- 주식공부
- 오블완
- 골든크로스
- 재테크
- 토치비전
- chat gpt 4o 예산
- 1164회 로또
- 자동매매로직
- chat gpt 한국어 가격
- 자동매매
- Numpy
- 로또 1164회 당첨
- 로또 ai
- 1165회 로또
- chat gpt 가격 예상
- 차트분석
- 주식투자
- chat gpt api 비용 계산
- 케라스
- 티스토리챌린지
- chat gpt 모델 별 가격
- 기술적분석
- Python
- chat gpt 모델 api 가격 예측
- 장고 orm sql문 비교
- 주린이탈출
- 클래스형 뷰
- 인공지능 로또 예측
- chat gpt 모델별 예산
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |