#35 서버 관리자

#35 서버 관리자

1. 슈퍼유저 계정 생성

개발 환경에서 사용했던 Django Admin 을 서버 환경에서 사용하기 위해 이번에도 슈퍼유저 계정을 생성해본다.

python manage.py createsuperuser

서버의 가상환경에서 python manage.py createsuperuser 명령을 실행하여 슈퍼유저를 생성한다.

그런데 Django Admin 페이지에 접속해보면 화면이 위와 같이 깨져서 표시된다. 이는 Django Admin 의 static 파일들이

우리가 Nginx에 static 파일 경로로 지정해준 디렉토리에 존재하지 않기 때문이다.

2. STATIC_ROOT

Django Admin 의 static 파일들은 ~/venvs/mysite/lib//site-packages/django/contrib/admin/static

에 위치한다. Nginx가 이를 정상적으로 인식하도록 하려면 django 환경설정 파일에 STATIC_ROOT 디렉토리를 설정하고

python manage.py collectstatic 명령을 실행하여 관리자 앱의 static 파일들을 STATIC_ROOT 디렉토리로 복사해야한다.

개발환경으로 돌아와 서버측 설정파일인 config/prod.py 를 위와 같이 수정한다. Nginx 가 인식하는 static 디렉토리가

~/projects/mysite/static 이기 때문에 설정파일에서도 마찬가지로 그 디렉토리를 static 디렉토리로 인식하게 한다.

그리고 base 설정파일의 STATICFILES_DIRS 의 BASE_DIR / 'static/' 와 충돌하지 않도록 하기 위해 STATICFILES_DIRS 를

빈 상태로 설정한다. 수정이 완료되었으면 commit 한 뒤 원격저장소에 push 한다.

서버측에서는 git pull 을 실행하여 변경 내역을 적용하고 서버 프로그램이 변경되었으니 반영을 위해 gunicorn

서비스를 재시작해준다.

3. collectstatic

이제 처음에 말했던 것 처럼 python manage.py collectstatic 명령어를 실행하여 관리자 앱의 정적 파일을 복사하자.

이 명령어는 관리자앱 뿐 아니라 다른 설치된 앱들의 모든 정적파일을 복사해준다.

명령어를 실행하면 정말 static file을 복사해올지 선택지가 표시된다. yes 를 선택하여 진행한다.

ls -l 명령어를 사용하여 static 디렉토리를 확인해보면 admin 디렉토리가 추가된 것을 확인할 수 있다.

이제 Django Admin 이 정상적인 모습으로 보여진다.

from http://scala0114.tistory.com/124 by ccl(A) rewrite - 2021-10-15 22:27:12