본문 바로가기

프로젝트

[TIL] 20240527 71일차

버전 1 배포

[트러블슈팅]

 

아마존 AWS 이용해서

EC2 인스턴스 생성 후 MobaXterm으로 인스턴스에 접근 성공

인스턴스 설정으로

  • 포트 8000 (사용자 지정 TCP)
  • 포트 80 (HTTP)

인바운드 규칙 생성 완료

2024-05-24 까지 작업한 내용(dev)을 버전 1으로 취급

main 브랜치에서 pull 한 후 default 브랜치 main으로 변경 및 배포 서버에서 clone 완료

배포 환경에서 수정한 점

  • 프로젝트 폴더(spartagames)의 settings.py 에서 DEBUG=False로 설정
  • 프로젝트 폴더(spartagames)의 urls.py 에서 DEBUG 옵션 값에 따라 media 폴더 경로를 추가하는 조건문이 있었는데, DEBUG 옵션 조건 삭제 (DEBUG 옵션 값 상관 없이 media 폴더 경로 추가)

배포 후 문제점 수정 / 보완 (완료된 항목 체크 표시)

  • [ ] game_detail 페이지 렌더링 view 함수에서 requests로 호출하는 api 주소 변경 (로컬 환경 주소 → 배포 환경 주소) → ⓐ
  • [ ] WebGL로 빌드된 Unity 게임을 실행할 수 있는 iframe 태그가 dev 작업 내용에서 주석 처리된 것을 확인. 해당 주석 해제 → ⓑ
  • [x] EC2 인스턴스 생성 시 설정으로 Amazon Machine Image(AMI) 선택 시 22년 4월 LTS 버전을 선택해야 하는데 최신 버전(24년 버전)으로 선택 후 인스턴스를 생성함. 이후 서버 접속해서 python을 설치하려고 하니 3.12 버전으로 설치가 됐고 기존 패키지들과 호환이 되지 않는 문제가 발생 → 22년 4월 LTS 버전을 선택 후 인스턴스 생성하는 것으로 문제 해결
  • [x] 배포 환경에서 태그 데이터(Tag Model 데이터)를 생성하지 않아 main 페이지에서 api 호출 시 error가 발생 → Tag Model에 데이터를 추가하여 문제 해결. 이에 맞춰 태그 관리 페이지 추가 계획 수립
  • [x] 태그 관리 페이지 추가 및 해당 페이지에서 사용하는 api 추가
  • [x] ‘게시글 수정’ api 수정

[ ] 서버의 똑같은 주소로 접근하는데 특정 클라이언트에서만 iframe으로 호출하는 media 주소가 제대로 입력되지 않는 문제

#document (http://<서버 도메인>/media/games/20240527051117081479_test_unity/index.html)

#document (http://<서버 도메인>/?)

 

★★★ 논의 및 수정할 점

  1. api 요청 후 응답으로 성공 코드는 무조건 200 고정 (다른 코드 사용 시 성공으로 취급하지 않는 문제 발생. JS aSend 함수)
  2. .gitignore 내용 중 migration 폴더 제외했던 내용 삭제
  3. 배포 후 문제점 수정 / 보완 - 체크 표시가 안된 항목들에 대하여ⓑ: 주석을 해제했더니 게임 파일이 실행되지 않는 문제가 발생 (해당 내용 ‘배포 환경 WebGL 실행 문제’ 문서에서 자세히 다룸)
  4. ⓐ: 지금 작성한 코드는 python django 프로젝트 내에서 view - template 렌더링 함수에서 api를 호출하는 식이라 JS로 데이터 불러올 수 있도록 수정하는 것 필요 (이미 기술 멘토링 받고 수정 결정된 내용. 적용 필요)

 

배포 환경 WebGL 실행 문제

[트러블슈팅]

 

[문제]

nginx 에서 gzip 파일을 서빙하도록 하는 방법을 모름

[접근]

문제를 해결하기 위해 2가지 방법을 시도

① 우재 튜터님 강의대로

(참고 링크) [Unity 공식] https://docs.unity3d.com/kr/2021.2/Manual/webgl-server-configuration-code-samples.html

sudo apt install nginx -y 처럼 yum을 통해서 nginx를 설치한 후 cd /etc/nginx/sites-available 로 이동해서 django 라는 이름의 설정 파일을 생성하고 해당 설정 파일에서

http {
    include       mime.types;
    default_type  application/octet-stream;

    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_vary on;
    gzip_min_length 256;

    server {
        listen 80;
        server_name *.compute.amazonaws.com;
        charset utf-8;
        client_max_body_size 128M;

        location /static {
            alias /home/ubuntu/sparta-games/staticfiles;
        }

        location /media/ {
            alias /home/ubuntu/sparta-games/media/;
            try_files $uri $uri/ $uri.gz =404;
            add_header Content-Encoding gzip;
            gzip_static on;
        }

        location / {
            include proxy_params;
            proxy_pass <http://unix>:/tmp/gunicorn.sock;
        }

        location ~* \\\\.gz$ {
            add_header Content-Encoding gzip;
            gzip_static on;
            gzip_http_version 1.1;
            gzip_proxied any;
        }
    }
}

으로 작성해서 gzip을 서빙할 수 있도록 한다 -> 실패 (이유를 모르겠음)

② nginx를 초기에 config 를 커스텀하고 이를 빌드 및 설치하는 식

(참고 링크) https://tempodivalse.tistory.com/22

정리하자면, 직접 nginx 사이트에 가서 tar.gz 파일을 받은 후 서버 ftp 업로드 or wget [파일 링크] 를 통해서 파일을 받은 뒤 gz 압축을 해제하고 해당 폴더 안으로 접근해서

./configure --prefix=/home/ubuntu/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_secure_link_module --with-http_gzip_static_module

이 명령어를 입력한 후에 컴파일 및 설치를 진행

  • 설치를 했는데 nginx 실행 방법을 모름 또한 nginx 의 config 파일에서 로컬 폴더와 media 폴더 경로를 잡아주어야 하는데 설정 방법을 찾지 못함

[결론]

두 방법 모두 시도해봤는데 nginx 및 리눅스 명령어에 대한 이해도가 부족하여 진도를 나아갈 수 없는 상황

'프로젝트' 카테고리의 다른 글

[TIL] 20240529 73일차  (0) 2024.05.29
[TIL] 20240528 72일차  (0) 2024.05.28
[TIL] 20240524 70일차  (0) 2024.05.24
20240520 ~ 20240524 14주차 정리  (0) 2024.05.24
[TIL] 20240523 69일차  (0) 2024.05.23