우분투 서버 18.04 LTS 아파치 톰캣9 연동 버츄얼 호스트 설정

우분투 서버 18.04 LTS에서 아파치와 톰캣9를 설치하고, 톰캣에 디플로이한 war 어플리케이션을 아파치를 경유해서 버츄얼 호스트로 접속하도록 아파치와 톰캣을 연동하는 방법을 설명한다.

톰캣만 써도 잘 되는데 왜 아파치를 경유하냐하면, 아파치에서 워드프레스 등 다른 서비스를 돌리고 있어서 톰캣도 같은 입구(아파치)를 통해서 외부로 연결되는 설정을 하는게 관리하기 편해서 그렇다.
딱히 아파치가 필요하지 않은 경우에는 그냥 톰캣만 기동해서 사용해도 된다.

아파치 톰캣9 설치와 모드 설정

설치는 아래 커맨드 한방으로 간단하게 끝.

아파치 모드 proxy 와 proxy_ajp 를 활성화한다.

proxy_ajp는 mod_jk 대신 사용하는건데 mod_jk는 따로 설치해야 되지만 proxy_ajp는 기본 설치된 모드이기 때문에 편하다. 복잡한 워커 설정도 필요없고.

아파치 site-available conf 설정

버츄얼 호스트 설정을 작성하기 위해서 /etc/apache2/site-available 디렉토리에 test.conf 파일을 생성한다. 내용은 아래처럼 작성.

80 포트로 들어오는 요청에 대해서 서버이름은 test.elmi.page, 디렉토리 /home/elmi/webapps/test 에 대한 접근 모두 허용(Require all granted)
http://test.elmi.page 루트 / 를 AJP 프로토콜로 localhost:8009 로 넘긴다. localhost:8009 는 톰캣에서 AJP 프로토콜로 열어둘 주소/포트.

서브도메인을 추가하고 싶은 경우에는 conf 파일을 복사해서 다른 도메인/디렉토리로 설정하면 된다.

conf 파일을 수정한 경우에는 아래 커맨드로 적용하자.

서비스 리로드에서 에러가 났을 경우에는 아래 커맨드로 내용 확인.

톰캣 server.xml 설정

톰캣의 server.xml을 편집한다. 위치는 /etc/tomcat9/server.xml

아래 8080 포트로 HTTP 연결은 아파치를 통해서 AJP 연결을 할 경우에는 필요 없으니 주석처리하자. (주석처리 안해도 딱히 지장 없음)

주석처리 된 프로토콜 AJP/1.3 부분을 찾아서 주석에서 해제.

호스트 설정에서 appBase 부분을 아파치에서 설정한 DocumentRoot, Directory와 맞추고, 디폴트로 사용되는 localhost 부분은 남겨두고 별도로 Alias로 서브도메인을 넣어둔다.

appBase 디렉토리(/home/elmi/webapps/test)에 ROOT.war 파일을 넣으면 자동으로 ROOT 디렉토리에 압축을 풀어서 디플로이 될 것이다. ROOT.war 파일을 사용하면 http://test.elmi.page/ 도메인 루트로 접속하도록 되는것이고, ROOT.war 이외에 이름 예를 들면 hoge.war 라는 war 파일을 사용하면 http://test.elmi.page/hoge/ 로 접속해야 한다.

서브도메인을 추가하고 싶은 경우에는 Host 태그를 복사해서 name을 name=”test2.elmi.page” 처럼 서브도메인 이름으로 넣으면 된다. 물론 appBase는 다른 곳으로 지정할것.

server.xml 파일을 수정했으면 서버 재기동해서 적용하자.

아파치 로그는 /var/log/apache2, 톰캣 로그는 /var/log/tomcat9 에서 확인 가능하니 뭔가 제대로 안되면 로그 파일을 확인하면 된다.
conf 파일이나 xml 파일 수정 후에 리로드, 재기동하면 에러가 나는 경우는 파일의 문법상 문제이기 때문에 금방 찾아서 고칠 수 있다.

접속 테스트

브라우저로 확인해도 되지만, 내가 쓰는 page 도메인은 SSL 인증서를 발급 받지 않으면 브라우저로 확인이 불가능해서 wget 으로 에러 없이 index.html 파일이 제대로 보이는지 확인했다.

404 에러가 잘 나올텐데 아파치 access 로그부터 확인해서 연결이 잘 들어오고 있나 확인하자. 아파치에 문제가 없으면 그 다음은 톰캣의 억세스 로그를 보면 된다.
주로 디렉토리 경로가 잘못된 경우가 많으니 아파치의 conf 파일과 톰캣의 server.xml 에서 디렉토리 경로를 다시 잘 확인해 보자.

크롬 브라우저 호스트 알아내는 중(resolving host) 메시지 표시되며 지연

크롬 등의 브라우저에서 하단에 호스트 알아내는 중이라는 메시지가 표시되면서 웹페이지가 몇초간 지연되다가 열리는 문제를 해결해 보자.

