AWS

AWS EC2 - 리눅스(linux) 운영체제에서 한글 사용하기 (한글 깨짐)

yugyeong 2022. 12. 22. 14:55

 

대시보드 streamlit 을 AWS EC2 서버에 배포하였을 때, 차트가 한글이 깨져서 나타나는 현상이 발생했다.

이럴때는 리눅스 서버에서 한글을 출력할 수 있도록, 폰트를 깔고 matplotlib 에 한글 폰트를 추가해주어야 한다.

 

 

나눔 폰트 다운로드 하기

 

  • 폰트 관리 유틸리티 설치
// CentOS(EC2) 계열
sudo yum install fontconfig

// Debian(Ubuntu)계열
sudo apt install fontconfig

 

 

  • 네이버 나눔 폰트 다운로드 후 압출 풀기 진행
curl -o nanumfont.zip http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip 
sudo unzip -d /usr/share/fonts/nanum nanumfont.zip

 

  • 시스템 내 폰트의 캐쉬 정보 업데이트 (-f:강제생성, -v:진행도보기)
sudo fc-cache -f -v

 

  • 폰트 리스트 확인
fc-list

 

 

리눅스(linux) 운영체제에서 matplotlib 한글 사용하기

1. 한글폰트 유무 확인

  • fontconfig 를 이용하여 사용할 한글 폰트 확인
fc-list

 

fc-list 명령어를 이용하면, 현재 설치되어있는 폰트 리스트를 뽑아서 보여준다.

 

 

 

2. 한글폰트 설정

 

python 을 입력 후,

아래의 코드를 하나씩 입력하여서 버전, 설치 폴더 경로, 캐시 폴더 경로를 확인한다.

 

import matplotlib
print(matplotlib.__version__) # 파이썬 버전확인
print(matplotlib.__file__) # 설치 폴더 경로 확인
print(matplotlib.get_cachedir()) # 캐시 폴더 경로 확인

 

3. matplotlib에 한글 폰트 추가

  • 위에서 확인한 자신의 설치 폴더 경로에 맞게 폰트를 복사해줍니다.
  • 그 후 matplotlib의 폰트 캐시를 삭제합니다. 이는 새로 설치한 폰트를 업데이트해주는 역할을 합니다.
#sudo cp -r /usr/share/fonts/truetype/nanum/Nanum* 아까 확인한 설치 폴더 위치+mpl-data/fonts/ttf/
sudo cp -r /usr/share/fonts/* /home/ec2-user/anaconda3/envs/streamlit3.7/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/
rm -rf /home/ec2-user/.cache/matplotlib/*

 

 

 

4. matplotlib에 한글 폰트 확인

  • python을 입력하여 아래의 코드를 한줄한줄 쳐서 확인해봅니다.
  • 이는 matplotlib에 추가한 한글 폰트가 정상적으로 추가되었는지 확인하기 위함입니다.
  • 코드 입력시 리스트가 보인다면 성공적으로 한글 폰트가 추가된 것입니다.
import matplotlib
import matplotlib.font_manager

# 폰트 전체 리스트 확인
[i.fname for i in matplotlib.font_manager.fontManager.ttflist]

# 나눔 폰트 설치 확인
[f.name for f in matplotlib.font_manager.fontManager.ttflist if 'Nanum' in f.name]

 

해결 방법

 

  • 한글 폰트를 matplotlib의 출력 폰트로 지정해줍니다.
  • 아래의 코드를 소스 파일 최상단에 배치하여 설치한 글씨체의 이름을 입력해주세요.
    • 'family' 의 값을 위에서 설치한 폰트의 이름으로 입력

 

 

차트에 한글이 잘 출력되는 것을 확인할 수 있다.