자바개발자를 위한 이클립스 세팅 + 플러그인 설치 for eclipse4.2

자주 하는일은 아니지만,
하게 될때 시간도 많이 걸리고,
엄청나게 귀찮은게 바로 환경세팅이다.

다른 것보다 헷갈리기가 쉬운게
이클립스의 플러그인 설정인데,
안까먹기위해서 정리.

1. 이클립스 다운로드

이클립스는 많은 버전이 있고,
플러그인이 미리 설치되어있는 버전이 있느데 javaee개발을 위한 이클립스를 다운받아서
자기 컴터의 어딘가의 적당한 곳에 압축을 푼다.

나의 경우는 D:\eclipse[버전] 의 형식으로 푼다.
이번에는 4.2버전이므로
「D:\eclipse4.2」가 되겠다.

아래는 다운로드 페이지 링크
http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/junor

받고나서 적당한 폴더에 압축을 풀텐데
이클립스를 돌릴때에 메모리 부족으로 이클립스가 뻗는경우가 종종있다.
이클립스 압축을 푼 폴더로 이동해서 eclipse.ini파일을 수정해서 메모리를 좀 올려주자.
XXMaxPermSize, Xms, Xmx의 설정만 변경해주면 된다.
수치는 너무 크지 않게 적당히 정하면 된다.

--launcher.XXMaxPermSize
512M
--launcher.XXMaxPermSize
512m
-Dhelp.lucene.tokenizer=standard
-Xms512m
-Xmx1024m

2. JDK설정

– 이클립스에서 기본적으로 사용할 java환경을 설정하자.
Window -> Preferences를 클릭하면 팝업창이 뜨는데 아래와 같다.
팝업창에서 Java -> Installed JERs를 클릭 하면 아래와 같은 창이 나오는데
Add를 누른다.

그러면 Installed JRE Types: 라고 JRE의 타입을 선택하는 페이지가 나오는데,
그냥 「Standard VM」으로 하고 Next를 클릭

아래와 같은 화면이 나오면 Directory를 선택하고 JDK를 설치한 경로를 선택후 Finish를 눌러준다.

잘 설정됐다!

3. WAS서버(톰캣 설정)

Window -> Preferences의 Server를 클릭하면 다음과 같이 된다.

Add를 클릭

톰캣의 버전을 선택하는 부분이 나오는데,
자신의 PC에 인스톨한 톰캣을 선택(나중에 더 추가가능)
나는 우선 6.x로 선택.

Browse를 눌러서 자신이 인스톨한 톰캣폴더를 지정

Finish를 누르면 톰캣이 추가되어있다~

4. 디폴트 인코딩 설정

Window -> Preferences에 들어가서

General -> Workspace에들어가면 하단에 Text file encoding이 있는데 여기서
Ohter를 선택해주고 UTF-8을 선택하자.

————————————————————————–
이제부터 필요한 플러그인들을 설치해보자.

내가 꼭 필요로 하는 플러그인으로는 아래의 플러그인 들이 있는데,
어떻게 설치하는지 알기위해 SVN과 Spring Tool Suite만 설치해보자.
그외 플러그인은 각자 필요한 대로 설치하면 된다.

Subversion플러그인 설치 (Subclipse를 설치하겠삼)

Subversive와 Subclipse가 있으니, 좋은쪽으로 설치하면 된다.
Subversive는 eclipse공식 플러그인이라,
Help → Install New Software → 「Juno – http://download.eclipse.org/releases/juno」의 리스트에있다.
Subclipse는 Update Site에 http://subclipse.tigris.org/update_1.8.x을 설정해서 인스톨한다.

아래와 같이 subclipse와 SVNKit을 둘다 설치해야된다.

이제 next, 라이센스계약에 오케, finish로 설치를 시작해보자.

인스톨하는 중간에 검증되지 않은 프로그램이라고 나오는데 그래도 설치할래?
라는 메세지가 나온다. 무조건 설치하자.
그리고 이클립스를 재시작한다.

Spring Tool Suite 플러그인 설치

