elmitash의 모든 글

일본에서 일하고 있는 자바 웹 어플리케이션 개발자.

아파치-톰캣 mod_jk 연동시 에러 문제 해결

아파치와 톰캣을 mod_jk로 연동했을 때 나오는 에러 메시지를 없애는 방법.
톰캣 연동 자체에는 문제가 없기 때문에 고치지 않아도 되는 문제지만, mod_jk.log에 계속 에러가 뜨고 있어서 신경 쓰이기 때문에 찾아봤다.

원인은 jk-manager와 jk-status라는 mod_jk관리와 상태를 표시해주는 웹모듈이 활성화 되어있어서 그런듯한데 그런거 안쓰기 때문에 그냥 주석처리로 해결했다.

에러 메시지 내용

[error] extension_fix::jk_uri_worker_map.c (564): Could not find worker with name 'jk-manager' in uri map post processing.
[error] extension_fix::jk_uri_worker_map.c (564): Could not find worker with name 'jk-status' in uri map post processing.

/etc/apache2/mods-available/jk.conf 파일을 열어서 아래 부분을 찾아서 주석처리한다.

    <Location /jk-status>
        # Inside Location we can omit the URL in JkMount
        JkMount jk-status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>
    <Location /jk-manager>
        # Inside Location we can omit the URL in JkMount
        JkMount jk-manager
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>

주석처리 후

#    <Location /jk-status>
#        # Inside Location we can omit the URL in JkMount
#        JkMount jk-status
#        Order deny,allow
#        Deny from all
#        Allow from 127.0.0.1
#    </Location>
#    <Location /jk-manager>
#        # Inside Location we can omit the URL in JkMount
#        JkMount jk-manager
#        Order deny,allow
#        Deny from all
#        Allow from 127.0.0.1
#    </Location>

아파치 모듈이니까 아파치를 리로드하거나 재기동 해야지 적용될듯하다.

터미널 글자색 컬러가 나오게 하는 방법. 우분투 서버 14.04 LTS

root 계정은 ls 결과가 컬러로 잘 나오는데 개인 계정으로 들어갔을 때는 밋밋한 단색으로만 나와서 구글링 끝에 방법을 찾았다.

cp /etc/skel/.bashrc ~/.bashrc
. ~/.bashrc

첫줄은 .bashrc 파일을 현재 접속 중인 계정의 홈디렉토리에 복사하는 명령이고, 둘째줄은 로그아웃하지 않고 .bashrc 파일의 내용을 적용하는 명령이다.

이제 ls 명령으로 컬러풀한 터미널을 볼 수 있을 것이다.

톰캣을 웹서버로 사용시 jsp not found

2015년 8월 28일 추가

아래 내용은 우분투에서 디플로이 장소가 CATALINA_HOME 이 아닌 CATALINA_BASE 인 것을 몰라서 생긴 문제이다.
CATALINA_BASE 에 디플로이 했을 경우에는 문제가 생기지 않을 것이다.
CATALINA_HOME 과 CATALINA_BASE 에 대한 내용은 새로운 글 톰캣 CATALINA_HOME vs. CATALINA_BASE 에서 읽을 수 있다.

톰캣을 아파치 연동하지 않고 단독 웹서버로 사용하려다 생긴 삽질을 기록.

환경
Ubuntu Server 14.04 LTS
Tomcat 7.0
Spring MVC

아파치 + 톰캣 설정을 했을때는 별 문제가 없었던거 같은데 아파치 연동 설정이 귀찮아서 톰캣을 웹서버로 사용하려던 곳에서 모든 문제가 시작됐다.
우분투에 톰캣7을 설치하고 JSP 기동까지는 문제가 없었다.
이클립스로 Spring MVC의 샘플 프로젝트를 test.war로 익스포트 하고 톰캣 webapp 디렉토리에 올려서 디플로이.
브라우저로 localhost/test 접속해 보면 404 not found.

로그 내용

INFO : com.elmitash.test.HomeController - Welcome home! The client locale is ko.
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/test/WEB-INF/views/home.jsp] in DispatcherServlet with name 'appServlet'

컨트롤러까지는 접속이 되는데 결과가 표시되는 뷰인 home.jsp를 찾지 못하는 문제가 발생했다.

결론적으로 문제는 톰캣의 CATALINA_HOME/conf 디렉토리에 web.xml이 기본적으로는 들어있지 않아서, jsp 요청에 대한 처리를 못하는 것에 있었다.

web.xml은 /etc/tomcat7 아래에 있고, 디폴트 CATALINA_HOME인 /usr/share/tomcat7/conf 에 넣어주고 톰캣을 재기동 해 주면 문제 해결.
스프링 컨텍스트 xml에서 defaultServletName을 설정하라는 답이 많이 있었는데, 설정을 해도 web.xml이 없으면 톰캣의 default 서블릿 설정이 읽혀지지 않아서 소용 없다.
web.xml이 있으면 스프링에서 처리 못한건 자동으로 톰캣에게 넘어가기 때문에 defaultServletName 설정은 필요 없다.
저 결론에 이르기까지 여러가지 삽질을 많이 했다.

포스트그레스 원격으로 접속하기 우분투 서버 14.04 LTS

환경
Ubuntu Server 14.04 LTS

PostgreSql 설치

apt-get install postgresql-9.3

pgadmin3는 GUI툴이니 서버 버전 우분투에는 설치하지 않는다.
설치후 아래 명령으로 PostgreSql 콘솔로 진입한다.

sudo -u postgres psql postgres

새로운 패스워드를 설정한다.

\password postgres

콘솔에서 나가기

\q

초기 상태에서는 로컬에서 밖에 접속 할 수 없다.
원격으로 pgAdmin등으로 접속하기 위해서는 아래와 같은 설정이 필요하다.

먼저 pg_hda.conf에 접속 가능한 원격지 컴퓨터의 아이피를 등록한다. 여기에 등록해 두지 않으면 접속이 거부 된다.

sudo vi /etc/postgresql/9.3/main/pg_hba.conf

제일 아래 추가

host all all <서버에접속할원격PC의IP주소>/32 md5

예를 들어 원격 컴퓨터의 아이피가 192.168.0.3일때,

host all all 192.168.0.3/32 md5

다음은 서버 아이피 주소를 등록한다.

sudo vi /etc/postgresql/9.3/main/postgresql.conf

제일 아래 추가

listen_addresses = 'localhost,<PostgreSql가설치된PC의IP주소>'

예를 들어서 포스트그레스가 설치된 서버의 아이피가 192.168.0.2일때라면 아래와 같이 쓴다.

listen_addresses = 'localhost,192.168.0.2'

PostgreSql 서비스 재시작

sudo service postgresql restart

이제 원격지 컴퓨터에서 접속해 보자.