포트폴리오 93

무중단 배포(nginx)

1.nginx -> springboot 프록시 테스트ec2에 nginx 설치ngingx config에 80포트 -> 8081 스프링부트 포트로 전달profile API 추가 2. 8081 8082 API 만들기profile API 테스트SecurityConfig test -> antmatcher가 없으니 별도 진행xnginx에 로케이션 변수 넣어주기3. 배포 스크립트 작성profile.shstop.shstart.shhealth.shswitch.shpom.xml에 자동 버전 변경 추가4. 테스트  sudo service nginx start-> ec2에서는 정상 실행되지만 아무것도 안 뜬다-> ec2 인바운드 규칙 추가-> nginx는 기본 포트가 80도메인이므로 포트번호 안쓰고 접속 -> 엔진엑스 메인..

Travis CI + S3 + Codeplay

1. Travic CI 가입(서드파티 활성화) 2. travis.yml 추가 -> 깃헙과 트래비스 연동깃헙 푸쉬시 travis 반응 확인3. travis- AWS s3 연동IAM 발급 (액세스 키 별도생성)travis ci에 키 등록(.travis.yml에서 사용가능)S3 버킷 생성.travis.yml에 버킷 추가(git push -> travis CI) -> "s3"에 zip 생성되는 흐름 확인4. CODEDEPLOY EC2가 받을 수 있게 IAM 역할 추가ec2 터미널에서 codedeploy 에이전트 설치codedeploy -> ec2 권한codedeploy, 그룹 생성 + ec2태그 매치 5. 조립appspec.yml 에 ec2 경로 설정.travis.yml에 codedeploy provider추가..

EC2 배포

메인서브1. EC2에 git 설치maven / java / javac 추가 설치 2. 배포 스크립트 만들기gradle -> maven 컴파일 명령어 변경nohup 오류 처리java 환경변수 / sudo us 권한git pull부터 전부 하지말고 디버깅하듯이 한줄로 배포 검증하기  3. 스프링부트 프로젝트로 RDS 접근  - 1. 배포 스크립트 작성책에서 gradle -> maven은 빌드가 아닌 package임 주의 원본 참조 : https://velog.io/@shawnhansh/AWS-EC2%EC%97%90-SpringBoot-gradle-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8jar-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0#!/bin/bashREPO..

터미널 명령어

(공통)mkdir ~/app/cd ~/apprm엘엘 -> 현재 디렉토리 chmod +x (파일) -> 퍼미션 부여 (ec2에 깃)sudo yum install gitgit —versiongit clone (깃헙 https 리포지토리 주소)git pull (vim)vim ~/ -> 자동 만들어짐파일 내부 s -> 편집 모드esc -> 보기 모드:wq -> 저장 후 빠져나옴:q -> 그냥 빠져나옴ec2에 java (maven)sudo wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.reposudo sed -i s/\$releasever/6/g..

EC2 RDS 연결

1. RDS 인스턴스 생성 EC2와는 연결 바로 하지 않고 나중에 하기  2. 파라미터 셋업  편집에서 time_zone 맙추기  슬래쉬로 해야 완성  Character 6개 : utf8mb4 -> 이모지 쓸수있게 변경collation도 변경해줘야횜 파라미터 그룹 후 별도 적용해야함 수정 -    https://repost.aws/ko/questions/QU7w-RT1AHRr6JiZPrsteGHQ/rds-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-time-zone-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0-%EB%B3%80%EA%B2%BD%EB%B6%88%EA%B0%80 https://superuser.com/questions/635269/cant-find-..

EC2 개설

1. 인스턴스 생성2. elastic ip 연동해주기3. pem키 다운 및 config 설정4. 터미널에서 실행 -> ec2모드 진입5. 자바 설치  6. 타임존 맞추기  7. ip 대신 HOSTNAME으로 표시되도록 설정 ->  vim -> s를 눌러야 insert 모드로 진입함맥북에서 파일을 터미널에 끌어오면 주소 복사됨pem key로 connecting할때 해당 메세지는 오류가 ㅏㅇ님 커넥션 등록 후 한번 더 실행할것 비둘기는 아니다.

shop 3회차

1)이니셜라이저 다운인텔리제이에서 열고 롬복 설치 확인application.properties 에 application name 및 port 설정 test hello controller 작성 후 application 돌려서 체크(@RestController로 한다) 롬복 확인롬복 @G / @S / @ToStringuserDto에 age name 넣고 jason으로 반환되는지 확인실행하면 Target resources에 userDto가 생긴다 - 2) SQL 설치 및 연동    https://ee2ee2.tistory.com/entry/MySQL-MySQL-%EC%84%A4%EC%B9%98%EC%8B%9C-3306-Port-Error-The-specified-port-is-already-in-use [Da..

컨트롤러 - 익셉션시 에러메세지를 넣어주는 메서드와 아닌것

JS에서 RequestBody로 들어오는 요청 / DTO는 : BR에러시 메세지를 담아서 직접 처리해준다 또 실제 서비스 사용하여 오더진행시 익셉션시에도 모델 필요없이 new ReponseEntity에 에러메세지(e.getMSg or 그자리에서 생성)를 넣어 반환한다 (멤버폼 제출시) - @Valid DTO로 검증되는 BR에러는 그냥 폼 자체에서 에러메세지 처리하므로 다시 폼 리턴만 해주면 된다 - 세이브멤버 Exception발생시 e.getMessage를 model에 넣어준다 - (로그인에러시) - 모델에 에러메세지 만들어서 넣어준다 - 다시 멤버로그인폼 리턴 - (오더) - BR에러 발생시 -> 스트링빌더에서 겟필드에러 sb에 담아서 -> 모델 필요없이 RE - 오더서비스 오더 사용시 : 모델 아니고..

컨트롤러- 페이지 사용하는 3개 메서드 비교

만들어진 것의 데이터는 DB에서 가져와서 뷰에 공급해야하므로 당연히 model은 세 메서드 모두 항상 필요 페이지 기반 보고이므로 Optional page 역시 3개 모두 필요 principal ItemSearchDTO @PathVariable 아이템매니지 어차피 admin만 이용하는 문서이므로 X 모두 보여주고, 필요한 것 필터해야하므로 필요 메인 모든 아이템을 보여주므로 필요X 모두 보여주고, 필요한 것 필터해야하므로 필요 메인은 왜 안달렸나? 오더히스토리 principal.getName()으로 주문을 특정해야 하므로 사용 단일 사용자의 모든 주문을 보고해야하므로 필요X 쿠팡처럼 필터시 필요 -> 나중에 시간나면 리팩터링

기능(메서드) 기반 해석

(흩어져서 기능 처리) 컨트롤러 메서드는 사용되는 기능을 전부 커버하는 것은 아니고, 몇개는 뷰 페이지에서 자바스크립트를 사용, 체크박스, 서브밋 버튼 등으로 직접 처리되고 몇개는(주로 로그인 검증 관련 + 사용하지않을 페이지 뷰 리졸버) securityConfig에서 처리된다. - (나머지 컨트롤러 메서드는 19개) -> 외운다 멤버 - 회원가입폼, 폼제출, 로그인폼, 로그인에러폼 / 1~4번 메인 - 메인, 아이템, 페이지뷰 / 5번 오더 - 아이템 직접주문, 오더 캔슬, 오더히스토리 / 6 7 8번 카트 - 카트 페이지, 카트 아이템 주문, 카트에 아이템 넣기, 아이템 삭제, 아이템(수량) 업데이트 / 9 ~ 13번 아이템 - (어드민) 생성폼, 세이브제출, 수정폼, 업데이트제출, 아이템 관리페이지..