3장_ 원격 서버 배포 전 준비 : UTF-8 세팅하기

2026. 1. 28. 19:34·Book/자바 웹 프로그래밍 Next Step

 

실습 환경 구축은 끝났고, 이제 로컬에서만 돌리는 게 아니라 원격 서버에 직접 배포하는 경험을 해보려고 한다.
책 흐름도 “로컬 → 원격 배포”로 넘어가면서 터미널 환경에 익숙해지게 만들려는 의도가 확실하다.

이 실습은 Ubuntu 리눅스 운영체제 기반으로 진행된다.
만약 쓸 서버가 없다면 AWS EC2로 원격 서버를 띄워서 진행하면 된다.

 

2026.01.28 - [Infra/AWS] - 맥에서 EC2 접속하기

 

 

 

이제 원격 서버에서 웹 서버가 정상적으로 동작하는지 테스트하기 전에, 먼저 터미널에서 한글이 깨지지 않도록 로케일(locale)과 환경변수(LANG/LC_ALL)를 UTF-8로 맞추는 작업부터 해보겠다.

 

 

왜 locale을 먼저 잡아야 하냐?

원격 서버에서 작업하다 보면 생각보다 “한글 깨짐”이 자주 터진다.

  • 터미널 출력이 깨지거나
  • 파일명/로그가 깨지거나
  • 설정 파일에 한글이 포함될 때 난리남

이게 다 결국 서버가 어떤 문자 인코딩(UTF-8)을 기본으로 쓰는지가 애매해서 생기는 문제다.

그래서 배포 실습 들어가기 전에, 서버 환경 자체를 UTF-8로 고정해 두는 게 안전하다.

 

 

현재 로케일 상태 먼저 확인하기

무작정 설정하기 전에 일단 현재 상태부터 본다.

locale
  • LANG= 또는 LC_ALL= 값이
    ko_KR.UTF-8 / en_US.UTF-8 같은 UTF-8 로케일이면 보통 문제 없음
  • C거나 POSIX거나, UTF-8이 아닌 값이면 한글 깨질 확률이 확 올라감

내 서버에서는 C.UTF-8로 나왔다. 

C.UTF-8 자체가 “UTF-8”이긴 한데, 책 흐름대로 진행하기위해  ko_KR.UTF-8을 만들어서 기본값으로 박아두겠다.

 

 

ko_KR.UTF-8 로케일 생성하기 (locale-gen)

로케일을 “설정”하려면 그 전에 시스템에 로케일 자체가 생성돼 있어야 한다.
그걸 해주는 게 locale-gen.

 
sudo locale-gen ko_KR.UTF-8

이게 하는 일

  • 시스템에 “사용 가능한 로케일 목록”을 생성한다
  • ko_KR.UTF-8 로케일을 추가/생성해두는 단계

내 상황처럼 C.UTF-8이 이미 떠도
ko_KR.UTF-8이 시스템에 없을 수 있으니 실행해도 된다.

 

 

기본 로케일을 선택하기 (dpkg-reconfigure locales)

로케일을 생성했으면 이제 기본값으로 어떤 로케일을 쓸지 정해야 한다.

sudo dpkg-reconfigure locales

이게 하는 일

  • 대화형 UI가 뜬다
  • 여기서:
    1. ko_KR.UTF-8을 체크
    2. Default locale도 ko_KR.UTF-8로 선택

이 단계가 끝나면 서버가 “기본 로케일”을 무엇으로 쓸지 방향이 잡힌다.

 

 

쉘 환경변수로 LANG/LANGUAGE 고정하기 (~/.bash_profile)

여기서 중요한 포인트가 하나 있다.

로케일을 시스템에 생성/선택해도, 실제 터미널 세션에서는 환경변수(LANG/LC_ALL)가 우선할 때가 많다.
그래서 아예 로그인할 때마다 적용되도록 쉘 프로필에 박아둔다.

LANG="ko_KR.UTF-8"
LANGUAGE="ko_KR:ko:en_US:en"

LANG, LANGUAGE 차이

  • LANG : “내 기본 로케일은 이거다” (핵심)
  • LANGUAGE : 메시지 언어 우선순위 (선택사항)

솔직히 대부분은 LANG만 제대로 잡혀도 해결된다.
LANGUAGE는 “출력 메시지를 한국어로 우선할래?”에 가까워서 취향 영역이다.

 

 

~/.bash_profile에 추가

한 줄씩 추가 (안전한 방식)

LANG="ko_KR.UTF-8"
LANGUAGE="ko_KR:ko:en_US:en"

이렇게 한 줄로 쓰는 예시도 있는데,
쉘에서는 보통 export로 분리해서 쓰는 게 더 깔끔하고 확실하다.

 

 

재로그인 없이 바로 적용하기 (source)

설정 파일에 적어도, 지금 열려있는 터미널에는 적용이 안 된다.

그래서 바로 반영:

 
source ~/.bash_profile

이게 하는 일

  • 다시 로그인하지 않아도
  • 현재 터미널 세션에 즉시 적용

 

 

env로 최종 확인하기

마지막은 “진짜 적용됐나” 확인.

env | grep -E 'LANG=|LANGUAGE='

여기서 기대하는 출력 예시:

  • LANG=ko_KR.UTF-8
  • LANGUAGE=ko_KR:ko:en_US:en

그리고 한 번 더:

 
locale

LANG 쪽이 ko_KR.UTF-8로 바뀌었으면 거의 끝이다.

 

 

 


출처 : 《자바 웹 프로그래밍 Next Step》, 박재성, 로드북

'Book > 자바 웹 프로그래밍 Next Step' 카테고리의 다른 글

3장_ 원격 서버 띄우기  (0) 2026.01.29
3장_ JDK 17 + Maven 설치  (0) 2026.01.28
3장_ 실습 환경 구축  (0) 2026.01.28
2장_ 문자열 계산기 추가 요구사항 : 중복 제거, 읽기 좋은 코드를 구현하기 위한 리팩토링  (0) 2026.01.27
2장_ 문자열 계산기 리팩토링: JUnit으로 요구사항 검증하면서 구현해보기  (0) 2026.01.27
'Book/자바 웹 프로그래밍 Next Step' 카테고리의 다른 글
  • 3장_ 원격 서버 띄우기
  • 3장_ JDK 17 + Maven 설치
  • 3장_ 실습 환경 구축
  • 2장_ 문자열 계산기 추가 요구사항 : 중복 제거, 읽기 좋은 코드를 구현하기 위한 리팩토링
sqaxe1
sqaxe1
woojoo-devlog 님의 블로그 입니다.
  • sqaxe1
    Woojoo's Devlog
    sqaxe1
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Backend (9)
        • Servlet (7)
        • Spring (2)
      • Frontend (1)
      • CS (0)
      • Book (33)
        • 자바 웹 프로그래밍 Next Step (30)
        • 테스트 주도 개발: 고품질 쾌속개발을 위한 TDD.. (1)
        • 성공과 실패를 결정하는 1%의 네트워크 원리 (2)
      • Engineering (0)
        • Testing (0)
      • Infra (6)
        • AWS (6)
      • Java (4)
      • Network (1)
      • 김영한 (28)
        • 자바 입문 (8)
        • 실전 자바 - 기본편 (6)
        • 실전 자바 - 중급편 (10)
        • 실전 자바 - 고급편 (4)
      • Web (39)
        • Web Basics (39)
      • Project (24)
        • NeoSquare (0)
        • Memo Evolution (24)
      • 정보처리기사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    aws
    개발서적
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sqaxe1
3장_ 원격 서버 배포 전 준비 : UTF-8 세팅하기
상단으로

티스토리툴바