Unity의 Webgl 빌드 결과물을 Apache 웹 서버를 사용하여 배포하는 방법은 다음과 같다.
Publishing Settings만을 기재한다.
Compression Format은 Gzip이나 Brotli 중에 하나로 한다. 이 중 어떤 설정을 선택했느냐에 따라 httpd(apache2) 설정이 바뀐다.
Decompression Fallback은 서버가 Gzip이나 Brotli의 압축을 해제할 줄 모를 때 설정하는 것인데, 브라우저에서의 로딩 시간이 많이 길어지는 관계로 가급적 설정하지 않는게 좋다.
(이 옵션을 켜놓으면 로딩하기 전에 그 어떤 리소스도 제공하지 않고 시간은 오래 걸리는 이상한 과정이 추가된다.)
DataCaching은 unityweb 데이터를 다시 받을 일 없게 캐싱해주는 브라우저 설정이다(관련 Unity 문서). 이 옵션을 켜놓으면 캐싱 후의 로딩 속도가 비약적으로 빨라지고, 서버의 부담이 매우 크게 줄어드니 설정하는 것이 좋다.
사용한 서버 버전 참고
AWS로부터 인스턴스를 할당받은 이후로 다음과 같은 과정을 거쳤다.
Apache의 default 설정 폴더 그대로 사용하였다. 변경하려면 httpd.conf 파일의 수정이 필요하다.
chown -R [centos(소유권 변경하고자 하는 이름)] html
이 작업이 없으면 빌드한 파일을 SFTP등을 통해 html폴더로 옮기는 과정이 불가능하다. 이 과정은 httpd.conf 파일 중 DocumentRoot 항목을 수정하여 생략 가능
FileZilla등을 통하여 /var/www/html폴더에 파일을 넣는다.
html폴더에
LoadModule dir_module modules/mod_dir.so
dir_module은 기본적으로 생성되는 설정파일에 없으므로, 추가한다. (모듈에 관한 정보)
이 모듈이 없으면 제대로 구동되지 않는다.
mime_module부문의 Encoding 부문을 다음과 같이 수정한다.
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
AddEncoding x-compress .Z
AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
#AddType application/x-compress .Z
#AddType application/x-gzip .gz .tgz
MIME타입 설정 중 AddType을 사용하지 않고 AddEncoding으로 설정하는 작업이다.
htaccess는 분산 설정 파일이다. 이 파일이 존재하는 디렉토리, 그리고 그 하위 모든 디렉토리는 모두 이 설정파일의 영향을 받는다.
공식 샘플 코드를 참조하여 작성하면 되는데, gzip설정과 br설정이 있다. 주석을 잘 읽고 해당하는 부분을 적용하면 된다.