ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [AWS EC2]Ubuntu에 Spring Project 셋팅하기
    Infra/aws 2020. 4. 24. 11:08

    자신의 Project가 Spring Boot Project라면 mvnw 파일이 프로젝트 생성시 같이 만들어져 있을것입니다.

    이때는 github에서 내려받을때 프로젝트 폴더안에 mvnw파일이 있으므로 따로 Maven을 설치 안하셔도 됩니다.

     

    mvnw는 MavenWrapper의 약자로써 Maven이 설치되어 있지 않은 환경에서도 Maven을 사용할 수 있도록 해주는 도구입니다.

    장점으로는 Maven의 버전을 알아서 관리해준다는 점입니다.(버전 정보 명시 안해주면 최신버전으로 설정해줌)

     

    하지만 Project를 Spring Legacy Project로 만들었다면 mvnw파일이 없을것입니다.

    그 때는 Maven을 설치해줘야 프로젝트 빌드를 할 수 있습니다.

    pom.xml이 저장되어 있는 위치에서 다음과 같이 빌드명령어를 입력합니다.

    $ mvn clean package          # 메이븐 설치했을때 사용
    $ ./mvnw clean package       # 메이븐 wrapper 사용 

     

    만약 처음 빌드한거라면 시간이 좀 오래 걸립니다.

    만약 빌드가 다 끝났다면 위의 화면처럼 BUILD SUCCESS가 뜰 것 입니다.

     

    이제 빌드를 하면 target 폴더가 생겼음을 확인할 수 있습니다.

    target 폴더안에는 확장자명이 war 또는 jar 인 파일이 생성된 것을 볼 수 있습니다.

    제 프로젝트 이름은 KH-cafe-erp 입니다.

    jar 파일 같은 경우에는 자바 명령어로 실행을 시킬 수 있습니다. (임베디드 톰캣에서 자동으로 구동됨)

    # java -jar {프로젝트이름}.jar
    $ java -jar www-1.0.0-BUILD-SNAPSHOT.jar

    war 파일 같은 경우에는 톰캣을 별도로 설치해서 그 안에서 실행을 시키면 됩니다.

    저는 war파일을 실행시키기 위해 Tomcat에 프로젝트를 넣어주도록 하겠습니다.

     

     

     

     

    Tomcat에 넣은 뒤에는

    start.sh 명령어로 톰캣을 실행시킬 수 있습니다.

    톰캣을 실행시킨뒤 자신의 URL 주소에 8080포트를 추가해서 브라우저에서 접속해봅니다.

     

    하지만 접속이 안될것입니다.

    기본적으로 8080포트는 방화벽으로 막혀있습니다.

    따라서 8080포트를 열어줘야 합니다.

     

    우분투에서 방화벽설정을 하여 8080포트를 개방해주시면 됩니다.

    기본적으로 어떤 포트가 외부에서 접근가능한지는 다음 명령어로 알 수 있습니다.

    $ sudo ufw status verbose
    
    # 만약 Status: inactive가 뜬다면 ufw(우분투 방화벽)를 사용가능하도록 추가 설정
    $ sudo ufw enable
    $ sudo ufw status verbose

     

    만약에 8080을 그대로 두고 다른 포트를 사용하고 싶다고 하시면

    톰캣폴더 안의 server.xml에서 포트를 수정하시면 됩니다.

    저는 포트번호를 8089로 바꾸고 톰캣을 실행시키도록 하겠습니다.

     

     

    먼저 톰캣이 설치된 경로로 이동합니다.

    톰캣폴더안에 conf라는 폴더를 찾아서 이동합니다.

    그곳에 server.xml이 있습니다. sever.xml 파일을 열어서 수정하겠습니다.

    $ vi server.xml

     

    먼저 :se nu 명령어를 이용해 숫자가 보이도록 합니다.

    그 뒤 방향키를 이용하여 아래로 내리다 보면 69번째 줄 정도에 port가 8080으로 되어있는 모습을 볼 수 있습니다.

    해당 포트를 8089로 바꾸도록 하겠습니다.

     

    그리고 두번째로 해야할 일은 Context 객체를 추가해야합니다.

    Context객체 안에 docBase를 다음과 같은 경로로 수정해줍니다.

    webapps 다음에 오는 경로는 war파일의 이름입니다. 확장자만 떼서 붙여줍니다)

    그리고 저장을 한뒤 나가줍니다. :wq

    아래와 같은 명령어로 수정부분을 업데이트 합니다.

    $ sudo source server.xml

     

     

     

    이제 톰캣을 한번 실행해보도록 하겠습니다.

    톰캣 실행명령과 종료명령은 tomcat9폴더 안의 bin 디렉토리안에 있습니다.

    $ ./startup.sh

    여기까지 완료되면 ip로 서버가 정상적으로 돌아가는것을 확인하실 수 있습니다.

    만약 안된다면 다음과 같은 경우를 의심해봐야합니다.

     

    먼저 netstat -nlp 명령어를 이용해서 8089포트가 돌아가는지 확인합니다.

    $ sudo apt install net-tools
    $ netstat -nlp

    만약 이 안에 8089포트가 없다면

    서버가 정상적으로 돌아가지 않고 있다는 것입니다.

    그럴때는 log파일을 살펴봐야 합니다.

     

     

    log파일은 logs폴더에 catalina.out파일을 확인하시면 됩니다.

    만약 그 안에서 다음과 같은 오류가 날경우 메이븐 빌드가 잘못되었을 가능성이 높습니다.

     

     

    이럴때는 다시 webapps에서 war파일을 삭제하고 프로젝트를 다시 빌드해서 webapps에 넣으시면 됩니다.


    References

     

    https://www.youtube.com/watch?v=XmaW6EyY5QI&list=PLqaSEyuwXkSppQAjwjXZgKkjWbFoUdNXC&index=6

    https://www.hanumoka.net/2018/05/21/centOs-20180521-centos-deploy-spring-war/

    댓글

Designed by Tistory.