728x90

Linux 에서 Tomcat과 nginx를 연동해 사용하려고 할 때 설정.

Tomcat

초기 설정대로 8080 포트로 실행한다.

nginx

  • /etc/nginx/conf.d/default.conf 수정 : location 정보를 추가해 80포트로 들어오는 요청을 8080 포트로 pass한다.
location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.do$ {
      proxy_pass              http://localhost:8080;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        Host $http_host;
    }
    location ~ \.jsp$ {
      proxy_pass              http://localhost:8080;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        Host $http_host;
    }
    location ^~/servlets/* {
      proxy_pass              http://localhost:8080;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        Host $http_host;
    }
    location ^~/* {
      proxy_pass              http://localhost:8080;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        Host $http_host;
    }

nginx Load Balancer

  • 만약 여러대의 서버로 구성된 애플리케이션 서버들이 있고 그 앞에 LB용(세션 정보 공유) 서버가 있다면 아래와 같이 upstream 정보로 서버 ip를 나열하고 proxy_pass로 upstream 정보를 입력한다.
upstream backend {
    ip_hash;
    server 210.122.7.224:80;
}

server {
    listen       80;
    location /resources/ {
        alias   /home/townus/resources/;
        autoindex off;
        access_log off;
        expires max;
    }
    location / {
        #root   /usr/share/nginx/html;
        #index  index.html index.htm;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://backend;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }


반응형

'WEB & WAS > nginx' 카테고리의 다른 글

NginX를 이용한 static 컨텐츠 서비스 와 캐시 설정  (0) 2022.08.09
728x90

출처 : http://kogun82.tistory.com/88


probe  설치


1. psi-probe를 다음의 홈 페이지에서 다운 받는다.(http://code.google.com/p/psi-probe/)


2. 다운 받은 압축 파일을 해제하고 나면 probe.war 파일을 확인 할 수 있다.


3. Tomcat manager에 접속하여 probe.war 파일을 선택하여 업로드하고, deploy를 실행한다.


4. deploy가 완료되면 http://loclahost:8080/probe/ 에 접속하여 확인 할 수 있다. 접속 시 필요한 계정 정보는 Tomcat manager에 계정과 동일하다.





반응형
728x90

출처 : http://stevenjsmin.tistory.com/103


문제점

Linux(혹은 Unix)에서는 1024번 이하의 포트가 보안상의 이유로 root권한을 가지고 있는 로세스만이 포트를 선점할 수 있다.(root reserved ports) root계정이 아닌 일반계정으로 Tomcat을 서비스 할 때정상적으로 Tomcat의 리스너(Listener)가 동작하지 않음을 TOMCAT LOG(logs/catalina.out)를 
통하여 확인 할 수 있다

 

2009. 12. 15 오후 4:14:31 org.apache.coyote.http11.Http11Protocol init
심각: Error initializing endpoint
java.net.BindException: Permission denied<null>:80

 

따라서 일반계정으로 Tomcat 80번 포트(HTTP 기본포트)에서 서비스 하려 한다면, Tomcat HTTP Connector Port 1024이상의 포트번호로 지정해준 뒤80포트로의 모든 인바운딩을 Tomcat HTTP Connector Port로 리다이렉트 해주어야한다아래는 iptables 명령을 이용한 간단한 예제이다.(반드시 root권한으로 수행되어야 한다.)

 

우선 8080포트가 리슨을 하고있는지 확인한다.

# netstat -ntl

The output will look something like

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 ::ffff:127.0.0.1:8005       :::*                        LISTEN
tcp        0      0 :::8009                     :::*                        LISTEN
tcp        0      0 :::8080                     :::*                        LISTEN
tcp        0      0 :::22                       :::* 

예제

TOMCAT 서버가 구동되는 호스트의 IP : 211.110.33.86 또는 localhost
TOMCAT 서버의 HTTP Connector Port : 8080

iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080 

위의 예제는 현재 서버(211.110.33.86) 8080포트에 대한 모든 인바운딩을 80 포트로 리다이렉트(REDIRECT)하는 명령이다.


또는 다음과 같이 명령을 입력한다.

# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

 

Run the folloing command to verify that redirect is working fine

# iptables -t nat -L

The output will look something like

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
REDIRECT   tcp  --  anywhere             anywhere            tcp dpt:http redir ports 8080

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

 Run the following command to remove the routing

# iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

 Remember, when you are modifying your running configuration of iptables, you will still need to save your changes in order for it to persist on reboot. Be sure to test your configuration before saving it with "service iptables save" so that you don't lock yourself out

 

생각해보아야할 문제

root권한으로 TOMCAT과 같은 WAS를 구동하였을때 발생 할 수 있는 문제점은?
WEB SERVER없이 TOMCAT과 같은 WAS만으로 서비스하였을때 발생 할 수 있는 문제점은?
SSL(https)의 경우 443번 포트를 해당 프로토콜의 기본 포트로 사용하는데, SSL도 이와같은 처리를 해주어야할까?

반응형
728x90

 

 

 

1. webtob(WS: 정적인 업무 처리) 구동시
 a 1) WSM(웹서버 모니터 프로세스), HTL, HTH 3가지가 구동됨
  2) HTL(리스닝 작업)이 클라이언트로부터 리슨하고,
  3) HTH로 핸들링해서 HTH에서 업무프로세스에 할당하고 처리한 값을 다시 HTL로 보냄
   3-1) HTH 앞단에 큐를 사용하여 과부하를 막음
   3-2) 단위 업무자체가 클 경우 업무프로세스를 확장
   3-3) 사용자가 몰릴경우 HTH(인스턴스)를 4개까지 확장 가능(안에 컨테이너 수는 제한없음)
  4) WSM이 HTL과 HTH를 모니터링하여 문제 발생시 처리

 

 

2. JEUS 구조
  - SERVER > NODE > 제우스 메니저 <동급> 제우스 컨테이너
  1) 제우스 메니저의 역할
     - J2EE 서비스, 리소스 관리(시큐리티, 데이터베이스, 외부소스, jndi 등등)
  2) 제우스 컨테이너
     - 서블릿 엔진, EJB, JMS 등등 업무처리

 

 

3. webtob

  1) 설치 중간에 servlet은 제하고 순수 webtob체크
  2) /bin파일/ wsboot, wscfl(실행파일 설정), wsdown

 

 


4. jeus
  1) 설치 중간에 어드민 패스워드 입력
  2) webserver(내장 webtob ==> 인스턴스 1개만 생성가능, 같은 공간의 제우스하고만 연결) 
  3) /webserver/config/ws_engine.m 을 http.m으로 새로 저장하여 작업
  4) cmd창 /webserver/config> wscfl -i http.m(파일 유효성 검사) --> wsconfig생성
  5) cmd창 /webserver/config> wsboot --> 웹투비 가동
                              wsdown --> 웹투비 다운

 

  6) jeus 환경설정
    --> /config/해당컴터이름/jeusmain.xml 수정
        /config/해당컴터이름/해당컴터이름_servlet_engine1/webmain.xml 수정 
    --> 최초의 연결설정은 jeus에서 webtob로 설정명령
 

  7) cmd창> jeus
 

  8) cmd창> jeusadmin 사용자컴터이름  ==> 어드민 로그인
 

  9) cmd창> boot  ==> 제우스 가동
                  down  ==> 제우스 다운

 

 10) 

기타 환경 변수 추가는 jeus가 설치된 폴더(c:\tmaxsoft)의 bin 폴더의 jeus.properties.cmd       파일을 열어 설정해 줄 수 있다.

         - JEUS_BASEPORT : JEUS 가 사용할 네트워크 포트중 기본 포트 --> 9736

         - JAVA_HOME : Java 2 설치 디렉토리

         등등...

         - JEUS_BASEPORT를 수정할 경우

           : %JEUS%\config\vhost.properties의

             컴퓨터이름 = 컴퓨터이름:9736 의 포트도 같이 수정

 

 11) admin페이지 접속 ==> http://localhost:9744/webadmin/ 

      (포트는 jeus.properties.cmd 의 JEUS_BASEPORT 숫자 + 8한 숫자)

      (로그 보기 및 jdbc 컨넥션 풀, 어플리케이션 배포 등 설정)

       - webadmin 을 실핼 시키기 위해서는 JEUSMain.xml 에 <enable-webadmin> 태그의 값이

          true 로 설정 되어 있어야 한다.

          (경로--> %JEUS_HOME%\config\<nodename>\JEUSMain.xml)

  12) /lib/datasource 안에 관련 jar파일(jdbc 드라이버 등) 저장

  13) admin 명령어 (admin으로 cmd창에서 접속후 cmd창>help 로 확인가능)
     -  st -v
        st -p
        st -r
        q
        conlist
        downcon [컨테이너명] 
        applist
        dsinfo
        ti -a
        dsconinfo -con [컨테이너명] -t [컨넥션풀 이름]
        등등


  14) 설정파일의 xml스키마를 보고싶을땐  /lib/schemas/jeus/ 안에서 참조

 

  15) jeus/bin/ 안에서 .cmd 파일로 만들고 cmd창에서 모아서 어디서든 실행할 수 있다.

       (서버 내리기, 어드민 접속 등등)
      예) jeusadmin [컴퓨터이름] -Uadministrator -Ppassword jeusexit   ==>jdown.cmd로 만듬    
           jeus -Uadministrator -Ppassword   ==> jboot.cmd로 만듬
          jeusadmin [컴퓨터이름] -Uadministrator -Ppassword  ==>jadmin.cmd로 만듬

  

  16) 메뉴얼
     [jeus 6.x]
      http://technet.tmax.co.kr/kr/edocs/jeus/60/index.html

     [webtob 4.x]
     http://technet.tmax.co.kr/kr/edocs/webtob/41/index.htm

  

 

 

 

 

======= java.net.ConnectException: Connection refused: connect

           worker(webtob1-hth0(localhost:9900)-w00:null) : Failed to reconnect
                                                                                                        ===============

1. webtob와 설정이 맞지 않기 때문이다.

2. jeus 설정을 바꿨다면 webtob까지 모두 내렸다가 다시 올려야 한다.

 

 

 

 

 

 

 

================================ log 설정 =======================================

1. JeusMain.xml (<node> 태그 사이에 작성)

<system-logging>
            <name>jeus</name>
            <handler>

                <console-handler>

                      <name>handler0</name>
                      <level>FINE</level>
                 </console-handler>
                <file-handler>
                    <name>handler1</name>
                    <level>FINE</level>
                     <valid-day>1</valid-day>
                     <file-name>D:\Project\workspace\JeusLog\JeusServer.log</file-name>
                </file-handler>
            </handler>
</system-logging>

 

2. ~~-servlet 폴더의 WEBMain.xml(<context-group>안에..)

<logging>
            <access-log>
                <handler>

                   < console-handler>

                      <name>handler0</name>
                    </console-handler>                   

                   <file-handler>
                        <name>handler1</name>
                    </file-handler>
                </handler>
            </access-log>
        </logging>

 

 

==================== OutOfMemoryError:PermGem Space 에러 =================

<JEUSMain.xml>

<engine-container>
            <name>container1</name>
     <command-option>-Xms256m -Xmx512m -XX:PermSize=512m

                                -XX:MaxPermSize=1024m</command-option>
            <sequential-start>true</sequential-start>
            <engine-command>
                <type>ws</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>jms</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>ejb</type>
                <name>engine1</name>
            </engine-command>
            <engine-command>
                <type>servlet</type>
                <name>engine1</name>
            </engine-command>
        </engine-container>

 

==> 이런식으로 PermSize를 늘려준다.

 

 

 

============================= webtob 사용 안하기 ==============================

<해당 servlet-engine의 WEBMain.xml>

<webserver-connection>
            <http-listener>
                <listener-id>http1</listener-id>
                <port>8088</port>
                <thread-pool>
                    <min>10</min>
                    <max>20</max>
                    <step>1</step>
                </thread-pool>
            </http-listener>
            <!--<webtob-listener>
                <listener-id>webtob1</listener-id>
                <port>9900</port>
                <output-buffer-size>8192</output-buffer-size>
                <thread-pool>
                   <min>1</min>
                   <max>5</max>
                   <step>1</step>
                   <max-idle-time>30000</max-idle-time>
                </thread-pool>
                <webtob-address>localhost</webtob-address>
                <registration-id>MyGroup</registration-id>
            </webtob-listener>
  -->
        </webserver-connection>

==> webtob를 사용하지 않고 jeus만으로 web을 구동할 경우

      <webtob-listener>를 주석처리한다.

 

 

 

======================== <invocation-manager-action> =========================

1. Warning

  : 이 선택사항이 선택되면, 만약 한 자원이 무상태 메소드 호출 동안 사용되었지만 반환할 때 닫지 않게 될 경우 이벤트가
container log에 warning 메세지로 기록된다.

 

2.AutoClose:
이 선택사항이 선택되면, 만약 한 자원이 무상태 메소드 호출 동안 사용되었으나 반환할 때 닫히지 않는다면 자원이
자동적으로 닫힌다.


===JEUSMain.xml===
<jeus-system>
  <node>
...
    <engine-container>
...
      <invocation-manager-action>
          AutoClose
      </invocation-manager-action>
...
    </engine-container>
  </node> 
</jeus-system>

 

 

 

============================ jeus admin 비밀번호 수정 ========================

1. cmd창 열고
2. java -classpath "%JEUS_HOME%\lib\system\jeus.jar" jeus.security.util.Base64Coder <바뀔 암호>
   하면 암호가 반환됨
3. %JEUS_HOME%\config\컴퓨터이름\security\SYSTEM_DOMAIN\accounts.xml을 열어서

<?xml version="1.0"?>
<accounts xmlns="http://www.tmaxsoft.com/xml/ns/jeus" version="6.0">
      <users>
        <user>
            <name>administrator</name>
            <password>{base64}이부분 수정</password>
            <group>Administrators</group>
        </user>
    </users>
    <groups>
        <group>
            <description>A group for administrators</description>
            <name>Administrators</name>
        </group>
    </groups>
</accounts>

 

출처 : http://sararing.tistory.com/176

반응형

+ Recent posts