인스턴스 생성하는 방법
- Quick Start에서 사용할 운영체제 선택
- 아키텍처는 윈도우 -> x86, 맥 -> arm으로 선택
- 다음으로는 인스턴스 유형을 선택 (예: t2.medium 사용)
- 키페어(Key Pair) 생성: Windows라면 ppk, 맥이라면 pem을 생성
- Putty를 사용하여 접속: Putty에 인스턴스의 public IP를 입력하고, Connection -> SSH -> Auth -> Credentials에 ppk 파일을 등록
- 사용자 이름은 ubuntu (운영체제에 따라 다를 수 있음)
Git, Web, WAS 만들기
- 인스턴스를 총 3개 생성
- 생성할 때 키페어(Key Pair)는 기존에 있는 것을 선택
- 보안 그룹(Security Group)은 한 개만 생성하고, 나머지 2개는 첫 번째에서 생성한 보안 그룹을 선택
- 보안 그룹에서 ICMP를 허용하고, authorized_keys를 통합하고, /etc/hosts에서 IP 설정
Git 설정
mkdir ~/repos: Git 저장소 폴더 생성
cd ~/repos: 저장소 위치로 이동
git init --bare .: Bare 저장소 생성 (--bare 옵션은 순수한 Git 저장소를 생성)
- 로컬 개발용 컴퓨터(Windows)에서 Git을 이용해 저장소에 코드를 올림:
git init
git remote add origin ssh://ubuntu@<인스턴스IP>:/home/ubuntu/repos
git add .
git commit -m 'first'
git push origin master
Web, WAS 서버에서 Git 설정
git clone ssh://ubuntu@<인스턴스IP>:/home/ubuntu/repos: Git 저장소 복제
- 개발용 PC에서 작업 후:
git add .
git commit -m 'any'
git push origin master
- Web, WAS 서버에서는
git pull origin master로 업데이트
nginx 설정
이론
WEB과 WAS
NGINX
Nginx 개요:
Nginx (엔진엑스라고 발음)는 강력하고 널리 사용되는 오픈 소스 웹 서버 소프트웨어입니다. 또한 역방향 프록시 서버, 로드 밸런서 및 HTTP 캐시로 작동합니다. 원래 C10k 문제(10,000개 이상의 동시 연결 처리)를 해결하기 위해 만들어진 Nginx는 높은 성능, 효율성 및 낮은 자원 소비로 알려져 있습니다.
주요 기능 및 사용 사례:
-
웹 서버:
- Nginx는 주로 HTML, CSS 및 이미지와 같은 정적 콘텐츠를 제공하는 데 사용되는 웹 서버로 사용됩니다.
- 이름 기반 및 IP 기반 가상 서버를 지원하여 단일 서버에서 여러 도메인을 호스팅할 수 있습니다.
-
역방향 프록시:
- 역방향 프록시로 Nginx는 클라이언트 요청을 백엔드 서버로 전송하여 로드 밸런싱, SSL 종료 및 캐싱과 같은 추가 기능을 제공합니다.
- 클라이언트와 응용 프로그램 서버 간의 중개자로 작동하여 보안을 강화합니다.
-
로드 밸런서:
- Nginx는 들어오는 트래픽을 여러 백엔드 서버에 분산하여 최적의 리소스 활용 및 단일 서버에 대한 과부하를 방지할 수 있습니다.
- 다양한 로드 밸런싱 알고리즘을 지원합니다.
-
HTTP 캐시:
- Nginx에는 메모리에서 직접 정적 콘텐츠를 저장하고 제공하는 내장 캐싱 메커니즘이 포함되어 있습니다. 이는 백엔드 서버의 부하를 줄이고 성능과 응답 시간을 향상시킵니다.
-
SSL/TLS 종료:
- Nginx는 SSL/TLS 종료를 처리하여 백엔드 서버에서 암호화 및 해독 프로세스를 오프로드하고 전반적인 성능을 향상시킬 수 있습니다.
- 현대적인 암호화 프로토콜을 지원합니다.
-
응용 프로그램 서버를 위한 역방향 프록시:
- Nginx는 역방향 프록시로 사용되어 응용 프로그램 서버 (예: Node.js, Django, Flask) 앞에서 로드 밸런싱, 캐싱 및 정적 파일 제공과 같은 작업을 처리합니다.
구성:
-
Nginx는 구성 파일에서 선언적 구성 구문을 사용합니다. 주요 구성 파일에는 nginx.conf 및 다양한 사이트별 구성 파일이 포함됩니다.
-
구성에는 서버 블록, 위치 지시문, SSL 인증서 등이 포함됩니다.
장점:
-
성능: Nginx는 뛰어난 성능과 낮은 메모리 사용량으로 알려져 있어 대규모 동시 연결을 처리하기에 적합합니다.
-
확장성: 높은 확장성을 가지고 있으며 분산 및 마이크로서비스 아키텍처에서 잘 수행됩니다.
-
다용도: Nginx의 다양성은 정적 콘텐츠 제공, 응용 프로그램 서버에 프록시, 로드 밸런싱 등에 적합합니다.
-
구성의 용이성: 구성 구문은 간단하며 유연한 설정을 가능하게 합니다.
커뮤니티 및 지원:
-
Nginx에는 방대하고 활발한 커뮤니티가 있어 포괄적인 문서, 자습서 및 모듈을 제공합니다.
-
Nginx, Inc., Nginx 뒤의 기업은 상업적인 지원과 고급 기능이 포함된 Nginx Plus를 제공합니다.
요약하면 Nginx는 웹 서버 및 역방향 프록시 서버로서 높은 성능, 보안 및 확장성을 갖춘 프로덕션 환경에서 널리 사용되는 소프트웨어입니다.