.ebextebsions에서 config파일로만 하다가 너무 안되서 SSH 펨키발급하고 버전확인해봄
SSH접속하려면 pem키부터 발급해야함
-----
아마존 EC2가서 키생성하면 pem키가 나옴. 지피티가 하란대로하니까 잘됨. (빨간건 내가 추가질문한 내용을 같이 정리한거)
1. SSH 키 페어 생성 (필요한 경우)
- EC2 콘솔에서 키 페어 생성:
- AWS Management Console에 로그인합니다.
- EC2 콘솔로 이동합니다.
- 왼쪽 메뉴에서 "Key Pairs"를 선택합니다.
- "Create Key Pair"를 클릭하고 이름을 입력한 후, PEM 형식으로 키를 생성합니다.
- 생성된 키 파일을 안전한 곳에 저장합니다. 이 키 파일을 사용하여 인스턴스에 SSH로 접속할 수 있습니다.
- 생성한 키를 바로 사용하면 too open 에러가 발생하니 권한설정해줘야함. ("It is required that your private key files are NOT accessible by others. This private key will be ignored.")
- 파일 권한 설정: .pem 파일에 적절한 권한을 설정하여 다른 사용자가 접근할 수 없도록 합니다. 일반적으로, 파일의 권한을 400으로 설정합니다.
chmod 400 ~/.ssh/your-key-file.pem
2. Elastic Beanstalk 환경에 SSH 키 설정
- Elastic Beanstalk 콘솔에서 환경 선택:
- AWS Management Console에 로그인합니다.
- Elastic Beanstalk 콘솔로 이동합니다.
- SSH로 접속하려는 애플리케이션 환경을 선택합니다.
- 환경 설정 편집:
- 왼쪽 메뉴에서 "Configuration"을 클릭합니다.
- "Security" 카드에서 "Modify"를 클릭합니다.
- "EC2 key pair" 섹션에서 이전에 생성한 키 페어를 선택합니다.
- "Apply"를 클릭하여 변경 사항을 저장합니다.
3. 인스턴스에 SSH로 접속
- 인스턴스 ID 확인:
- Elastic Beanstalk 콘솔에서 환경 페이지로 이동합니다.
- "Instances" 섹션에서 인스턴스 ID를 확인합니다.
- 인스턴스 ID를 클릭하여 EC2 콘솔에서 해당 인스턴스의 세부 정보를 확인합니다.
- 인스턴스에 SSH 접속:
- 터미널을 열고 다음 명령어를 실행하여 SSH로 접속합니다. [your-key-file.pem]은 생성된 키 파일의 경로이고, [ec2-user@your-instance-public-dns]는 EC2 인스턴스의 퍼블릭 DNS 이름입니다.
ssh -i /path/to/your-key-file.pem ec2-user@your-instance-public-dns
EC2 인스턴스의 퍼블릭 DNS 이름을 확인하는 방법은 다음과 같습니다:
1. AWS Management Console을 통한 확인
- EC2 콘솔로 이동:
- AWS Management Console에 로그인합니다.
- 상단 메뉴에서 "Services"를 클릭한 후 "EC2"를 선택합니다.
- 인스턴스 목록에서 인스턴스 선택:
- 왼쪽 메뉴에서 "Instances"를 클릭하여 인스턴스 목록으로 이동합니다.
- Elastic Beanstalk 환경과 연결된 인스턴스를 찾습니다. 인스턴스 ID를 통해 해당 인스턴스를 식별할 수 있습니다.
- 퍼블릭 DNS 확인:
- 선택한 인스턴스를 클릭하여 세부 정보 페이지로 이동합니다.
- 아래쪽의 "Description" 탭에서 "Public DNS (IPv4)" 항목을 찾습니다. 이 항목에 EC2 인스턴스의 퍼블릭 DNS 이름이 표시됩니다.
----
접속성공하면 터미널에 이렇게 뜸
Amazon linux 버전 알아봐야하니까 명령어 입력
cat /etc/os-release
2023버전이다. 드디어 알았음
"Amazon Linux 2023 버전을 사용하고 있는 경우, PostgreSQL 13을 설치하는 방법은 약간 다를 수 있습니다. Amazon Linux 2023에서는 dnf 패키지 관리자를 사용하여 PostgreSQL을 설치할 수 있습니다." 지피티 said.
이제진짜 설치할수있음. 업데이트먼저 해주기
sudo yum update
amazon linux버전이 새로나왔다고 함.. 하라는대로 업데이트를 해주자
sudo dnf upgrade --releasever=2023.5.20240730 # 중간에 다운로드할거있다고 물어봄. y 입력
yum repolist # 레포지토리 아이디, 이름 목록 확인
sudo yum search postgresql
이제 드디어 설치할 postgresql 을 알아보자. 이거 치니까 난 15버전이 있다고 뜸
더 길게 쭈루룩 나옴
이제 진짜.진짜 설치해준다
sudo yum install -y postgresql15 postgresql15-server
sudo /usr/bin/postgresql-setup --initdb # 초기화해주기
상태체크. 죽어있다고 뜸(방금설치했으니까)
systemctl status postgresql
sudo systemctl enable postgresql
systemctl status postgresql # 다시 상태체크하면 살아있다고 뜨는지 확인해보자
잘되고있음
매번 이렇게 원격접속해서 명령어칠수없으니까 ebextensions 폴더내에 스크립트로 설정해줌. 환경 업데이트할때마다 실행될것들
*.ebextensions 폴더에 있는 구성 파일은 Elastic Beanstalk 환경을 처음 프로비저닝하거나 환경을 업데이트할 때만 실행됩니다. EC2 인스턴스가 리부팅될 때마다 자동으로 실행되지 않습니다. .ebextensions 구성 파일은 Elastic Beanstalk 환경의 초기 설정이나 업데이트 시 필요한 패키지 설치, 환경 변수 설정, 파일 배치 등의 작업을 자동화하는 데 사용됩니다. 만약 특정 작업을 인스턴스가 리부팅될 때마다 실행하고 싶다면, EC2 인스턴스의 사용자 데이터 스크립트나 시스템 초기화 스크립트를 사용하는 것이 적절합니다. *
아 .ebextensions 는 꼭 폴더 가장 최상단루트에 있어야 함.
(+) 현재 nestjs로 개발중
폴더 구조는 대략 이런식(yaml 신택스처럼 작성하는데 확장자가 config로 해야한다고함...... 이거때매 에러좀남 ㅠ)
.ebextensions
- 01_postgresql.config
- 02_redis.config
- env.config # 환경변수 설정해주는 파일
src
- main.ts
- app.module.ts
...
README.md
tsconfig.json
...
// 01_postgresql.config
commands:
yum_update:
command: "sudo yum update"
dnf_upgrade:
command: "sudo dnf upgrade -y"
yum_repolist:
command: "yum repolist"
yum_search_postgresql:
command: "sudo yum search postgresql"
install:
command: "sudo yum install -y postgresql15 postgresql15-server"
init_db:
command: "sudo /usr/bin/postgresql-setup --initdb"
status:
command: "sudo systemctl status postgresql"
enable:
command: "sudo systemctl enable postgresql"
status:
command: "sudo systemctl status postgresql"
레디스는 .ebextensions 파일로 하는 코드를 찾음
7.5.2버전으로 개발해서 이걸로 설치함
// 02_redis.config
packages:
yum:
gcc-c++: [] # bcrypt 같은 패키지를 빌드하는데 필요한 컴파일러
make: [] # 빌드 도구
sources:
/home/ec2-user: http://download.redis.io/releases/redis-7.2.5.tar.gz
commands:
redis_build:
command: "make"
cwd: "/home/ec2-user/redis-7.2.5"
redis_config_001:
command: "sed -i -e 's/daemonize no/daemonize yes/' redis.conf"
cwd: "/home/ec2-user/redis-7.2.5"
redis_config_002:
command: "sed -i -e 's/# maxmemory <bytes>/maxmemory 500MB/' redis.conf"
cwd: "/home/ec2-user/redis-7.2.5"
redis_config_003:
command: "sed -i -e 's/# maxmemory-policy volatile-lru/maxmemory-policy allkeys-lru/' redis.conf"
cwd: "/home/ec2-user/redis-7.2.5"
redis_server:
command: "src/redis-server redis.conf"
cwd: "/home/ec2-user/redis-7.2.5"
// 02_env.config
option_settings:
aws:elasticbeanstalk:application:environment:
DATABASE_PORT: "5432"
# 그 외 필요한 거
'Web Development' 카테고리의 다른 글
Issue 템플릿 작성하기(라벨, 할당자, 타이틀 자동 설정, 오픈소스 참고) (0) | 2024.08.29 |
---|---|
Github PR, Issue 템플릿에서 주석달기 (개발자에게만 보이고 실제 pr, issue에는 안보이도록 만들기) (0) | 2024.08.20 |
[읽어줘] 한국어 TTS API 서비스 비교 분석 - 서비스 기획(1) (4) | 2024.05.29 |
[기술문서] 디자인 시스템, 패턴 라이브러리, 스타일 가이드와 컴포넌트 라이브러리의 차이점 (0) | 2024.05.28 |
[Open AI] Whisper AI 란? (0) | 2023.08.05 |