[3] AWS
1. public access
2. parameter 그룹만들고
3. 적용
[RDS 세팅]
- 좀비다
- 종료해놔도 2주지나면 살아나서 비용청구 한다.
1. 로그인
2. region 확인
3. RDS
> 대시보드
>> 표준생성
>>> 마리아 DB , 프리티
>>>> 자격증명설정 (중요함)
>>>> 자체관리, 마스터 암호 : Busan1234
>>>> 생성
4. IntelliJ 프로젝트 열어라
> 데이터베이스
>> 데이터베이스가 생성이 되면 엔드포인트가 생긴다.
>>> 이 엔드포인트가 JDBC URL에 들어가는 문자열
>>>> 기본적으로 3306번으로 만들어지는데 연결이 안된다.
>>>>> 보안설정부터 바꿔줘야한다.
>>>>> 구성
>>>>> 날짜나 시간
>>>>>> 이걸 적용을 해주고 리스타트를 해줘야 한다.
>>>>>> (지금은 연결안됨)
>>>>>>>연결하려면 이걸 사용해야한다.
>>>>>>>엔드포인트 복사
database-1.cgde8sjkiuwhttp://m.ap-northeast-2.rds.amazonaws.com
- 안됨.
> 보안 > EC2 Security Inbound 확인 잠깐하고
>> 아마도 아래 상황으로 인해 들어가지지않는것
>> 인스턴스 수정
>>> 연결/추가구성
>>>수정하고 반영하는 시간있음
- 수정이 되었다해서 연결하면 안된다. ( 왜? 생각보다 시간이 많이 걸린다 )
(S3에 올려놓으면 백업을 다시 받을 수 있다) - 비용이 청구된다.
- 인바운드 규칙 추가
>>>> 어쩃든 다시 연결 프로젝트에서 DB
>>>>>success
5. DB 데이터 체크
> select now();
>> 시간체크 ( 안맞다 )
>>> DB를 체크할때는 두가지를 확인해야한다. 시간값
6. 시간값 쓰는방법
- 시간설정을 쓰는방법은 여러가지가 있다.
미국, 한국, 아르헨티나에서 한개의 DB를 사용한다면?
> 시간대가 다 다르다
해결법
1. 나는 어떤 시간을 보낼거야 하고 사용처에서 바꿔서 보내는 방법
2. DB에서 시간을 바꿔버린다 ( 문제가 커짐 )
* 회사에서 가장 많이 사용하는 query
* 회사마다 날짜 DB가 따로있다. ( 공휴일, 창립기념일, 행사 등등은 업무시간에서 빼야하기에 테이블에 날짜 데이터가 기록이 된다. )
6. 그래서 타임존이라는 것을 사용한다.
serverTimezone=Asia/Seoul
방법 1)
방법2) 이렇게했을때도 안되면 설정자체를 바꿔줘야한다.
7. db새로만들어서 진행
id : springdbuser
db : springdb
8. serverEx1
강사님이 만들어놓으신 프로젝트 > aws db와 연결 (yml파일 수정)
9. TimeRepository
- MyBatis로 사용하겠다. nativeQuery = true > 마리아 DB에 맞는 SQL을 사용해야 한다.
-> 이렇게 되면 JPA목적자체가 DB의 독립적인 개발이 목표인데 이렇게 되면 종속적인 개발이 된다.
10. TimeController
@RestController
@RequestMapping("/api3/time")
@RequiredArgsConstructor
@Log4j2
public class TimeController {
private final TimeService timeService;
@GetMapping("/now")
public ResponseEntity<Map<String,String>> healthCheck() {
return ResponseEntity.ok().body(Map.of("time", timeService.getTime()));
}
}
api3/time/now를 호출하면 시간이 떠야 한다.
11. 그래도 안되면 DB설정을 바꿔야 한다.
RDS 설정 > 파라미터 그룹 > 생성 > 입력
12. 검색
- Dynamic으로 되어있다.
- 수정
13. char 검색해서 나오는것들
- utf8 모두 입력해주기
14. 적용
프로젝트 적용하고 select now()로 적용되었는지 확인
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 리액트 배포를 하면 npm run build를 한다.
> dist폴더 만들어진다 ( 최종 결과물 )
2. nginx, apache(http)로 실행
> 이것으로 가려면 config설정을 해줘야한다.
>> 문제점 : 개발을 하는데 매번 이 설정을 신경쓸 수가 없다.
>>> 해결 : 개발을 할때는 개발할때는 이 것 없이 npm run dev만 가자
>>>> 이렇게 해서 라우팅 설정해서 잡아서 가면 동작안해 . 왜?
>>>>> 하나의 설정만 바꿔주면 된다.
3. 강사님 프로젝트에 vite.config.ts (react_layout)
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
// https://vite.dev/config/
export default defineConfig({
plugins: [react()],
server:
{
host: "0.0.0.0", // 모든 네트워크 인터페이스에서 접속 허용
port: 5173, // 기본 포트 (변경 가능)
},
})
- 이게 없으면 로컬호스트에서만 된다.
- https로 서비스 해야하는 애야 라고 할때 server: host, port설정을 해놔야 한다.
> 이게 없으면 EC2에올려봐야 말짱 도루묵이다.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
1. EC2에 인스턴스 하나 만든다.reactEx
2. 인스턴스 연결
3. 실행
sudo yum install git -y
git config --global user.name "Kimboris"
git config --global user.email "zlas2345@gmail.com"
설정하고 node.js받는다.
sudo yum install -y nodejs
git clone https://github.com/zk2840174/react-layout.git
cd react_layout
npm install
> 설정이 된거다.
npm run dev
> network에 외부에서 접속가능한 IP가 뜬다.
*EC2는 22번 포트밖에 안되어서 5173번 포트를 열여놔야 한다.
눈으로 확인하는 ㅂ아법
1. EC2에서 확인
2. 로드발란서
3. http, (4)https 확인
4. 보안 인바운드에서 5173추가하고 퍼블릭에서 확인
5. 로드발란서에서 확인하려면 대상그룹이라는것을 만들어 줘야한다
로드발란서 / 대상그룹 (현재 포트번호 5173)
80포트와 8080포트 분리 > 80포트로 들어오면 리액트 써
> 잘작동되는지 로드발란서 DNS복사 > 브라우저에서 들어가면 뜨는지 호가인
>> 이렇게 하면 별도의 nginx 없이도 서비스 가능
>>>EC2에서 git pull로 땡겨와서 npm run dev하면 서비스가 된다.
6. 도메인 구입후
가비아 도메인에 들어가서 보면 네임 설정을 해놓지 않으면 가비아로 되어있다. 네임서버
7. 로드발란서 앞에 Route53이 붙는다.
호스팅 영역 > 호스팅 영역생성
> 도메인이름 : 구매한 도메인 이름
>>생성
8. 생성하면 4개의 이름 서버가 뜬다.
> 이 네개의 값을 복사해서 가비아에 가서 네임서버설정을 바꿔줘야한다.
>>인증번호 받고 적용 ( 지금부터 몇시간부터는 연결이 안된다. )