728x90
300x250

[Spring-Framework] 23(번외). STS 4.4 - Spring Boot Starter - 배포(Jar, War방식)


이전의 글을 참고하여 진행하면 될 것 같다.

Spring Boot Starter의 배포 방식에는 크게 "Jar", "War"로 구성된다.

Spring Boot Starter의 Jar파일 배포는 maven Build를 통해서 이뤄진다.

내장 톰캣 웹서버까지 함께 배포해버리는 단점이 있다.

차이점이 Spring Legacy Project로 생성한 Spring Framework는 일반적인 배포에서는 간단하게 War 배포를 할 수 있다.


- IDE: Spring Tool-Suite 4-4.7.2 Releases (2020-06-29 기준 최신 버전) // 대략



1. Spring Boot Starter - 배포 방법 JAR


Jar 방식으로 배포하는 방법에 대해서 소개하겠다.



그림 1. Run에서 Maven Build하기


(작업하고 있는) Spring Boot 프로젝트를 선택한다.

Run 메뉴를 클릭한다.

Run As에서 5 Maven Build...를 클릭한다. (은근히 햇갈리게 되어 있음.)



그림 2. Run에서 Maven Build하기

Goals에 package

Profiles은 비워둔다.

Run 버튼을 누른다.




그림 3. 빌드 기다리는 모습(1)


시간이 걸린다. 다운로드 과정 등이 있다. 알아서 배포 작업이 잘 되고 있는지 태스트 작업도 하고 그렇다.



그림 4. 빌드 기다리는 모습(2)



그림 5. 빌드 완료된 모습(1)


BUILD SUCCESS라고 뜨면 잘 된 것이다. 빨강색 뜨면 안 좋은 것이다. (오류도 잡아야 하고 그렇다. ㅠㅠ)



그림 6. 빌드 완료된 모습(2)


console 대화창 내용을 클릭한다.

Ctrl + F를 누른다.

jar를 검색한다.


무슨 파일명으로 배포되었는지 알기 위해서이다.



그림 7. 빌드 완료된 모습(3)


프로젝트 창을 F5키로 새로고침한다.

target 폴더를 클릭해보면, 배포된 파일을 살펴볼 수 있다.



그림 8. 빌드 완료된 모습(4)


쉬워보여도 쉬운 과정이 아니다. 또 실제 서버에 빌드해서 태스트를 해야 한다.

또 안 되면, 다시 Eclipse 작업창에서 삽질을 해야 한다.



2. Spring Boot Starter - 배포 방법 War


war 배포 방법은 다소 어렵다. 코드 몇 줄이긴 하지만, 작성해줘야 한다.

코드 부분도 소개하도록 하겠다.



2-1. war 배포 - pom.xml


pom.xml 수정에 대한 사항이다.



그림 9. pom.xml 파일 수정(1) - 변경해야 할 내용



그림 10. pom.xml 파일 수정(2) - 변경해야 할 내용



그림 11. pom.xml 파일 수정(2) - 변경해야 할 내용


아래의 내용을 열어보면, 확인할 수 있다. (굵기 표시로 변경 작업을 한 내역을 표시하였음.)





2-2. War 배포 - SpringBootMvcDemoApplication.java


사소해보이지만, 코드 변경이 중요하다.

이거 안 해주면, pom.xml 설정 잘 되어 있어도 오류가 뜬다.



그림 12. pom.xml 파일 수정(2) - 변경해야 할 내용


package com.springmvc.home;


import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.boot.builder.SpringApplicationBuilder;

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;


@SpringBootApplication

public class SpringBootMvcDemoApplication extends SpringBootServletInitializer {


public static void main(String[] args) {

//SpringApplication.run(SpringBootMvcDemoApplication.class, args);

SpringApplication app = new SpringApplication(SpringBootMvcDemoApplication.class);

app.run(args);

}


@Override

protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

return builder.sources(SpringBootMvcDemoApplication.class);

}


}



파일명: SpringBootMvcDemoApplication.java


[첨부(Attachments)]

SpringBootMvcDemoApplication.zip





2-3. Run As로 Maven Build하기 - War 배포


지금부터 작업은 배포를 하는 것이다.



그림 13. Run의 Maven build 메뉴 모습


Run 메뉴를 클릭한다.

Run As의 Maven build를 클릭한다.




그림 14. Select Configuration


SpringBootMVCDemo (1) : package를 선택하고 OK를 누른다.




그림 15. 빌드가 완료된 모습


빌드하는 데 시간이 다소 소요된다.

기다리면 된다.


BUILD SUCCESS라고 녹색 대화 글이 나오면 잘 된 것이다.



2-4. 톰캣 서버에 올리기 - war 배포


웹 서버에 실제로 배포하는 방법에 대해서 소개하겠다.








그림 16. 빌드가 완료된 파일 (1)


demo-0.0.1-SNAPSHOT.war 파일을 선택한다.

복사한다. (Ctrl + C)




그림 17. 톰캣 서버의 webapps 폴더에 넣어주기 (2)


톰캣 서버 설치 경로의 webapps에 들어간다.

붙여넣기를 한다. (Ctrl + V)




