집에있는 노트북으로 서비스 개발하고 집에있는 데스크탑으로 서비스 운영하기

2018. 1. 10. 09:4999. 정리전 - IT/11. Java


<script type="text/javascript"> alert("이 문건은 2017년 말 부터 작성되고 있습니다. 잊어버리기 쉬운 웹개발을 위한 환경설정 위주의 문서입니다."); </script>

구성대상

노트북 개발 환경 구성

데스크탑 운영 환경 구성

OS

MAC OS

Windows 10

tool & Framework

Eclipse Oxygen

SpringBoot + SpringSecurity + MyBatis + Message(다국어)

Thymeleaf

Gradle(Multi로 구성)

Tomcat(v8.5) + SSL

MySQL

VisualSVN(v3.7.1)

Jenkins(v2.89.2)

Apache(v2.4) + Tomcat(v8.5) + SSL

MySQL

asadal 업체에서 .com domain 구입

dnsever 업체에서 내 데스크탑의 유동IP를 체크하여 내 도메인에 일정 시간마다 자동 매핑 

TODO

비고

외부 tomcat 또는 eclipse의 embedded tomcat 그리고 eclipse의 Run As의 Spring Boot App으로 SpringBoot 기동시 최초에 spring.profiles.active와 같은 환경변수를 읽어 개발서버, 운영서버의 환경변수를 다르게 설정하여 관리

SpringBootWeb에 Thymeleaf를 붙여 문법의 장점을 이용하고, 퍼블리셔의 산출물 수정을 최소화 하여 비지니스 로직 얹음

로그인 세션 관리는 SpringSecurity 를 이용, 로그인 관련 프로세싱은 https의 ssl로 그 이외의 페이지는 http로 상호 세션을 연계하며 서비스, cert 파일을 생성하고 tomcat에 등록

시큐리티 기본예제에 있는 로그인 화면의 나를기억해줘와 단방향 암호화 구현

공통코드와 다국어메세지(정적데이터)를 최초 1회만 DB에서 가져오고 2회 호출부터는 싱글톤으로 구성되어 있는 캐시에서 가져오게 함

로그인 페이지에는 Google의 reCapcha2 넣어 봇과 같은 블랙리스트 ip는 자동 차단

facebook 소셜로그인 oauth2 연동기능으로 선가입 후조치 전략 

윈도우용 VisualSVN은 http와 https 프로토콜만 사용할 수 있지만, 약간의 수정으로 리눅스나 유닉스 처럼 svn 프로토콜을 이용하여 svn 서버 구성하여 소스 배포 관리

jenkins를 이용하여 svn 서버에 취합된 소스를 jenkins workspace로 내려받아 jenkins의 gradle 플러그인 으로 컴파일 하여 jenkins에서 war로 묶은 뒤, tomcat 서버로 이동하여 tomcat에서 war를 해동하여 재기동 시키는 것까지 구성

apache 를 서버의 앞단에 두고 ajp로 tomcat의 여러 컨텍스트에 각각 abc.donzbox.com 처럼 3차 도메인을 부여하여 관리하고, proxy 모듈로 jenkins와 같은 같은 윈도우에 있는 별도의 서버들도 외부에서 접속 할 수 있도록 3차 도메인을 부여하여 연결

tomcat은 apache에서 지정한 버추얼 호스트에 대응하여 server.xml을 수정하고, conf의 catalina 디렉토리의 하부에 3차도메인과 동일한 디렉토리 하나를 만들고 그 속에 ROOT.xml 하나를 만들어 context path를 관리

유닉스 리눅스와 달리 윈도우용 tomcat으로 해동된 war 프로젝트 기동시 spring.profiles.active와 같은 환경변수를 설정하는 부분을 tomcat의 bin 디렉토리의 setenv.bat으로 관리하여 윈도우용 jenkins 빌드후 조치에서도 사용할 수 있도록 함

 

개발서버의 환경과 운영서버의 환경이 다르다는 이야기는 localhost로 설정하여 테스트 하다가 ajp 나 proxy module을 이용한 버추얼 호스트로 연결되어 있는 2차 또는 3차 실도메인으로 설정하여 운영하는 환경 설정이 다르므로, localhost와 실도메인에서 80과 443포트를 왕래하며 세션을 공유 관리하는 tomcat 설정을 기술