< 리눅스 서버에 한글 찍기 >
# Matplotlib 차트에 한글이 깨지던것과 동일하게, 리눅스 서버 Web 화면에 streamlit 차트를 출력시키는 경우에도 한글이 깨지는걸 볼수 있다.
# 이런 경우 리눅스 서버에 직접 한글 폰트를 설치하여 압축 해제후 적용시켜줘야 한글이 깨지지 않고 출력된다.
# AWS의 EC2 서버를 사용한다는 가정하에 폰트 설치부터 적용까지 진행
# 우선 Putty로 한글을 출력시킬 리눅스 서버 진입 (터미널)
# 폰트 관리 유틸리티 설치
sudo yum 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
# 폰트 리스트 확인
fc-list
ㄴ 설치된 한글 리스트를 확인할수 있음
# 이제 폰트설치된것을 확인하였고,
# 파이썬의 버전과 설치 위치, 캐시 정보가 담긴 폴더의 이름을 알기 위해서, python 인터프린터로 진입하여 확인이 필요
# putty 터미널에서 python을 입력하면 인터프린터 진입
(base) [ec2-user@ip-172-31-14-14 ~]$ python
Python 3.11.7 (main, Dec 15 2023, 18:12:31) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
# matplotlib import 한후 코드를 한줄씩 입력하여 확인
import matplotlib
# matplotlib 버전확인
print(matplotlib.__version__)
# 설치 폴더 경로 확인
print(matplotlib.__file__)
# 캐시 폴더 경로 확인
print(matplotlib.get_cachedir())
(base) [ec2-user@ip-172-31-14-14 ~]$ python
Python 3.11.7 (main, Dec 15 2023, 18:12:31) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib
>>> print(matplotlib.__version__)
3.8.0
>>> print(matplotlib.__file__)
/home/ec2-user/anaconda3/lib/python3.11/site-packages/matplotlib/__init__.py
>>> print(matplotlib.get_cachedir())
/home/ec2-user/.cache/matplotlib
>>>
# 확인 되었으면 exit() 를 입력하여 인터프린터창에서 나온다.
# 위에서 확인한 자신의 설치 폴더 경로에 맞게 폰트를 복사하고,
# matplotlib의 폰트 캐시를 삭제하여야 한다. (새로 설치한 폰트를 업데이트 해주는 역할)
# 폰트 복사 (보라색으로 칠해진 부분이 본인 경로, 잘확인해서 복사해야하고 띄어쓰기 주의해야함)
sudo cp -r /usr/share/fonts/* /home/ec2-user/anaconda3/lib/python3.11/site-packages/matplotlib/mpl-data/fonts/ttf/
# 폰트 캐시 삭제
rm -rf /home/ec2-user/.cache/matplotlib/*
# 이제 한글 포트가 정상적으로 복사되었는지 확인
# 다시 python 인터프린터로 들어가서 해당 코드를 한줄씩 입력하여 확인
import matplotlib.font_manager
# 폰트 전체 리스트 확인
[i.fname for i in matplotlib.font_manager.fontManager.ttflist]
# 나눔 폰트 설치 확인 (나눔 폰트 안에있는 나눔 고딕체를 사용 예정이고, 본인이 다른 글씨체를 원할경우 List 내에 있는 다른 글씨체를 자유롭게 사용하면됨)
[f.name for f in matplotlib.font_manager.fontManager.ttflist if 'Nanum' in f.name]
# 이제 폰트설치는 모두 완료되었다!
# 이제 한글을 출력시킬 streamlit 차트를 코딩한 개발 환경에서 작업 (여기선 VScode 사용)
ㄴ import 문 부터 조건문까지 모두 복사해서 붙여넣어주면 된다.
ㄴ Linux 서버에서는 나눔 고딕체를, 윈도우 환경에서는 굴림체를 사용하였다.
ㄴ 아까는 해당 한글들이 깨져서 출력되었었음
# 저장후 리눅스 서버에 적용시키려면 커밋 & 풀 동작은 하고나서 혹시 바로 적용이 되지 않는다면 서버를 한번 종료한후에 재실행하면 적용되는것 확인 가능.
# 이전 한글 폰트 확인했던 터미널 창에서 exit()로 파이썬 인터프린터를 나와서 가상환경으로 진입 후 서버 실행
ㄴ 내가 작업한 환경인 st_310 가상환경에서 다시 서버 실행
이제 접속해보면 한글이 정상적으로 출력되는걸 볼수 있다.
'기본 Tool 준비 & 필요 Tip' 카테고리의 다른 글
Streamlit 이모티콘 넣기 & 사이드바 꾸미기 (streamlit_option_menu) (0) | 2024.05.08 |
---|---|
리눅스 기본 명령어 정리 (0) | 2024.05.08 |
Matplotlib 차트에 한글 찍는법 (데이터 분석 & 가공) (0) | 2024.05.07 |
앱 대시보드 개발을 위한 VS Code (Visual Studio Code) 설치 및 환경 구성 (2) | 2024.05.02 |
아나콘다(Anaconda) 설치 및 주피터 노트북(Jupyter notebook) 사용 (0) | 2024.05.01 |