그림 18. 톰캣 서버의 bin - startup 실행해주기


bin폴더에서 startup.bat을 더블 클릭한다.

서버를 실행해준다.




그림 19. 서버가 실행되고 나면, 압축해제가 된 모습


정상적으로 폴더가 생성되었다면, 배포가 잘 된 것이다.




그림 20. 서버 실행 모습


Tomcat 서버에 보면, 익숙한 모습으로 Spring Security 생성 암호가 있다.

Using generated security password:의 내용을 복사한다.


Username: User

Password: 복사한 내용의 비밀번호(암호화된 랜덤 형태의 암호이다)




그림 21. 로그인 후 배포된 모습


정상적으로 화면이 보인다면, 배포가 성공적으로 이뤄진 것이다.



3. 결론(Conclusion)


서버 배포 작업도 개발자라면 경험해봐야 할 중요한 부분이라고 생각된다.

다소 스프링 부트는 배포 부분에 있어서는 쉽지만 않다.


서버 배포에 대해서 살펴보았고, Jar파일로 배포하는 방법에 대해서도 소개하였다.



* 참고자료(References)


1. [스프링 부트] war 파일과 외부 톰캣을 이용한 서버 배포, https://steady-hello.tistory.com/53, Accessed by 2020-09-30, Last Modified 2019-10-30.

반응형
728x90
300x250

[JSP] 11. WAR 배포하기 - 웹 사이트 올리기


개발을 하였으면, 사용자가 접속할 수 있도록 배포를 해주어야 한다.

기존의 Apache Web Server나 Microsoft IIS 서버의 경우에는 프로젝트 그대로 올려주면 되는데, JSP는 두 가지 방법을 지원하고 있다.


WAR 형태 파일로 압축하여 서버에 올리는 방법이 있다.




1. 리눅스, 윈도우 환경에서 "Eclipse IDE(Spring Tool-Suite 4)"로 개발했을 때


1. 배포할 spring 프로젝트를 우클릭하여 export를 선택한다.

2. export 메뉴가 나오면 Web 카테고리 안의 WAR file을 선택하고 Next를 누른다.

3. Destination에 war파일을 저장할 위치를 지정해준다. (tomcat이 설치된 폴더의 webapps 폴더로 지정해주면 편리하다)


4. Export source files와 Overwrite existing file 항목을 체크해준다.

5. 마지막으로 finish를 누르면 war파일이 생성된다.



그림 1. File 메뉴 모습


File -> Export를 클릭한다.



그림 2. Eclipse의 Export 작업


"Web 폴더"의 "War file"을 선택한 후, "Next"를 누른다.



그림 3. Eclipse의 Export 작업


작업한 웹 프로젝트를 선택하고 "Browse"를 누른다.



그림 4. Eclipse의 Export 작업


배포할 파일의 내보낼 위치를 선택한다.

저장(S)를 누른다.



그림 5. Eclipse의 Export 작업


"Finish"를 누른다.




2. Windows(윈도우) 환경에서의 아파치 서버에 배포하기


{tomcat 설치 경로}\webapps 폴더에 생성한 war 파일을 복사한다.

{tomcat 설치 경로}/bin 으로 들어가서 startup.bat을 실행하면 tomcat이 시작된다.


tomcat을 시작하면, 자동으로 프로젝트 이름과 동일한 폴더가 생성되면서 war 파일로 묶여있던 패키지가 풀린다.


웹브라우저에서 localhost:8080이나 아이피주소:8080로 해당 프로젝트에 접속하면 된다. 

프로젝트명이 test인 경우 http://localhost:8080/test 로 접속하면 spring 프로젝트에 접속된다.




그림 6. 배포 폴더에 war 파일 모습


webapps폴더에 war 파일을 붙여넣는다.



그림 7. bin의 startup.bat(Apache Tomcat 9)


bin폴더에 있는 startup.bat을 실행하여 웹 서버를 실행해준다.



그림 8. Apache Tomcat 9 - 서버 가동중




그림 9. 웹 브라우저에서 확인하기


웹 브라우저에서 접속하여 확인하면, 동작하는 것을 알 수 있다.



3. Linux(Ubuntu) 환경에서 배포


마찬가지로 tomcat이 설치된 디렉토리의 webapps 디렉토리에 war 파일을 복사하고 tomcat을 재시작 해주면 된다.

(/var/lib/tomcat{버전}/webapps/ 디렉토리에 복사한다.)


tomcat을 재실행한다.

Windows와 동일하게 tomcat을 시작하면 자동으로 프로젝트 이름과 동일한 폴더가 생성되면서 war 파일로 묶여있던 패키지가 풀린다.


$ sudo service tomcat{버전} restart


웹브라우저에서 해당 서버의 아이피주소:8080로 접속할 수 있다.


운영체제: 리눅스 우분투(Ubuntu-20 Desktop 64bit)


[명령어 요약]

user@localhost :sudo -i

root#apt update

(처음 우분투 설치하면, 업데이트 하라고 GUI화면에 올라옴. 재부팅을 몇 번 해보고 나서 작업하는 것을 권장함.)

