
* 저는 이번 글에서 스프링 프로젝트가 있다는 가정하에 작성합니다. *
저번 글들을 통해서, 서버에 관한 세팅은 얼추 끝마친 상태일 것이다. 그쵸?
이제 돈만 먹던 깡통도 설정 완료했으니,
당신의 엄청난 아이디어로 만들어낸 그 프로젝트.
이제는 세상에 선보일 때가 되었습니다.
이 글을보고 올렸다가 대박나면 비밀댓글로 꼭 지분 0.01%만 떼어주세요.
저는 언제나 여러분들이 대박나길 응원하겠습니다.
* IntelliJ 기준, maven, 순수 Spring MVC 기준으로 작업한 환경입니다. *
1. IntelliJ WAR 파일 생성하기.
자, 우선 본인 프로젝트가 열려있는 IntelliJ 로 들어가봅니다.
우측 사이드바를 보시면 maven 표시인 빨간색 V 표시가 있을겁니다.

이걸 클릭해서 Maven 관련 설정을 할 수 있는 창을 열어주도록 하겠습니다.
이곳에는 다양한 기능들이 있지만, 우리는 clean, package만 기억해줍시다.

clean을 눌러서 경건한 마음으로 오류가 나지 않도록 기도해줍니다.
개발의 기초는 기도입니다. 아시겠어요?
오류가 안나도록,
오류가 나도 티가 안나도록 개발의 신께 정성스레 기도를 올려보는겁니다.

기도와 함께라면 우린 모두 버그를 이겨낼 수 있습니다.
자 클린하게 비워냈으면 이제 이걸 WAR 파일로 패키징 해볼겁니다.
package 버튼 클릭.

위에 로그를 잘 보시면 WAR 파일이 어디에 저장되어있는지 알 수 있습니다.
보통 target 폴더에 WAR 파일이 저장됩니다.
프로젝트명/target/프로젝트명.war -> 이런식으로 말이죠.
이제는 인텔리제이 안 쓰셔도 됩니다.
폴더에 가서 우린 WAR 파일만 쏙 빼먹고 튀겠습니다.

이제 서버에 올려줄 war 파일을 찾았습니다.
안전한 위치에 복사해주도록 합시다.
항상 프로젝트가 끝났다고 폴더들 정리하면서 삭제하지 말고,
항상 백업해두는 습관을 가지도록 합시다.
제가 이번에 서버 반납하면서
본체 포맷도 진행했는데, 생각해보니 깃에는 mvc(java) 파일들만 올려놨더라구요.
주인장처럼 바보같은 행동하지 말고, 항상 백업하세요.

그 다음으로, 이제 파일명을 ROOT.war 로 변경해줍니다.
왜 ROOT.war 로 파일 이름을 바꿔야할까?
그것은 현재 서버인 리눅스에 깔려있는 톰캣에서
기본적인 설정(default)로 되어있는 값이 ROOT.war로 되어있기 때문입니다.
이거 다른 이름으로 변경하셔도 상관없는데,
귀찮은 설정들이 많아지니까 그냥 ROOT.war 로 통일해서 쓰시는게
정신건강에 매우 이롭습니다.

전 이 작고 소중한 ROOT 파일을 바탕화면에 던져두곤 합니다.
작고, 소중하니까요.
저 같은 버릇 생기시면 상사에게 정말 이쁨받는 개발자가 되실겁니다.
여담이지만, 저는 이런 책을 추천하곤 합니다.
https://www.yes24.com/Product/Goods/17926925
[전자책]유지보수하기 어렵게 코딩하는 방법 - 예스24
개발자로 평생 먹고 살수 있다. 프로그래머들은 언제나 남들이 코드를 쉽게 이해할 수 있도록 작성하기 위해 노력한다. 하지만 남들이 쉽게 이해할 수 있는 코드만 작성한다면 자신의 가치를 높
www.yes24.com
광고 아니고, 읽고 그대로 따라하시면 정말 훌륭한 개발자에 다가가실 수 있습니다.
저도 여기서 영감을 많이 받곤 해요.
(광고 환영합니다. 뒷광고도 잘 받을 자신있어요.)
아무튼, 이제 서버에 war 파일을 전송해주기만 하면 끝나겠죠?
얼른 전송해봅시다.
2. WAR 파일 서버로 전송하기.
다시 개발자들의 필수 교양, 터미널을 켜줍니다.
WAR 파일이 보관된 폴더에서열어도 되고, 원래 기존 target 폴더에서 열어도 상관없습니다.
지금 터미널이 잡고 있는 폴더 안에 WAR 파일이 있으면 됩니다.
밑에 코드를 입력해줍시다.
scp .\ROOT.war root@여러분의 공인 IP주소:/usr/local/instance1/webapps