현상

데스크탑을 오랜만에 사용하고 있는데 크롬에서 웹서핑을 할때 가끔 페이지가 느리게 열려서 답답하게 하더라. 잘 살펴보기 왼쪽 하단에 호스트 알아내는 중…이라는 메시지가 표시되면서 페이지 열리는게 지연되고 있었다.

해결 과정

호스트 알아내는 중이라면 Resolving host… DNS 문제인가? 하고 예전에 설정했던 클라우드 플레어 DNS(1.1.1.1)를 전부 해제하고 자동으로 바꾸었다.
원래 LAN 연결이었다가 지금은 USB 무선LAN 어댑터로 연결하고 있었기 때문에 WIFI 연결하고 있는 어댑터의 설정으로 들어가니 안쓰던거라 DNS 설정은 자동으로 되어있었다.
하여튼 공유기의 DNS 설정까지 몽땅 다 바꿔봤지만 여전히 호스트 알아내는 중 메시지는 사라지지 않는다.

다음은 구글DNS(8.8.8.8)을 시도해 봤다.
여전히 안되서, ipv6 의 DNS 서버까지 모두 변경했지만 그대로.

윈도우 커맨드 라인에서 nslookup 을 쳐보니 Default Server 가 Unknown 으로 나오는게 수상하다. 분명 DNS 서버 설정했는데…
네트워크 어댑터 중에 WIFI 가 아닌 이더넷 어댑터의 DNS 설정을 보니 클라우드 플레어DNS 설정이 되어있어서 구글DNS 로 바꿔보니, nslookup에서 Default Server 가 구글DNS 로 변경된다.
이거 왜 쓰지도 않는 유선랜 어댑터의 DNS 설정을 사용하는거야!?

해결 방법

윈도우에서 기본으로 사용하는 DNS 설정이 인터넷 연결이 되어있는 무선랜 어댑터에서 설정한 DNS 가 아니라 사용하지도 않는 유선랜 어댑터(이더넷)에서 설정한 DNS 를 사용하고 있는 사실을 알았다.
여기서 힌트를 얻어서 사용하지 않는 유선랩 어댑터를 사용 안함으로 설정하니 크롬에서 호스트 알아내는 중이라는 메시지가 표시되지 않고, 페이지가 바로바로 열리게 되었다. 만세!

네트워크 연결 설정
유선랜 어댑터(이더넷)을 사용 안함으로 설정한다.

윈도우10 노트북 일본어 키보드에서 Sharp Keys로 한영키 설정

일본어 키보드에서는 오른쪽 ALT 키로 한영 전환을 해야되는데 일본에서 노트북을 사게 되면 이게 없을 경우가 있다. 나는 Sharp Keys 라는 유틸리티로 일본어 키보드의 변환<変換>키를 한영키로 할당해서 쓰고 있는데 키를 재할당(키맵핑)하는 프로그램을 소개한다.

dell inspiron 7472 japanese keyboard
한/영 키로 쓸 오른쪽 ALT 키가 없다…

Sharp Keys 다운로드

아래 둘 중 아무데서나 받으면 되는데, 특별한 이유가 없으면 그냥 개발자 홈페이지에서 ZIP 파일로 받는게 빠르고 편할것이다.
Sharp Keys 개발자 홈페이지 다운로드 – 페이지 하단의 ZIP 링크를 누르면 된다.
MS 스토어 – Sharp Keys 다운로드 – 최종적으로 윈도우의 마소 스토어로 연결된다. (Update:2021/2/3 접속안됨)

ZIP 버전을 다운로드하면 설치는 필요없이 압축 풀고 그냥 파일을 실행하면 된다. 이 프로그램에서 윈도우에 변경을 허락할거냐는 경고창이 뜨니 확인을 눌러주자.

사용법

ADD 버튼 눌러서 키 목록이 뜨는데 왼쪽이 입력할 키보드의 키이고, 오른쪽이 무슨 키 기능을 넣을건지를 선택하는 것이다.
왼쪽 목록 아래에 Type Key 버튼을 누르고 변환<変換>키를 누르면 Unknown: 0x0079(00_79) 가 입력 되는데, 오른쪽 목록에서 Unknown: 0x0072(00_72) 를 선택하면 한영키 기능을 넣게 된다.
한자변환키는 Unknown: 0x0071(00_71) 이다.

Sharp Keys 키 추가

Write to Registry 버튼을 눌러서 레지스트리에 저장하고, 윈도우를 재기동해야 적용된다.

여담

나는 코딩할때 Home, End 키를 많이 쓰는데 펑션키 누르면서 커서키 좌우는 손도 많이 가고 해서, Print Screen키랑 Insert키를 Home, End 키로 할당해서 쓰고 있다.
15인치 노트북이면 풀사이즈 키보드가 많아서 좀 나은데(내가 일할때 쓰는 작업용 노트북은 15인치 숫자키패드도 따로 있는데도 오른쪽 ALT키가 없다), 14인치 이하 노트북에서는 회사마다 키보드 레이아웃이 천차만별이고 펑션키 조합도 가지각색이라 각자 익숙한 키 위치에 맞게 다시 할당해서 쓰면 편리할 것이다.