root#apt install tomcat9

root#service tomcat9 start


(war 파일 경로 찾기)

#mv {파일명}.war /var/lib/tomcat9/webapps

(수동 컴파일 버전은 수동 설치 경로로 할 것)


(잠시 기다리고 나서 1분 이내)

* 파이어폭스 열어서 접속할 것




그림 10. 우분투(리눅스)에서 톰캣9 - 설치하기




그림 11. 우분투(리눅스)에서 ifconfig 명령어 집합(net-tools) 설치 및 톰캣 실행하기 - 리눅스




그림 12. 파이어폭스에서 localhost 구경하기 - 리눅스





그림 13. 톰캣 설치 경로 찾기 - 리눅스






그림 14. war 파일 복사 및 경로 이동하기 - 리눅스





그림 15. 루트에 배포된 war 파일 모습 - 리눅스






4. 루트 경로에 배포하기


* ROOT에 war파일 배포할 경우


1. 프로젝트 war파일 생성


- Eclipse에서 프로젝트 우클릭 -> Export - Web - WAR file 선택 -> Next버튼 클릭


- Destination에 war파일 생성될 위치 지정하고, 파일명은 반드시 'ROOT.war'로 입력한 후 Finish버튼 클릭


* 파일명을 꼭 ROOT로 해야하는 것은 아니지만 ROOT가 아닌 다른 걸로 하려면 별도의 설정이 필요함


2. Tomcat 폴더/webapps/ROOT 폴더의 이름을 변경


* Tomcat을 설치하면 위 경로에 ROOT폴더가 있는데 이 폴더가 존재하면 ROOT.war가 압축해제되지 않음


3. Tomcat 폴더/webapps 폴더에 생성된 ROOT.war파일 이동



그림 16. root.war 파일 설치하기


초기에 ROOT폴더는 이름을 변경해서 둔다.



그림 17. 서버 실행하기


bin폴더에 들어가서 startup.bat을 실행한다.


그림 18. 루트 홈페이지 모습


"서버주소:포트"로 홈페이지에 접속하면, 루트 홈페이지로 풀린 프로젝트를 살펴볼 수 있다.



그림 19. 서버 동작 후, 프로젝트 컴파일된 모습


서버 동작 시키고 나서 webapps 폴더를 관찰해보면, ROOT 폴더가 새로 생겨있는 것을 살펴 볼 수 있다.



* 참고자료(References)


1. Spring 프로젝트 배포하기(tomcat 이용), https://attackyourheart.tistory.com/50, Accessed by 2020-09-22, Last Modified 2015-01-20.

2. Tomcat에 war파일 배포하는 방법, https://its-easy.tistory.com/4, Accessed by 2020-09-22, Last Modified 2018-02-13.

반응형
728x90
300x250
[JSP] 4. 우분투 18.04(이하 "리눅스 환경")에서 개발하기?, WAR 배포하기 및 적용
([JSP] 4. Developing on Ubuntu 18.04 ("Linux Environment") ?, Deploying and Applying a WAR)


[개발(Development)]

개인적인 의견이지만, 윈도우 환경에서 개발 하는 것이 정신 건강에 이롭다.
(In my opinion, developing in a Windows environment is beneficial for mental health.)

개발 자체가 전혀 불가능한 건 아니지만 조금 그렇다.
(Development itself is not impossible at all, but a little.)



1. Eclipse WAS 배포파일 만들기(Create Eclipse WAS Distribution File)


* 1단계: File->Export를 클릭한다.
* 2단계: Web을 클릭한 후, WAR File을 클릭한다.

* 3단계: WebProject 위치와 Destination을 지정한 후 Finish를 누른다.
(Step 1: Click File-> Export.)
(Step 2: Click Web, then click WAR File.)
(Step 3: After specifying the WebProject location and destination, click Finish.)



그림 1) Export를 클릭한 후 War 파일을 클릭한 모습
Figure 1) Click on War file after clicking Export



그림 2) Export 화면
Figure 2) Export Screen


2. 웹 서버에 적용하기(Apply to web server)


사용한 명령어의 예는 다음과 같다.
(An example of the command used is as follows.)

$ mv helloWorld.war /var/lib/tomcat9/webapps
$ service tomcat9 restart




그림 3) 명령어 사용하는 모습의 예 - 도도(Dodo)
Figure 3) Example of Command Usage - Dodo

아래는 실제 WAR가 서버에 적용된 것이다. 참고하면 도움이 될 것이다.
(Below is the actual WAR applied to the server. Reference will help.)


그림 4) 웹 사이트에서 war 파일을 읽어온 모습
Figure 4) War file read from web site


3. 호기심이 생길 수 있는 질문 유형


Q1) Eclipse에서 배포 등에 사용되는 Server를 정의할 수 있는가?
      (Can I define a server used for deployment in Eclipse?)



그림 5) Servers의 "No servers are ..."을 클릭하기 전의 모습
Figure 5) Servers before clicking "No servers are ..."



그림 6) 아파치 톰캣이 존재하지 않는 모습
Figure 6) Apache Tomcat does not exist

반응형

+ Recent posts