들어갔는지 이제 확인 해봐야겠죠?
다시 한번 서버로 접속해봅시다.
ssh root@여러분의 공인 IP 주소
비밀번호 잘 입력해서 들어가줍시다.
설마 벌써 pem 키 잃어버리신 분 없으시겠죠?
믿습니다.
우리가 파일을 전송했던 webapps 폴더로 이동합니다.
그 후 ls 명령어를 통해서 파일 목록들을 한번 보겠습니다.
cd /usr/local/instance1/webapps
ls

이제 진짜 실행만 시켜주면 됩니다.
우리가 설정했던 instance1 의 bin 폴더로 이동해보겠습니다.
cd /usr/local/instance1/bin
저번에 우리 설정했었죠?
startup.sh 기억하실거라고 믿습니다.
./startup.sh

혹시 여기서 사진처럼 Permission denied 라고 뜨면,
권한을 주기만 하면 됩니다.
bin 폴더에서 주시면 됩니다.
chmod 700 *.sh
다시 실행을 해보면 톰캣이 정상적으로 실행되는 모습.
역시 권한에 까탈쓰러운 리눅스 터미널 ...

자, 이제 직접 사이트에 들어가보도록 하죠.
http://자신의공인IP:8180/
이 주소로 들어가게 된다면, 이제 어디가서 자랑할 수 있습니다.
물론 도메인을 사거나, 무료 도메인으로 변경해주고 나서
자랑하는 것이 보기는 더 좋겠지만요 !

여기까지 아무런 문제가 없었다면 다행이지만,
이제 다양한 문제가 발생할 수 있습니다.
예를 들어, 톰캣 실행에는 문제가 없는데 브라우저에서 접속이 안되는 경우.
이때는 NCP 콘솔에 들어가서 다 설정을 해줘야합니다....
제가 이걸로 3시간은 고생해봐서 아는데 미리 설정하는게 맘이 편하실거에요.
저번 글들에는 업데이트를 해두겠지만,
이 오류는 대부분 ACG 의 inbound, outbound 규칙설정이 안되어있어서 그렇습니다.
NCP 를 하다보면 아직 자료가 많이 부족해서 찾아도 안나옵니다.
그냥 머리로 직접 박살내야하는거죠 ~!
아무튼 ACG 설정을 마지막으로 끝내겠습니다.
3. 톰캣 오류시, ACG 설정 확인하기.
NCP 페이지에서 로그인 후,
콘솔 창의 서버를 찾아봅시다.
아래쪽에 보면 ACG 라고 적혀있는게 보입니다. 클릭 !

이제 본인의 서버에 맞는 ACG가 생겨있을 겁니다.
저 같은 경우에는 test 로 진행하였기 때문에
'test-default-acg' 이런 이름으로 되어있었습니다.

이제 여기서 본인 ACG 를 선택 후, ACG 설정버튼을 눌러줍니다.

사실 보안상 썩 좋은 방법은 아니지만,
우선 저희는 테스트용이기 때문에 전체 포트를 열어버리도록 하겠습니다.
그리고 그렇게 유명해질 정도가 되면 사람들 고용하거나 해서 미리 보안상 조치를 취합니다 !
나중에 만약 상업용 프로젝트라고 하시면,
따로 글 올려드릴테니까 거기서 포트 설정 부분을 참고해주시면 감사하겠습니다 :)
일단 TCP, UDP, ICMP 전부
접근 소스를 사진처럼 0.0.0.0/0 으로 설정해주시고,
적용포트는 1-65535 까지(ICMP는 제외)
시원한 부산남자처럼 열어주도록 하겠습니다.
inbound, outbound 다 똑같이 시원하게 열어주고 적용해주세요.
이제 다시 홈페이지에 접속해보시면 원활하게 잘 될 것입니다.
* 혹시나 오류가 생긴다면, 댓글로 알려주시면 최대한 도와드릴게요 ! *

우선 다들 처음이라 힘드셨을텐데, 고생 많으셨습니다.
다들, 본인의 소중한 프로젝트를 남에게 보여주고
더욱 편하게 접속하고 공유하기 위해서 여기까지 오셨을텐데,
이것만으로도 서버에 관해서 간단히는 알아볼 수 있었길 바랍니다.
이제 여러분도 다른 사람들에게 자신이 만든 프로젝트를
링크로 해서 보낼 수 있게 되었다는 거죠.
이제 여기에 도메인까지 추가해주면 안성맞춤입니다.
다음 글에서는 도메인을 적용하는 걸 같이 해보고
스프링 프로젝트 업로드 편은 아마 다음편에서 마무리 될 것 같습니다.
이제 얼마 안남았으니, 주인장이 로또 당첨되지 않기를 바래주세요.
당첨되면 글 정리하고 도망갈 예정입니다.
'Server(NCP)' 카테고리의 다른 글
[Server(NCP)] 2. NCP 서버를 만들었다면, 이젠 설정이다. (0) | 2024.08.22 |
---|---|
[Server(NCP)] 1. NCP(Naver Cloud Platform) 서버 생성 1 부터 10 까지 차근차근 따라하기 (2) | 2024.08.07 |