개인 포트폴리오 작성을 위해 단계별로 블로그에 업데이트했다. 나처럼 헤매고 있는 초보 개발자들을 위해 도움이 조금이 되었으면 하는 바람으로 작성하게 되었다. 프로젝트는 동적웹으로 만들었는데, 추가적으로 기능을 차후에 추가하고 싶은 마음이 있어서 했는데 정적웹을 만드는 과정과 큰 차이가 없으므로 참고하면 좋을 것 같다. 프로젝트 개발 환경은 다음과 같다. Gradle 기반 Spring boot 2.5.2 IntelliJ IDEA 2021.1.2 x64 AWS EC2 Ubuntu 20.04 JDK 11, JRE 11 Tomcat9, Apache2 프로젝트 진행 순서는 다음과 같으며, 현재 보안 부분을 강화하려고 계획, 진행중이다. 1단계 Gradle 프로젝트 기본세팅 2단계 프로젝트 구성, Git 연동 3단..
0. 도메인 설정하기 앞단계가 다른 기기에서도 잘 되는 것을 확인했다면 완성된 프로젝트의 도메인을 설정하자. 1. 탄적적 IP 등록하기 이미 배포단계에서 탄력적 IP를 등록했다. 인스턴스 중지 후 다시 시작하더라도 변동없는 고유 IP를 위해 탄력적 IP를 생성, 연결해준다. Spring intializr(Gradle), IntelliJ, AWS EC2를 이용한 포트폴리오 만들기 - 5단계 배포하기(1) 2. 도메인 서비스이용하기 2-1. 도메인 구매하기 도메인 구매를 위해서 가비아, doDaddy 등 사이트를 몇 군데 봤는데, 안정적이고 저렴한 가격에 사용할 수 있는 AWS에서 도메인을 구매하기로 했다. 일반적으로 만원정도 가격대인데 필자가 구매한 .link 도메인은 1년당 6천원대로 저렴해서 구매했다...
1. there was an unexpected error (type=internal server error status=500) 배포를 하고나서, 메일 전송을 실행하는 과정에서 500 에러가 발생했다. 원인을 찾기 어려웠던 이유는 에러메시지가 나타나지 않았기 때문이다. IntelliJ도 개발자도구에도 에러가 없었다. war 파일 생성 후 배포과정에서 메일 전송로직을 잘 수행하지 못하는 것 같아 에러로그를 살펴보기로 했다. 현재 서버환경은 Ubuntu 20.04와 tomcat9 버전인데, 에러로그를 tail -f /usr/local/tomcat/logs/catalina.out 와 같이 tail 명령어를 사용해서 보려고 했지만 적용되지 않았고, 없는 경로 또는 디렉토리라는 문구가 나와서 고민을 많이 했다...
1. 빌드하기 - war 파일 만들기 1-1. 첫 번째 방법 사이드바 이용하기 처음 Spring intializr에서 war 파일을 packing으로 사용한 경우에 해당하는 방법이다. gradle 바에서 war를 선택하면 프로젝트명 경로에서 /build/libs 위치에 war 파일이 생성된다. 1-2. 두 번째 방법 Artifacts 사용하기 처음 Spring intializr에서 jar 파일을 packing으로 사용한 경우에 해당하는 방법이다. 5단계에서 호스팅을 위한 클라우딩 컴퓨터의 기본 세팅을 마쳤다. 이제는 만든 웹프로젝트를 war 파일로 만들어야 톰캣에서 인식하고 호스팅할 수 있다. IntelliJ에서 gradle 프로젝트를 war 파일로 만드는 방법을 알아보자. 참고로 gradle 바에서 b..
0. 웹사이트를 배포하자 일단 생각한 배포 조건은 테스트와 배포자동화가 될 수 있는 서비스와 최근 이슈되는 배포 방식을 사용하는 것이었다. 기존에 이용한 netlify는 정적 웹페이지를 배포 자동화하기 좋은 조건으로 되어있었다. 본 포트폴리오는 메일 전송 등의 동적 사이트이기 때문에 AWS 프리티어인 EC2를 이용한 호스팅 방법을 적용했다. AWS를 선택한 이유는 AWS를 사용하는 회사도 많고 클라우딩 컴퓨터를 이용한 호스팅을 하고 싶었기 때문이다. 또 설치가 빠르고 관리가 편하다는 점이 마음에 들었다. 그리고 과금제에 따른 요금부과를 피하면서 EC2 를 이용해 보자. 1. AWS 기본 환경 세팅하기 1) Ubuntu Server 20.04 LTS (HVM), SSD Volume Type 64bit로 설..
1. XXS 방지 스크립트 공격 방지처리를 위해 textarea 값을 변경 저장해준다. 기존 포폴의 경우, textarea 가 메일 전송단에 있는데 이부분 설정을 위해, 메일 전송 버튼을 누른 경우 보안처리를 해준다. 2. JUnit 테스트 코드 작성하기 메일 전송부분의 테스트 코드를 작성했다. 3단계와 연장선상에 있는 부분이지만 유지, 보수단으로 고려해서 4단계에 작성했다. 결과적으로 테스트가 모두 완료되면, 다음과 같이 설정한대로 메일이 전송됨을 알 수 있다. + 에러 해결하기 테스트 실행시 메일은 잘 전송되는데, 원래 코드의 Controller단 메서드를 실행하는 과정에서 실패문구가 떴다. 내용을 보니 NullPointer 발생이다. 아무래도 기존 메서드 내 파라미터 값을 받는 부분(파라미터 값 중..
0. 메일을 보내보자! 웹페이지 방문시 많이 사용되는 서비스인 Contact us 와 같은 페이지 구성의 포폴 추가를 위해 메일 기능을 추가했다. 많은 시행착오가 있었어서 다시 정리하면서 기억해둬야 겠다. 1. thymeleaf 를 이용한 mail 전송처리하기 mail 전송처리하기를 하면서 정말 많은 에러가 있었는데, 문제의 원인을 다른 곳에서 찾고 있었던 것이 많은 시간을 소비하게 만들었다. 발생했던 에러에 대해서는 아래 구분선 이하에 작성해두었다. 여기서는 기본적인 mail 전송 처리에 대해 알아보자! 1-1. 의존성 추가 세팅 환경이 gradle인 관계로 mail 관련 라이브러리 추가를 위해 .gradle에 아래 코드와 같이 의존성을 추가했다. starter-mail : 스프링에서 제공하는 자바 메..
0. 의존성 라이브러리 Gradle은 의존관계에 있는 라이브러리를 끌어오는데, 1단계에서 구축된 스프링부트 라이브러리는 크게 3가지 종류이다. 1. spring-boot-starter-web 2. spring-boot-starter-thymeleaf 3. spring-boot-starter(공통) spring-boot-starter-logging > logback, slf4j 별도의 테스트 라이브러리는 spring-boot-starter-test 인데 junit, mockito, assertj, spring-test 가 있다. 이와 관련해서는 별도로 다시 정리할 예정이다. 1. Main Page 만들기(View 단) 경로의 src > main > resources > static > index.html ..
- gradle build
- 북클럽
- gradle
- EC2
- 독서후기
- 노마드코더
- LifecycleException
- JIRA
- 정보처리기사 필기
- 배포
- 노개북
- jdbc
- spring
- git연동
- 오늘의코딩
- 기술블로그
- 개발도서
- 정보처리기사 실기
- ubuntu
- intellij
- putty
- java
- 실용주의프로그래머
- filezila
- 호스팅영역
- IT 5분 잡학사전
- AWS
- 웹페이지만들기
- 정보처리기사
- SQLD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |