2019/12/03

페어라인 테니스 멀티 서비스 환경 구성

1. gist.fairlineai.com WEB Site

Vmware 툴 업그레이드, 윈도우 10 path 문제 15.5 로 업그레이드
Ubuntu-12.04.5-20191123 버전은 DB쪽 연결이 빠져있음.

화면 layout만 표현된다.

DB 처리는 현재 로그인만 처리해 놓은 상항있다.
화면에 뿌려지는 DB은 링크 처리 안함.

종속성 문제.
자바 jar 파일을 가져다 사용한다.
종속을 걸때 파라메타 값이 있음.
이 파라메타 값을 잘못줘음.

컴파일때 집어넣는 파라메타, 런타임시 집어 넣은 파라메타 들이 존재함.
이번 프로젝트에 DB 쪽 커넥션을 편하게 하기 위해서 새로운 jar 파일을 사용했는데, 거기서 문제가 발생 함.

개발 환경에서는 문제가 없었음.
독립형으로 구동할 시 문제가 발생한다.

서버 구성.
현재 이 vmware Ubuntu-12.04.5-20191123 버전은 모바일쪽 클라이언트 서비스 환경만 업로드 한 상태이다.
어드민 관리자 쪽은 별도로 처리할 계획임.

톰켓을 멀티로 동작 시켜 처리 한다.

스트링부트를 사용하였기 때문에 톰켓 서버가 없어도 된다.(스트링부트는 내장형 톰겟을 가지고 있다.)
콘솔 명령어를 통해 실행하면 구동이된다.

java cli를 통해 웹 서비스를 구동 시킨다.
java vm 1.8 만 업로드 되면 몇개라도 상관없이 톰켓 설치 없이 서비스 구동이 된다. 단 포트 정보를 변경해야 한다.

톰겟에다가는 관리자를 넣어 서비스를 한다.

이렇게 동작 시키려면 톰켓과 java vm 1.8과 동시에 동작 시켜야한다.
게이트웨이 역할을 하기 위해서는 도메인 하나가 더 추가 되어야 함.

웹이 곳 게이트 역활을 한다.
하나는 java vm 1.8을 사용해 클라이언트 모바일 서비스,
다른 하나는 톰켓 서버를 사용한  관리자 서비스이다.

그래서 도메인 하나가 더 필요하다.

클라이언트는 tennis.fairlineai.com
관라자ㅣ admin.tennis.fairlineai.com

현재 관리자 개발 진행 사항은 DB 쪽 링크만 남아있는 사항이다.

1. Ubuntu-12.04.5-20191123 모바일 클라이언트 vmware 정리.
1.1 운영체제 12.0.4.5
루트계정
root/admin
user/admin

2 데이터베이스 생성.
루트계정
root/admin

mysql -u root -p

-DB 생성.
create database fairline;

- 데이터베이스 계정
create user 'fairline'@'%' identified by 'fairline';
flush privileges;
grant all privileges on fairline.* to 'fairline'@'%' identified by 'fairline';
flush privileges;

mysql -u root -p --default-character-set=utf8 --comments --database=fairline < Dump20191001.sql
mysql -u root -p$(sudo cat /var/lib/nemoos/conf/nemoos-mysql.passwd) --default-character-set=utf8 --comments --database=fairline < Dump20191201.sql

3. 리소스 폴더.
- application.properties 파일에서 설정
  resource.location=/opt/tomcat/resources/

4. 내장 Tomcat 포트변경
application.properties 파일에서 설정
server.port=8080

5. 내장 Tomcat 구동실행 
java -jar fairline-mobile-0.0.1.war

6. Tomcat website
- 기존 fairline 사이트는 모두삭제
- fairline-website-.0.0.1.war

cp ~/fairline-mobile-0.0.1.war /opt/tomcat/webapps/fairline-mobile-0.0.1.war
cp ~/server.xml /opt/tomcat/conf/server.xml

6.1 포트변경
  server.xml 파일에서 설정
      <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
   port="8080"을 변경

7. 구동
Tomcat 구동
Tomcat과 Java가 이제 서버에 설치되고 구성되어야합니다.
Tomcat을 활성화하려면 다음 스크립트를 실행하십시오.
시작 $CATALINA_HOME/bin/startup.sh
중지 $CATALINA_HOME/bin/shutdown.sh

8. 트러블 슈팅
1. 현재 우분투 12.04.5 vmware 개발 버전

- 80포트 접근 KO
- 웹 화면 구성 KO

서비스 하는데는 문제 없음.

2. 보안장비 우분투 12.04.5 문제
2.1 8080 포트 접속 KO
문제점
- 화면 UI 구성 문제.
이 문제는 리소스 파일이 없음.
즉, resource 파일은 톰켓에 내장 시킨게 아니라 외부로 뺏음.
- application.properties 파일에서 설정
  resource.location=/opt/tomcat/resources/

2.2 80 포트 접속 문제 발생.
- 화면이 나오지 않으면서 구성 파일 형태로 보여짐.

  application.properties 파일에서 설정
  server.port=8080

- 포트변경
  server.xml 파일에서 설정
      <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
   port="8080"을 변경

톰켓 디버깅
src/log
tail -f catalina.out

웹서버 톰캣 연동 통신 디버깅
/var/log/apache2/
tail -f mod_jk.log

해결방법 1.  포트포워딩.
sudo /sbin/iptables -t nat -I PREROUTING -p tcp -dport 80 -j REDIRECT -to-port 8080

iptables 정보를 지속하기 위해서 아래 어플 설치.
sudo apt-get install iptables-persistent

해결방법 2.
/etc/default/tomcat8
From : # AUTHBIND = no에서 AUTHBIND = yes 로 변경하여 추가 단계가 필요

1023보다 높은 포트 번호에서 Tomcat을 실행하면 인증이 필요하지 않음.
Tomcat을 낮은 포트 번호에 바인딩하는 데 사용
기본값 NO 설정

$ vi /etc/tomcat8/server.xml
change the port from 8080 to 80   

$ touch /etc/authbind/byport/80

$ chmod 500 /etc/authbind/byport/80
$ vi /usr/share/tomcat8/bin/setenv.sh
 CATALINAOPTS=”-Djava.net.preferIPv4Stack=true”
$ vi /usr/share/tomcat8/bin/startup.sh
 exec authbind -deep "$PRGDIR”/”$EXECUTABLE” start "$@”
$ vi /etc/default/tomcat8
 AUTHBIND=yes 

정보 [main] org.apache.coyote.AbstractProtocol.start 프로토콜 핸들러 ["http-nio-8080"]을(를) 시작합니다.


-- 80으로 했을 경우 메세지 없음.
        org.apache.catalina.LifecycleException: 구성요소 [Connector[HTTP/1.1-80]]을(를) 초기화하지 못했습니다.
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112)
                at org.apache.catalina.core.StandardService.initInternal(StandardService.java:552)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
                at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:852)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:639)
                at org.apache.catalina.startup.Catalina.load(Catalina.java:662)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                at java.lang.reflect.Method.invoke(Method.java:498)
                at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:309)
                at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
        Caused by: org.apache.catalina.LifecycleException: 프로토콜 핸들러 초기화가 실패했습니다.
                at org.apache.catalina.connector.Connector.initInternal(Connector.java:995)
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
                ... 12 more
        Caused by: java.net.BindException: 주소가 이미 사용 중입니다
                at sun.nio.ch.Net.bind0(Native Method)
                at sun.nio.ch.Net.bind(Net.java:433)
                at sun.nio.ch.Net.bind(Net.java:425)
                at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
                at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
                at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:219)
                at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1118)
                at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:224)
                at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:581)
                at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:68)
                at org.apache.catalina.connector.Connector.initInternal(Connector.java:993)
                ... 13 more

conf/web.xml
<url-pattern>league.fairlineai.com</url-pattern>

아파치 웹 서버가 80 포트를 사용하고 있음.

보안장비에서 톰켓 아파치 연동으로 진행을 해야한다.

연동.
sudo apt-get install libapache2-mod-jk

ajp 아파치와 통신을 위해 설정.
vi /etc/apache2/workers.properties

workers.tomcat_home=/srv/www/league.fairlineai.com
workers.java_home=/usr/lib/jvm/java-1.8.0-openjdk-amd64

worker.list=gfltomcat1
worker.tomcat1.port=8009
worker.tomcat1.host=14.48.92.155
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=20

jk 모듈 설정파일 설정.
vi /etc/apache2/mods-available/jk.conf

    #JkWorkersFile /etc/libapache2-mod-jk/workers.properties
    JkWorkersFile /etc/apache2/workers.properties
   
    <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>

아파치 보안 장비 웹서버 수정
/etc/apache2/sites-available/user-fbox-league.fairlineai.com
JkMount /* gfltomcat1

톰캣 수정
sudo vi /etc/tomcat8/server.xml

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

주척 처리 되었다면 해제한다.

아파치와 톰캣 재시작
sudo /etc/init.d/apache2 restart
sudo /srv/www/league.fairlineai.com/bin/startup.sh

브라우저 확인
http://ip:8080
http://ip

댓글 없음:

댓글 쓰기