help → Install New Software에 들어간다음 Work with: 에 아래와 같은 주소를 넣어주자.
「http://dist.springsource.com/release/TOOLS/update/e4.2」
그중에 필요한걸 알아서 설치하면된다.

나는

Atlassian Connector
Core / Eclipse Integration Commons
– Eclipse Integration Commons
– SpringSource Tool Suite Dashboard
Core / Groovy/Grails Tool Suite
Core / Spring IDE
Core / STS
Extensions (Incubation) / Spring IDE
Extensions / Spring IDE
– Spring IDE Maven Support
Uncagegorized
– AspectJ Development Tools
정도를 설치했다. 설치하고 싶은 내용은 사람마다 다를테니 잘 보고 설치하자.

여기서 「Next」→ 「동의」→「Finish」이다.

추천 플러그인들.
아래 링크는 누군가가 이클립스의 플러그인을 정리해놓은 것이다.
http://www.fromdev.com/2012/01/25-best-free-eclipse-plug-ins-for-java.html

위의 플러그인에 없는것중에 내가 사용하는 것으로는
JUnit과 연동되어서 테스트를 조금 더 편하게 개발할 수 있게 해주는
MoreUnit
MoreUnit소개 – by Outsider

클래스도나 시퀀스 다이어그램을 그려주는 공짜 플러그인인 AmaterasUML

힙덤프, 메모리덤프를 분석할 수 잇는 Memory Analyzer (MAT)등이 있다.

설치방법은 위에 나왔던 SVN이나 Spring Tool Suite와 별다르지 않으므로 큰 문제없이 설치할 수 있을 것이다.

그럼 이클립스로 즐겁게 개발합시다~~~

워드프레스 한글 폰트 변경

워드프레스로 만들어진 다른 블로그를 돌아다니다 보니
폰트가 이쁜거였다.

좀 찾아봤는데, 거의다 웹폰트를 적용하라는 내용이었다.

그래서 웹폰트를 적용할까 하다가, 웹폰트가 아님에도 폰트가 이쁜곳이 있어서 봤더니
거기는 웹폰트가 아닌 그냥 맑은 고딕 –  ‘Malgun Gothic’ 을 사용하고 있었다.

아하! 맑은 고딕쓰면 되겠구나.
폰트 변경법 댄니 쉽다.

사용중인 워드프레스의 테마가 있는 폴더로 이동한다.
나의 경우는  /wp-content/themes/suffusion/ 이었다.

그리고 style.css 파일을 열어서 body를 찾고, 그담에 font-family가 있는 곳을 찾는다.

그리고 거기에 ‘Malgun Gothic’을 젤 앞에 추가해준다. 끝~

