실습 환경 구축은 끝났고, 이제 로컬에서만 돌리는 게 아니라 원격 서버에 직접 배포하는 경험을 해보려고 한다.
책 흐름도 “로컬 → 원격 배포”로 넘어가면서 터미널 환경에 익숙해지게 만들려는 의도가 확실하다.
이 실습은 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가 뜬다
- 여기서:
- ko_KR.UTF-8을 체크
- 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 |
