hugo 초기세팅에서 발생하는 오류들

hugo 초기세팅에서 발생하는 오류들

2023년 6월 2일

liveReload 이슈 #

이 문제는 개발서버를 도커같은걸로 돌릴때도 자주발생한다. hugo 서버는 특정 경로를 모니터링 하다가 변경이 감지되면 자동으로 페이지를 리로드해주는 liveReload기능이 포함되어있다.

자바스크립트로 페이지에 포함되어있어 웹소켓으로 중간중간 서버에 확인요청을 보내다가 리로드 해야된다는 응답이 오면 그때 리로드하는 방식이다.

현재 도메인의 경우 reverse proxy 를 사용하고 있고 도메인을 포트 없이 입력하면 내부의 서비스 포트(1313)로 연결해주게된다. 내부 서비스는 포트가 달려있는데, domain을 https 로 접근한 것이기 때문에 443 이지만, 휴고서버 입장에서는 1313이라 livereload 자바스크립트가 1313 포트로 요청보내는 문제이다.
livereload_failed_1313 => hugo server를 실행할때 --liveReloadPort=443 옵션으로 443포트와 연결한다.

위의 문제를 해결하고 나면 livereload 웹소켓 패킷이 포트번호 없이 정상적으로 전달되는것을 볼 수 있는데, 아직 콘솔에 연결이 안됐다는 에러메시지가 발생한다.
livereload_failed_443

이 문제는 리버스프록시를 사용할때 https 패킷에 대해서만 전달하고 웹소켓 프로토콜은 전달하지 않아서 발생하는 문제라고 생각했다.

=> 리버스 프록시 설정에서 사용자 지정 머리글로 웹소켓을 추가해주면 해결된다.

웹소켓은 말 그대로 http 프로토콜을 이용한 소켓통신이다.
기존 웹의 HTTP 패킷에서는 사용하지 않는 헤더들이 포함되어 있고, 리버스프록시로 전달해주지 않아서 문제가 발생했다.


putty 한글지원 이슈 #

UTF-8을 사용하면 컴퓨터는 ‘가’ => ‘0xEAB080’ 로 표현한다.

맥에서는 문제 없었지만, putty에서는 한글이 정상적으로 표시되지 않는 문제가 있었는데, 서버의 character set과 화면에 표시되는 character set이 달라서 발생하는 문제였다.

  1. 서버의 Remote character set 을 UTF-8로 설정
    putty설정 => Translation => Remote character set

  2. UTF-8이 지원되는 폰트를 사용
    putty설정 => Appearance => Font settings

  3. 서버의 locale 설정을 UTF-8로 설정
    /etc/environment => LC_ALL=en_US.UTF-8

1번은 putty의 input character set을 설정하는 것이고, 3번은 output character set을 설정하는것이다.

3번같은 경우엔 서버의 설정이 이미 UTF-8 인데, 굳이 설정하는 이유는 서버는 설정이 안됐을때 디폴트값으로 UTF-8 로 설정된 것이고 putty 같은 경우엔 설정이 되지 않으면 디폴트로 ISO-8859-1이 사용된다.

UTF-8 포맷을 사용하는거라고 putty에게 알려주기만 하면 되기 때문에 설정만 해도되지만, 언어팩이 없는경우 쉘을 접근할때마다 setlocale에러가 발생할 수 있다.

1$ sudo apt-get install language-pack-en-base

컨텐츠 메타데이터 alias 이슈 #

컨텐츠 메타데이터에서 alias를 지정하면 원래의 url 과 함께 alias로 지정한 url로도 접근할 수 있게 된다.
.Permalink는 baseURL:port 를 기준으로 렌더링하는데, 도커환경에서는 내부 서비스포트와 외부 서비스포트가 달라서 기본 alias 경로로는 정상적으로 동작하지 않는다.
alias를 상대경로로 이동하도록 하면 된다.

 1<!-- layouts/alias.html -->
 2{{ $relURL := relLangURL .Permalink }}
 3<!DOCTYPE html>
 4<html>
 5  <head>
 6    <title>redirect... {{ $relURL }}</title>
 7    <link rel="canonical" href="{{ $relURL }}"/>
 8    <meta charset="utf-8" />
 9    <meta http-equiv="refresh" content="0; url={{ $relURL }}" />
10  </head>
11  <body>
12    goto {{ $relURL }}
13  </body>
14</html>
comments powered by Disqus