body {
        color:#000;
        font-family: 'Malgun Gothic', Arial, Helvetica, sans-serif;

Nginx 시작시키기, 정지시키기, 재시작시키기

필요에 의해서, 아래의 링크를 대~~충 번역한 글입니다.
http://wiki.nginx.org/CommandLine

Nginx 시작시키기, 정지시키기, 재시작시키기

이 페이지는 Nginx를 어떻게 시작시키는지 알려줍니다.
그리고 일단 실행된 Nginx를 어떻게 정지시키고, 재시작할지 컨트롤하는 법을 알려줍니다.

Nginx시작시키기

Nginx는 보통 /usr/bin/nginx 라는 커맨드로 실행됩니다.

Nginx 시작시키기 기본예제

/usr/bin/nginx

Ngnix 시작시키기 고급예제

/usr/bin/nginx -t -c ~/myynginx.conf -g "pid /var/run/nginx.pid; worker_processes 2;"

옵션들

Nginx는 커맨드라인 파라메터를 달랑 몇개만 가지고 있습니다.
수많은 다른 소프트웨어 시스템과는 달리, 설정파일의 설정만으로 설정은 땡입니다. (상상해보세요~)

-c 디폴트파일 대신 사용될 Nginx설정 파일을 지정합니다.

-t  Nginx를 실행하지는 않고 단지 설정파일을 테스트해봅니다. nginx에서 문법에 맞게 설정됐는지 체크합니다. 그리고 설정으로 지정된 파일을 시험삼아 열어봅니다.

-s  master 프로세스로 signal을 날립니다. :stop, quit, reopen, reload. (버전 >=0.7.53)

-v  버전을 찍어줍니다.

-V nginx의 버전, 컴파일러의 버전, 그리고 설정파라메터들을 찍어줍니다.

-ㅔ prefix prefix의 경로를 설정합니다. (디폴트 : /usr/local/nginx/). (버전 >=0.7.53)

-h, -? 도움말 찍기.

nginx 정지, 재시작하기

이미 동작중인 nginx를 정지시키는 방법은 2가지가 있습니다.
첫번째는 -s 명령을 커맨드 라인 파라메터로 넣는 것입니다.
예를들면

/usr/bin/nginx -s stop

이렇게 하면 Nginx서버는 정지될 것입니다. (앞절에서도 말했지만, ‘-s’의 다른 옵션들도 있습니다.)

Nginx를 컨트롤하는 두번째방법은 Nginx의 마스터 프로세스에 시그날을 보내는 것입니다.
디폴트로 nginx는 마스터 프로세스 아이디를 /usr/local/nginx/logs/nginx.pid에 쓰게됩니다.
./configure로 컴파일할때 파라메터로 넘기면 pid경로를 바꿀 수 있습니다. 또는
설정파일에 pid를 직접써서 설정할 수 도 있습니다.
어떻게 ‘QUIT'(정상적으로 종료 – Gracefule Shutdown – )을 Nginx마스터 프로세스로 날리는지는 아래에 나와있습니다.

kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)

마스터 프로세스는 아래의 시그날들로 조종할 수 있습니다.

TERM, INT - Quick shutdown 빠른 종료
QUIT - Graceful shutdown 정상적으로 종료
KILL - Halts a stubborn process 잘안죽는 프로세스 죽이기
HUP - Configuration reload
      Start the new worker processes with a new configuration
      Gracefully shutdown the old worker processes

      설정 리로드하기
      새로운 워커 프로세스가 시작될때 새로운 설정으로 시작됨
      오래된 워커 프로세스는 알아서 종료

USR1 - Reopen the log files - 로그파일 다시 열기
USR2 - Upgrade Executable on the fly 운행중 실행파일 업그레이드하기
WINCH - Gracefully shutdown the worker processes
        워커프로세스를 정상적으로 종료시키기

워커프로세스가 몇개의 시그날을 지원하기는 하지만, 걔네들을 따로 컨트롤할 필요는 없습니다.

TERM, INT - Quick shutdown 퀵 종료
QUIT - Graceful shutdown 정상 종료
USR1 - Reopen the log files 로그파일 다시열기

시그날을 사용해서 새로운 설정파일을 로딩시키기

Nginx는 운영중에도 nginx를 컨트롤 하기 위해 사용할 수 있는 몇개의 시그날을 지원합니다.
가장 일반적인 시그날은 15인데, 실행중인 프로세스를 정지시키기위해 사용합니다.

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2213 0.0 0.0 6784 2036 ? Ss 03:01 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

그런데, 더 재미 있는것은 운행중에 nginx의 설정파일이 변경이 된다는 것입니다.
(우리가 리로드 되는 설정의 우선순위를 테스트했음을 주의하세요.)

2006/09/16 13:07:10 [info] 15686#0: the configuration file /etc/nginx/nginx.conf syntax is ok
2006/09/16 13:07:10 [info] 15686#0: the configuration file /etc/nginx/nginx.conf was tested successfully
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2213 0.0 0.0 6784 2036 ? Ss 03:01 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

