지난주에 서버 열다가 에러나는 것을 해결 못하고 집에 갔는데 오늘 셀프로 해결했다! 계속 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 눌러 설치.
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 안에 넣어주자.
<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
command 창에 더는 404 Not Found가 뜨지 않는 것을 확인할 수 있다. 모든 리소스를 잘 접근하고 있다. 304는 원 소스가 변형이 되지 않았다는 status code라고 한다.
후기
셀프 해결 매우 뿌듯하다 ^-^ 웹개발 배운 보람이 있다 ^^ 물론 static폴더에 파일 넣으라는 건 강사님이 알려주셨지만... 경로 변경은 내가 했으니 뿌-듯
'Unity 공부' 카테고리의 다른 글
[Unity] TMP Text 한글 깨지는 현상 해결 (0) | 2022.12.11 |
---|---|
[Unity] 최적화 (1) | 2022.12.11 |
협업 Jira - 외부 앱 연결 (GitHub, Jenkins) (0) | 2022.12.04 |
Agile 협업 흐름 (Jira - Confluence 설치 및 세팅) (0) | 2022.12.02 |
[Unity] Photon RPC 에러 Exception: Write Failed. Custom type not found (0) | 2022.11.20 |
댓글