본문 바로가기
Unity 공부

[Unity, Flask] Flask로 로컬 서버 구성해 WebGL 빌드 띄워보기

by 개발하는 디토 2022. 12. 5.

지난주에 서버 열다가 에러나는 것을 해결 못하고 집에 갔는데 오늘 셀프로 해결했다! 계속 404 Not Found 에러가 뜨길래 파일을 못 찾는 것이 원인이라 확신하고 경로를 여러번 만져봤더니 드디어 해결했다.

 

 

사전 준비

Python 3.8 이상 설치

설치할 때 반드시 환경변수 설정하겠다고 체크하기. 안 하면 셀프로 시스템에서 등록해줘야 한다.

 

Flask 설치

파이썬 설치 후 cmd (command) 창 열어 명령어를 입력한다. (윈도우의 경우 아무 폴더에서나 우클릭 - 터미널에서 열기)

 

Installation — Flask Documentation (2.2.x)

These distributions will be installed automatically when installing Flask. greenlet You may choose to use gevent or eventlet with your application. In this case, greenlet>=1.0 is required. When using PyPy, PyPy>=7.3.7 is required. These are not minimum sup

flask.palletsprojects.com

pip3 install flask

또는

pip install flask

만약 윈도우 컴퓨터에서 python 명령어가 안 먹히면 환경 변수를 설정해야 한다. (Mac은 파이썬이 자동으로 깔려 있어서 환경 변수 설정 안 해도 파이썬 관련 에러는 아마 안 날 것이다.)

내 컴퓨터 > 고급 시스템 설정 > 환경변수 > 환경변수 편집 > python 설치 경로 등록

 

 

서버 열기 테스트

서버 구성하고 싶은 폴더에 test.py 같은 이름으로 python 코드 작성해서 만들어둔다.

테스트용 코드

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

test.py 작성 완료 후 아래의 코드를 한 줄씩 command 창에서 입력한다. 혹시 파일 이름을 test로 하지 않았다면 test 자리에 파일명을 넣어준다.

*** python 환경 변수를 설정하지 않았다면 아마도 에러가 날 텐데 그럼 py -3으로 시작하는 코드를 입력해보시오.

python3 test.py
python -m flask --app test run

# 환경변수 없이도 사용 가능: py -3 -m flask --app test run
# test 들어가는 자리가 python 파일명이 들어가는 것

 

결과

서버 열기 성공

5000으로 끝나는 주소를 Ctrl+마우스 좌클릭해 접속하면 Hello, World! 라고 뜬다.

서버 확인!

 

Unity WebGL 띄우기

WebGL 빌드하기 위한 파일 설치 안 되어 있다면 Install with Unity Hub 눌러 설치.

Install with Unity Hub 해주세요.

 

WebGL 빌드를 진행하면 폴더 3개와 index.html이 튀어나온다. 4개를 아까 서버 구성 연습했던 폴더에 넣어준 뒤, 아래와 같이 폴더를 구성한다.

폴더 구성

상위폴더
|-- static (폴더 생성)
     |-- Build
     |-- StreamingAssets
     |-- TemplateData
|-- templates (폴더 생성)
     |-- index.html
|-- test.py

 

그리고 index.html에서 3개의 경로를 수정한다.

index.html이 templates 폴더 안에 있으므로 static 폴더 안에 있는 TemplateData나 Build 폴더로 가기 위해서는 ..으로 상위  폴더로 올라가 접근해야 한다.

static에 안 넣고 index.html과 같은 선상에 놓으면 되지 않느냐고 생각할 수 있는데 그러면 작동을 안 한다. WebGL 빌드 후 나온 폴더는 static 안에, index.html은 templates 안에 넣어주자.

TemplateData 폴더를 참조할 수 있게 한다.
Build 폴더를 참조할 수 있게 한다.

<head>
	<link rel="shortcut icon" href="../static/TemplateData/favicon.ico">
	<link rel="stylesheet" href="../static/TemplateData/style.css">
</head>

...

<script>
	var buildUrl = "../static/Build";
</script>

 

 

test.py를 수정해 localhost 접속 시 index.html을 렌더링하도록 한다.

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def home():
   return render_template('index.html')
if __name__ == '__main__':
   app.run()

 

 

결과

test.py가 위치한 폴더에서 command 창 열어 다시금 서버를 켠다.

python3 test.py
python -m flask --app test run

404 Not Found 없이 잘 열린다.
내 소중한 게임이 예쁘게 열렸다.

command 창에 더는 404 Not Found가 뜨지 않는 것을 확인할 수 있다. 모든 리소스를 잘 접근하고 있다. 304는 원 소스가 변형이 되지 않았다는 status code라고 한다.

 

 

 

후기

셀프 해결 매우 뿌듯하다 ^-^ 웹개발 배운 보람이 있다 ^^ 물론 static폴더에 파일 넣으라는 건 강사님이 알려주셨지만... 경로 변경은 내가 했으니 뿌-듯

댓글