본문 바로가기

Infra

(71)
[AWS] MongoDB EC2 직접 설치 및 관리 Docker 로 하니까. 디비는 아무래도 백업이나 등등이 귀찮다.개발용으로는 상관없지만, 실제 서비스 용도이다 보니까 리눅스 직접 설치가 좀 더 맞아보인다. 도커라는 컨테이너 개념은 좋지만, 아무래도 컨테이너가 삭제되기 쉬운 단점이 있어 좀 아쉽다  일단 직접 설치해보도록 하자 1) MongoDB 설치curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo tee /usr/share/keyrings/mongodb-server-key.ascecho "deb [signed-by=/usr/share/keyrings/mongodb-server-key.asc] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 mul..
[Terraform] AWS 세팅 AWS 세팅을 자동화 해보자자동화라기 보다는 Iac 도구로 형상을 유지한다고 보면 될 것 같다.테라폼 사용을 위한 로컬 세팅은 아래 글에서 참고해서 진행하자https://devboi.tistory.com/777  1. AWS 계정 accesskey생성* IAM 을 접속하면, root 계정 정보를 볼수 있다.* 액세스 키를 생성한다. 개인적으로 루트 사용자에게 활성 액세스키를 등록하여, 해당 액세스키로 연결한다.IAM에서 서브 계정을 생성, 정책연결을 하고, 해당 계정의 액세스키를 생성하여 접속 해도되지만 귀찮으니 루트로 한다.1-1. 결제 및 비용 관리 클릭한다1-2. 액세스키를 생성 하고, 정보를 잘 저장해둔다. 2. AWS 계정 연결2-1. aws configure2-2. 1번에서 생성한 액세스 키 ..
[TERRAFORM] 테라폼 시작을 위한 설정 1. 설정terraform 설치 (mac기준)brew install terraform aws-terraform 설정 1) aws cli 설치curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"sudo installer -pkg AWSCLIV2.pkg -target /aws --version 오류 발생시 (파이썬 환경세팅)brew install --build-from-source python@3.12   2) aws 설정aws configure aws > console > 사용자root 권한으로 accessKey,secretKey 생성    terraform 로컬 공개키 생성 및 저장ssh-keygen -t rsa -b 2048 -f ~/...
AWS route53 + let's encrypt 도메인 https 세팅 1. Route 53 도메인 * Aws Route53 접속 > 호스팅 영역 생성하기 > 네임서버 생성* 도메인 구매처 > Route53에서 발급받은 NS레코드(네임서버) 정보 입력* Route53 A레코드 생성 (값에 ec2 ip 값 입력하기) -> (앞에 별칭 www와 빈값으로 2개해야 군말이 없음) 2.nginx 설치 sudo touch /etc/apt/sources.list.d/nginx.listecho "deb http://nginx.org/packages/ubuntu/ bionic nginx" | sudo tee -a /etc/apt/sources.list.d/nginx.listecho "deb-src http://nginx.org/packages/ubuntu/ bionic nginx"| su..
[AWS] RDS 관련 한글 인코딩 1) 테이블을 이미 만들어 버렸을경우이때는 사실 방법이 없다. 하나씩 인코딩 설정을 해주는 쿼리를 날려야한다. ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8;  2) 테이블을 만들기 전인 경우RDS의 파라미터 그룹을 설정해주면된다.1) RDS > 파라미터 그룹 > 파라미터 그룹 생성을 한다.2) 생성한 파라미터의 기본값들을 수정해준다.* character 검색 > 아래 항목들을 UTF-8로 지정해준다. utf8 또는 utf8mb4로 해준다. 차이는 이모지 가능여부이다. * collation 검색 > 아래 값들을 utf8_general_ci로 설정한다.-collation_server-collation_connection
[AWS] Github Actions로 NextJs,EC2,Docker CI/CD 구축 github action을 통해 브랜치에 푸시가 되면 자동으로 배포가 되도록 구축해보자  1. Git hub access-token 발급Settings > Developer Setting을 통해, 아래 Classic Token을 생성하고, 잘 보관해 둔다. 2. 자동화 원하는 Repo의 secret key 연동 원하는 Repo > Setting > Secrets and variables> Actions 진입, 아까 만든 access token을 바탕으로2번째 이미지처럼 키를 생성    3. Runner 설정  New self-hosted runner 클릭 해당 하위에 나오는 명령어를 ec2에 입력 * shaSum 오류 발생시 패키지 업데이트sudo yum install perl-Digest-SHA -y ..
[AWS] Nginx + LetsEncrypt(https) + NestJs + Flutter web 개인적으로 사용하고 싶어서 만든 채팅 서비스가 있다.아키텍처에 대한 구조는 아래와 같다.  그렇게 복잡하지 않다.NestJs가 소켓처리와 MongoDb와의 통신을 통해 데이터 API 역할을 3000, 8080 포트로 나눠서 지원하고Flutter web 은 80포트로 왔을때 처리되는 static Resource로 서버에 위치에 있다. 물론, 여러개의 서버를 나눠서 두는 방법도 있지만, 이건 사용자 트래픽이 몰리는 경우 고려하도록 하자   1) nginx 세팅EC2 제일 앞단에서 Nginx 를 둔다.80,443에 대한 인증서 처리 및 리버스 프록시 설정에 대한 내용들을 다룬다 1-1) /etc/nginx/site-avavilbles/defaultserver { listen 80 default_server; ..
리버스 프록시와 프록시 차이 은근히 잘 모르는 주제이다. 알더라도, 정확하게 물어보면 잘 모르더라 그래서 정리를 해서 누가 물어보면 이거봐라 라고 하려고한다. 프록시란 여러 시스템 용어이다. 리눅스나, 인프라 단 뿐 아니라 JPA, 애플리케이션에서도 쓰인다.쉽게 얘기하면 "대리수행자" 이다. 이번 포스팅에서는 예로 인프라에서 알아보자 포워드 프록시는 위와 같다. 리소스 서버와 클라이언트 서버가 분리되어있다고 가정하고해당 프록시 서버가 대신 해당 서버와의 통신을 수행하여, 클라이언트의 요청을 수행하는 것이다.클라이언트의 보안이 필요한 경우, 해당 방식을 주로 사용한다.왜냐면 리소스 서버에서는 프록시를 통해서 값을 전달 받고 전달하기떄문에 클라이언트의 정보에 대해 추적하기 어렵다,   자, 그러면 리버스 프록시는 어떤것이냐? 주로 외부..