노트북 구입할 때, 키보드 구성도 상당히 신경써서 살펴보게 되고 구입할때도 영향을 꽤 미치는 부분인데 이런 유틸리티로 재할당이 될거라고 생각했으면 선택의 폭이 좀 더 넓었을것 같다.

geoip 갱신 작업을 crontab 에 등록하기

우분투 18.04 에서 iptables 애드온 xtables 로 국가 별로 접속 차단 허용 글에서 KRNIC 에서 받은 파일을 db-ip.com 포맷으로 변환하는 go 실행 파일과 CSV 파일을 다운로드해서 빌드까지 하는 쉘스크립트 파일을 공개했는데, 주기적으로 실행해서 국가별 IP 목록을 갱신해줘야 좀 더 정확하게 IP 차단 허용이 가능할거다.
일단 5일 정도 간격을 두고 실행하도록 crontab 설정을 해 보자.

실행할 쉘스크립트 파일명 : geoip.sh
쉘스크립트, go 실행파일은 여기에. https://github.com/elmitash/geoip_krnic2dbip

crontab 등록과 확인

리눅스 시스템에서는 주기적으로 프로그램을 실행할 때 crontab 이라는 명령으로 등록하는데, sudo 를 사용하면 루트 권한으로 실행 되는 crontab 을 등록할 수 있다. geoip.sh 에서 실행하는 xtables 빌드 파일(/usr/local/libexec/xtables-addons/xt_geoip_build)은 루트 권한이 필요하기 때문에 sudo 로 사용해서 root 의 crontab 을 등록하겠다.

crontabl 편집을 처음 실행하면 편집기를 선택해야된다. 1을 넣어서 nano 에디터를 선택했다. 각자 편한대로 하자.

# 문자로 주석처리된 내용 제일 아래쯤에 써 넣으면 된다.
#분 시 월 일 요일 실행커맨드라인
나는 5일 마다 4시 12분에 실행하도록 설정했다. 오늘은 실행 안되고, 5일 후부터 실행 된다.

일 부분에 넣은 */5 가 5일마다를 뜻하고, 시간이나 분에도 /5 를 넣으면 5분마다, 5시간마다 실행하게 된다.
매달 5, 10, 15, 20, 25, 30일처럼 5의 배수일마다 지정하려면 1-31/5 로 지정하면 될거다.
요일은 0-6 범위에서 지정하고 일,월,화,수,목,금,토 순서이다. 예를들면 매주 수요일에 실행하려면 3을 넣으면 된다.

홈디렉토리에 파일을 다운로드하고 그 위치에서 쉘스크립트를 실행하기 위해서 cd 명령 후에 쉘스크립트를 실행한다.

아래 명령으로 등록한 내용을 확인 할 수 있다.

crontab으로 실행한 기록은 /var/log/syslog 파일에서 볼 수 있다.

관련글: 우분투 18.04 에서 iptables 애드온 xtables 로 국가 별로 접속 차단 허용
우분투 14.04 LTS cron crontab 설정 및 로그파일 확인

이클립스 글자 흐림 듀얼 모니터 등 여러 모니터 사용시

이클립스 뿐만 아니라 윈도우에서 모니터를 여러대 사용할 경우에 글자가 흐릿하게 번지듯이 표시 되는 문제가 있다.
이클립스 같은 경우는 윈도우 설정에 있는 고급 배율 설정은 건드려 봐도 전혀 나아지지 않는다.
그럴 경우에 아래 블로그에서 높은 DPI 설정 변경이란 걸 하면 해결 된다.

윈도우10 고해상도 배율 높였을때 선명도 유지 하는 확실한 방법
출처: https://mastmanban.tistory.com/1019 [세상과 만나는 프로그램 이야기]

내용을 간단하게 요약하면 이클립스 실행파일인 eclipse.exe 파일에서 오른쪽 마우스 버튼을 누르고 속성을 선택, 호환성 탭을 누르고 제일 아래에 있는 ‘높은 DPI 설정 변경’ 버튼을 누르고, ‘높은 DPI 조정 동작을 재정의합니다.’ 에 체크를 하면 된다.
그 아래에 응용 프로그램, 시스템, 시스템(확장) 선택에 따라서도 달라지니 설정해서 이클립스 실행해 보고 글자 번짐이 해결 안되면 여기도 바꿔보면 된다.

개발하다 보면 모니터 두대를 보통 많이 쓰게 되는데, 윈도우에서 모니터 왔다갔다하면서 쓰다보면 이클립스 외에도 글자가 흐리게 표시 되는 경우가 많아서 불편한데 이 문제는 언제나 고쳐줄건지…

해외에서 마비노기 모바일 하기