nginx가 HUP 시그날을 받았을 때 무슨일이 일어났는가 하면, nginx는 설정파일의 파싱을 시도하고
(지정한 파일이 있으면 그 파일을 없으면 디폴트) 파싱이 성공하면, 새로운 설정을 적용하려고 합니다.
(즉, 로그파일과 listen상태의 소켓이 재 오픈되요. ). 재설정이 성공하면, nginx는 새로운 워커 프로세스를
실행시키고 이전의 오래된 워커들에게는 정상종료되도록 시그날을 보냅니다. 시그날을 받은 워커는 listen socket들을
닫지만, 현재 클라이언트들에 대한 동작은(to servce current clients) 계속됩니다.
모든 클라이언트에 대한 동작이 완료되면 오래된 워커들은 종료되고ㅡ 만약에 nginx가 새로운 설정의 적용에 실패하면,
이전 설정으로 계속해서 동작하게 됩니다.

운행중에 새로운 바이너리로 업그레이드하기 (Upgrading To a New Binary On The Fly)

만약에 nginx의 바이너리를 새로운 녀석으로 교체하고 싶다면,
(새버전으로의 업그레이드 혹은 서버의 모듈들의 추가/삭제를 할 때)
어떠한 서비스의 다운타임이 없이- 들어오는 요청의 소실 없이 – 도 변경가능합니다.

첫째로, 이전 버전의 바이너리를 새것으로 교체하려면, USR2 시그날을 마스터 프로세스로 보내면 됩니다.
그 시그날은 nginx의 .pid 파일을 .oldbin으로 이름을 변경합니다.
(예를들면 /usr/local/nginx/logs/nginx.pid.oldbin), 그러고 나서 새로운 바이너리를 실행시키고,
마스터 프로세스와 새로운 워커 프로세스들이 차례대로 시작됩니다.

: PID PPID USER %CPU VSZ WCHAN COMMAND
33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx
33134 33126 nobody 0.0 1368 kqread nginx: worker process (nginx)
33135 33126 nobody 0.0 1380 kqread nginx: worker process (nginx)
33136 33126 nobody 0.0 1368 kqread nginx: worker process (nginx)
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

여기서, 두개의 niginx 인스턴스가 실행되고, 들어오는 리퀘스트를 같이 처리합니다.
오래된 인스턴스를 빼려면, WINCH시그날을 오래된 마스터프로세스에 보내야합니다.
그러면 그 녀석의 워커 프로세스는 정상종료를 시작할것입니다.

: PID PPID USER %CPU VSZ WCHAN COMMAND
33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx
33135 33126 nobody 0.0 1380 kqread nginx: worker process is shutting down (nginx)
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

그리고 얼마후에, 오래된 워커프로세스는 모두 없어지고, 새로운 워커 프로세스들만이 리퀘스트 요청을 처리하게 됩니다.

: PID PPID USER %CPU VSZ WCHAN COMMAND
33126 1 root 0.0 1164 pause nginx: master process /usr/local/nginx/sbin/nginx
36264 33126 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

여기서, 이전의 서버로 되돌리는것도 가능한데, 왜냐하면 listen socket들을 닫지 않았기 때문에 아래의 절차를
따라하면 됩니다.

– 오래된 마스터 프로세스에 HUP 시그날을 보낸다. – 설정파일의 리로딩 없이 워커 프로세스를 시작시킨다.
– 새로운 마스터 프로세스에 QUIT 시그날을 보내서 그것의 워커프로세스를 정상적으로 종료시킨다.
– 새로운 마스터 프로세스에 TERM 시그날을 보내서 강제로 종료시킨다.
– 어떠한 이유로 새로운 마스터 프로세스가 종료되지 않으면, KILL 시그날을 보낸다.

새로운 마스터 프로세스가 종료되고, 오래된 마스터프로세스는 .oldbin 접미어를 그것의 .pid파일에서 삭제합니다.
그리고 모든것이 업그레이드 하기 전으로 돌아가게됩니다.

만약에 업그레이드가 성공적으로 되었고 새 서버로 유지하는게 좋으면, QUIT시그날을
오래된 마스터 프로세스로 보내면 새로운 서버만이 돌게됩니다.

: PID PPID USER %CPU VSZ WCHAN COMMAND
: 36264 1 root 0.0 1148 pause nginx: master process /usr/local/nginx/sbin/nginx
: 36265 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
: 36266 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)
: 36267 36264 nobody 0.0 1364 kqread nginx: worker process (nginx)

레퍼런스