2018-10-21 AWS를 이용해서 배포하기
- AWS EC2의 우분투 서버를 이용해서 빌드를 하고 배포를 하다가 알 수 없는 이슈들에 봉착을 하게 되었다.
- 서버가 계속 뻑나고 접속 불량에 이슈가 발생을 하다가 결정적으로 TravisCI를 이용하기 위해서 awsCli를 설치를 하다가 이슈가 발생을 해서 결국에는 ec2인스턴스를 바꿨다.
- 아마존에서 제공하는 Amazon Linux AMI를 이용을 했는데, 이것은 아마도 CentOS기반인거 같다. 기본이미지에 AWS명령어도구, python, java 등이 기본적으로 설치가 되어있다.
한글깨짐 오류
- centos에서 한글이 깨질경우 많은 구글링에서 /etc/sysconfig/i18n에서 문자열을 추가를 하라고 한다.
[ec2-user@ip-172-31-30-124 git]$ cat /etc/sysconfig/i18n
LANG="ko_KR.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en:ko_KR.UTF-8:ko_KR:ko"
SYSFONT="lat0-sun16"
- 위와 같은 설정을 했는데, 깨진다.
- 읽어올 수 없다고 한다.
- 검색결과 centos7이상부터는 위의 방법이 아니라 다른 방법으로 해결을 해야됬다.
- /etc/locale.cnf파일에서 직접 수정을 한다.
[ec2-user@ip-172-31-30-124 git]$ cat /etc/locale.cnf
LANG=ko_KR.UTF-8
[ec2-user@ip-172-31-30-124 git]$ locale
LANG=en_US.utf-8
LC_CTYPE="en_US.utf-8"
LC_NUMERIC="en_US.utf-8"
LC_TIME="en_US.utf-8"
LC_COLLATE="en_US.utf-8"
LC_MONETARY="en_US.utf-8"
LC_MESSAGES="en_US.utf-8"
LC_PAPER="en_US.utf-8"
LC_NAME="en_US.utf-8"
LC_ADDRESS="en_US.utf-8"
LC_TELEPHONE="en_US.utf-8"
LC_MEASUREMENT="en_US.utf-8"
LC_IDENTIFICATION="en_US.utf-8"
LC_ALL=en_US.utf-8
- 파일을 추가해보고 locale명령어를 입력하면 위와 같이 나온다.
- locale명령어는 리눅스에서 국가와 언어에 최적화를 맞추기 위한 지역정보다.
- 그러고나서 재부팅을 할 필요없이
export LANG="ko_KR.UTF-8"
- 위 명령어를 입력하면 Centos에서 정상적으로 한글 입출력이 된다.
JVM Memory allocate 이슈
- EC2 프리티어에서 메모리가 1기가까지라서 그걸 설정을 했는데,
- JVM메모리 부족이라고 스프링이 실행이안됬다…
- 찾아본 결과 메모리부족이 맞다고. EC2를 잠시 멈추고 인스턴스 설정으로 메모리를 업그레이드를 하니까 정상적으로 실행이 되었다.
맺으며
- 처음에는 스프링만 개발을 잘하면 될줄 알았다.
- 그게 아니였다. 배포를 하려고하니 평소에는 잘 사용하지도 않던 Gradle 명령어를 계속 치고, 원격서버에 접속을 하려니 다들 Linux명령어 투성이다. 거기다가 당연히 요즘 8기가16기가 시대에서 메모리사용량 역시 고려를 하게 되었다.
- 자동배포라는 과정을 공부하면서 DevOps에 대해서 공부할 수 있어서 감사하다.
- 자동배포가 잘 되면 Docker를 이용해서 배포하고 이미지를 만들어봐야겠다.
Written on October 21, 2018