[eGovFramework] 전자정부프레임워크 샘플 프로젝트 WAR 생성 / Ubuntu 가상머신에 WAR 배포하여 접속 테스트

EUN JY·2022년 8월 29일
1

eGovFrame

목록 보기
5/6

1. WAR 파일 생성

  • WAR 배포를 위해 프로젝트 pom.xml 파일 수정
    • <packaging> 부분에 war로 값 변경
    • spring-boot-starter-tomcat dependency 추가
    • pom.xml 수정 후에도 오류 발생 시 2-1. 참고
		<!-- 2022.08.26 Spring Boot War 배포를 위함 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>

  • 프로젝트 우클릭 > Maven > Update Project
  • 프로젝트 우클릭 > Run As > Java Application > EgovBootApplication 실행 (main() 이 있는 Class를 선택)
  • 프로젝트 우클릭 > Run As > Maven build...
    • Goals에 package 입력 후 Apply 및 Run
  • C:\Users\Ynjch\egovSample\sample\target 폴더에 war 파일 생성된 것 확인

1-1. Ubuntu 서버에 WAR 파일 업로드

  • FileZilla 연결
  • /home/egov/tomcat/tomcat-9.0/webapps에 war 파일 업로드
    • server.xml에 설정한 폴더 이름과 동일한 파일명으로 변경해주어야 함 > sample.war
  • MySQL 포트 추가 이후로 FileZilla 접근이 안되는 경우, 아래 내용 실행
egov@egov-server:/$ sudo ufw allow 22
egov@egov-server:/$ sudo ufw allow 8080
  • 업로드가 안되는 경우, 해당 디렉토리 권한 확인
egov@egov-server:~/tomcat/tomcat-9.0/webapps$ ls –al
egov@egov-server:~/tomcat/tomcat-9.0/webapps$ sudo chmod -R 777 /home/egov/tomcat

2. WAR 파일 배포

  • 사용 명령어 총정리 (아래 절차에 사용)
# Tomcat 실행 및 중지
egov@egov-server:~/tomcat/tomcat-9.0/bin$ cd /home/egov/tomcat/tomcat-9.0/bin
egov@egov-server:~/tomcat/tomcat-9.0/bin$ ./startup.sh
egov@egov-server:~/tomcat/tomcat-9.0/bin$ ./shutdown.sh
# WAR 파일 및 프로젝트 폴더 위치
egov@egov-server:~$ cd /home/egov/tomcat/tomcat-9.0/webapps
# 하위 디렉토리 포함 권한 변경
egov@egov-server:~$ sudo chmod -R 777 /home/egov/tomcat
# 파일 및 디렉토리 삭제
egov@egov-server:/home/egov/tomcat/tomcat-9.0/webapps$ sudo rm -rf sample/
# server.xml 수정 
egov@egov-server:/home/egov/tomcat/tomcat-9.0$ sudo vi conf/server.xml
# Log 확인
egov@egov-server:~/tomcat/tomcat-9.0/logs$ cd /home/egov/tomcat/tomcat-9.0/logs
egov@egov-server:~/tomcat/tomcat-9.0/logs$ tail -f catalina.out
# Tomcat 떠있는지 확인
egov@egov-server:~/tomcat/tomcat-9.0/bin$ ps –ef | grep tomcat
# globals.properties 파일 수정
egov@egov-server:~/tomcat/tomcat-9.0/webapps/sample$ cd WEB-INF/classes/egovframework/egovProps/
egov@egov-server:~/tomcat/tomcat-9.0/webapps/sample/WEB-INF/classes/egovframework/egovProps$ vi globals.properties
  • Tomcat 중지된 상태에서 /home/egov/tomcat/tomcat-9.0/webappssample.war 파일 업로드 된 것 확인
  • Tomcat 실행 후 ps -ef | grep tomcat 확인
  • /home/egov/tomcat/tomcat-9.0/webapps에 sample 폴더 및 하위 폴더들이 생성되었는지 확인
  • Tomcat 중지
  • globals.properties 파일의 DB 설정 내용 아래와 같이 수정 (IP 주소 및 DB 연결 정보 변경)
  • pom.xml 파일 위치 찾기 (해당 디렉토리와 하위 디렉토리에서 검색됨)
egov@egov-server:~/tomcat/tomcat-9.0/webapps/sample$ find -name pom.xml
./META-INF/maven/org.egovframe.template/simpleHomePage/pom.xml
  • pom.xml이 존재하는 디렉토리로 이동하여 Maven Clean 실행
egov@egov-server:~/tomcat/tomcat-9.0/webapps/sample$ cd META-INF/maven/org.egovframe.template/simpleHomePage
egov@egov-server:~/tomcat/tomcat-9.0/webapps/sample/META-INF/maven/org.egovframe.template/simpleHomePage$ mvn clean package -Dmaven.test.skip=true

2-1. WAR 파일 배포 오류

  • catalina.out 파일 확인 결과 startup.sh 실행 후 오류 발생 시, pom.xml에 아래 내용 추가
29-Aug-2022 02:47:42.563 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing
        javax.servlet.ServletException: Failed to instantiate WebApplicationInitializer class
                at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:160)
Caused by: java.lang.ExceptionInInitializerError
Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j-to-slf4j
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
29-Aug-2022 02:47:44.358 SEVERE [main] org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing
  • spring-boot-starter-web 부분 수정 > Maven build... > war 파일 재추출
    • <exclusions> 부분 추가하였음
		<!-- spring boot dependency start -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
			<!-- 2022.08.26 Spring Boot War 배포를 위함 - slf4j multi binding 오류 -->
			<exclusions>
				<exclusion>
					<groupId>org.springframework.boot</groupId>
				    <artifactId>spring-boot-starter-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
  • 재배포

3. WAR 파일 배포 시 참고

  • 자주 쓰는 명령어 별칭 등록
    • 재부팅하여도 alias가 영구 지속될 수 있도록 ./bashrc 파일에 등록하여 사용
egov@egov-server:/$ cd /home/egov
egov@egov-server:~$ ls -al
egov@egov-server:~$ vi ~/.bashrc
  • Tomcat 관련 명령어 등록 후 저장
alias tstart='/home/egov/tomcat/tomcat-9.0/bin/startup.sh'
alias tstop='/home/egov/tomcat/tomcat-9.0/bin/shutdown.sh'
alias tlogdir='cd /home/egov/tomcat/tomcat-9.0/logs'
alias tlog='tail -f catalina.out'
alias spropdir='cd cd /home/egov/tomcat/tomcat-9.0/webapps/sample/WEB-INF/classes/egovframework/egovProps/'
alias spomdir='cd  /home/egov/tomcat/tomcat-9.0/webapps/sample/META-INF/maven/org.egovframe.template/simpleHomePage/'

  • 추가된 alias 적용을 위해 source 명령어를 이용해 동기화
egov@egov-server:~$ source ~/.bashrc
profile
개린이

0개의 댓글