1️⃣ 우측 상단 인스턴스 시작 버튼 클릭
2️⃣ AMI 선택
선택하는 AMI에 따라 새 EC2 인스턴스에 설치되는 기본 소프트웨어가 결정된다.
Amazon Linux 배포판을 선택하는 것이 일반적이므로 Amazon Linux 2 AMI(HVM)를 선택
3️⃣ 인스턴스 유형 선택
인스턴스 유형은 CPU, 메모리(RAM), 스토리지 및 네트워크 용량이 포함된 특정한 구성을 말한다.
내가 선택한 t2.micro 인스턴스는 프리티어로 매월 750시간씩 실행 가능하다. 👍
4️⃣ 인스턴스 세부 정보 구성
추가 설정 없이 기본 값으로 다음
5️⃣ 스토리지 추가
인스턴스의 스토리지를 설정하는건데 Root 장치는 필수인데 볼륨 유형에 따라 금액이 다르니 기본 값으로 선택!
magnetic: HDD를 사용
범용 SSD: SSD를 사용
IOPS SSD: SSD를 사용하며, I/O 대역폭 설정 가능
6️⃣ 태그 추가
추가 설정 없이 기본 값으로 다음
7️⃣ 보안 그룹 구성
보안 그룹은 EC2 인스턴스에 허용되는 네트워크 트래픽 종류를 설명하는 네크워킹 규칙이다.
내가 추가한 트래픽 종류는 SSH, HTTP, HTTPS, 사용자 지정, MYSQL/Aurora이다.
SSH: SSH 프로토콜을 사용하여 EC2 인스턴스에 로그인하고 WordPress를 구성할 수 있도록 현재 IP 주소에서 들어오는 SSH 트래픽을 허용한다는 규칙
HTTP or HTTPS: 사용자가 WordPress 사이트를 볼 수 있도록 모든 IP 주소에서 들어오는 HTTP or HTTPS 트래픽을 허용한다는 규칙
사용자 지정: 해당 인스턴스의 IP로 접속할 때 뒤에 포트 번호를 8080으로 줄 예정이기에 따로 설정한 규칙
MYSQL/Aurora: MySQL 또는 Aurora 데이터베이스 액세스를 위한 기본 포트
8️⃣ 인스턴스 시작 검토
앞에 작성한 내용을 검토하는 부분으로 확인 후 이상 없으면 시작하기 클릭
9️⃣ 키 페어 선택
키 페어를 사용하여 인스턴스에 SSH를 통해 액세스해서 서버에서 명령을 할 수 있게 해주기 때문에 필요하다.
기존에 생성되어있는 키페어가 있다면 기존 키페어를 사용하고 그게 아니라면 새 키 페어 생성!
새로운 키 페어를 생성하기 위해서는 화면에 보이는 것처럼 키 페어 이름 설정 후 키 페어 다운로드
✅ 키 페어는 외부에 노출되면 안되고 잃어버려도 안되니 신경써서 보관 필수❗️
🔟 인스턴스 시작
키 페어 설정 후 인스턴스 시작!
🆗 인스턴스 생성 완료!😎
초기 생성 시에 인스턴스 상태가 running 상태인데 문제 없다면 잠시 후 실행 중 상태로 변함!
$ ssh -i "your-pem-file.pem" ec2-user@your-ec2-dns-주소
your-pem-file.pem: EC2 인스턴스 생성 시 설정한 키 페어 이름
your-ec2-dns-주소: ec2 퍼블릭IPv4 DNS 주소
⛔️ 만약 여기서 Permission Denied 에러가 뜬다면 your-pem-file.pem 이 키가 위치한 곳에서 ec2접속을 한건지 확인해봐야 한다. 해당 키가 위치한 곳에서 접속하거나, 해당 키 경로까지 입력해서 접속하면 된다.
🥲 그래도 안된다면? 권한을 준다
$ chmod 600 your-pem-file.pem
$ sudo yum -y update
AWS Linux에 기본으로 설치된 자바 버전은 7이므로 해당 자바 버전을 지우고 필요한 자바 버전으로 재설치 (예시는 JAVA 8 설치)
//JAVA 7 삭제
$ sudo yum remove java-1.7.0-openjdk
⛔️ 만약 JAVA 7 버전을 삭제하려고 할 때 이런 에러가 나타난다면 해당 자바가 설치되어 있지 않다는 뜻이니 그냥 무시하고 원하는 자바 버전으로 재설치 하면 된다.
//JAVA 8 설치 (사용 권장⭕️)
$ sudo yum install java-1.8.0-openjdk-devel.x86_64 -y
//JAVA 8 설치 (javac가 함께 설치되지 않으니 사용 권장❌. 이유는 아래에 설명)
//$ sudo yum install java-1.8.0
🛑 JAVA8 설치 시 명령어 수정 🛑
기존처럼 java-1.8.0으로 설치하게 되면 javac가 설치되지 않는다는 사실을 발견했다.
따라서 아래 기재한 javac가 함께 설치되는 명령어로 설치해주기 바란다.
(이미 설치된 java가 있어도 아래 명령어를 다시 입력하면 알아서 다시 설치된다.😉)$ sudo yum install java-1.8.0-openjdk-devel.x86_64 -y
$ java -version
⛔️ 만약 이런 에러가 발생한다면 Java가 제대로 설치되어 있지 않았다는 뜻이니 재설치 해보면 된다.
yum이 jenkins를 설치해야 하는 곳을 알려주기 위해 추가해줘야 한다.
$ sudo wget -O /etc/yum.repos.d/jenkins.repo
http://pkg.jenkins-ci.org/redhat/jenkins.repo
Jenkins를 설치할 때 신뢰할 수 있는 소스로부터 제공되는 파일이라는 것을 증명하기 위해 로컬 GPG 키링에 Jenkins GPG Key를 추가해줘야 한다.
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
$ sudo yum install jenkins
⛔️ 나는 설치하는 과정에서 아래와 같은 에러가 발생했다.
❌ 해결을 위해 EPEL을 설치해보려고 했지만 실패 ⛈
⭕️ 위에 에러난 부분에서 가이드 명령어를 줘서 그걸로 해결 ☀️
$ sudo amazon-linux-extras install epel
❌ 여기까지 한 후 다시 Jenkins를 설치하려고 했으나 실패❗️❗️
⭕️ NOKEY라고 되어있는걸 보고 Jenkins GPG Key를 다시 설치해야 하는 것 같아서 GPG Key 재설치 후 Jenkins를 설치했더니 해결되었다.
// Jenkins GPG Key 설치
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
// Jenkins 설치
$ sudo yum install jenkins
$ sudo service jenkins start
// 명령어 실행 시 이렇게 나오면 정상
Starting jenkins (via systemctl): [ OK ]
$ netstat -na | grep 8080
// 명령어 실행 시 이렇게 나오면 정상(EC2 인스턴스 생성 시 인바운드 규칙에 추가한 포트 번호)
tcp6 0 0 :::8080 :::* LISTEN
프리티어 EC2는 메모리가 부족하기 때문에 사용하다 보면 메모리 부족으로 프로그램이 멈출 수 있다.
그러므로 직접 스왑 파티션을 생성해줘서 사용하는 데 지장이 없도록 해준다.
(프리티어가 아닌 상위 EC2 사용한다면 패스해도 되는 부분 😉)
// 메모리 상태 확인
$free -h
아래 이미지처럼 swap 파일 메모리가 0인 것을 확인해볼 수 있다.
// swap 파일을 생성해준다. (메모리 상태확인 시 swap이 있었지만 디렉토리 파일은 만들어줘야한다.)
$ sudo mkdir /var/spool/swap
$ sudo touch /var/spool/swap/swapfile
$ sudo dd if=/dev/zero of=/var/spool/swap/swapfile count=2048000 bs=1024
// swap 파일을 설정한다.
$ sudo chmod 600 /var/spool/swap/swapfile
$ sudo mkswap /var/spool/swap/swapfile
$ sudo swapon /var/spool/swap/swapfile
// swap 파일을 등록한다.
$ sudo vim /etc/fstab
파일이 열리면 해당 파일 아래쪽에 하단 내용 입력 후 저장
- 입력 할 수 있도록 하는 명령어 -> i
- 파일 수정 후 저장하는 명령어-> esc키 누른 후 :wq 입력 후 엔터
/var/spool/swap/swapfile none swap defaults 0 0
// 메모리 상태 확인
$free -h
잘 설정된 것을 볼 수 있다.🙌
http://your-ec2-dns-주소:8080 으로 접속
아래 명령어 실행 후 나온 문자열을 복사해서 빈 칸에 입력
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
🔅 Jenkins 설정 완료 🤗
여기까지 Jenkins를 사용할 수 있게 화면 설정까지 완료해봤다.
나는 여기에 Jenkins가 스스로 도커 컨테이너를 이용해 빌드와 테스트를 할 수 있도록 하려고 한다.
➕➕) 🖍 나는 젠킨스에 AWS Route53을 통해 도메인을 연결해서 접속하기 편하게 설정해뒀는데, 나중에 정확히 기억하기 위해 추가로 작성해본다.👍
상단 부분에 route53을 검색해서 나오는 서비스를 선택한다.
도메인 > 등록된 도메인 > 도메인 등록 클릭🖱
설정하고 싶은 원하는 도메인명을 입력하고, 우측에 보이는 확장자 중 원하는 걸 선택하면 된다.
원하는 도메인명과 확장자를 선택하면 해당 도메인을 사용할 수 있는지에 대한 여부를 알 수 있다.
이렇게 원하는 도메인을 사용할 수 없다면 도메인명을 다시 변경하거나, 관련 도메인에서 마음에 드는 도메인을 선택하여 장바구니에 추가한다. 만약 원하는 도메인명이 사용 가능하다면 그대로 사용 🤝
호스팅 영역 > 호스팅 영역 생성 클릭🖱
등록한 도메인명 입력 후 나머지 설정은 기본 값으로 호스팅 영역 생성 클릭🖱
생성된 호스팅 영역을 다음과 같이 확인할 수 있다.
해당 호스팅에 레코드를 생성하여 도메인 연결이 필요하니 도메인명 클릭🖱
AWS EC2 퍼블릭 주소 대신 편하게 사용하고 싶은 주소를 레코드 이름에 입력한다.
값 부분에는 AWS EC2 퍼블릭 주소를 넣어주면 된다! 해당 주소는 EC2 인스턴스에서 확인할 수 있다.
레코드 이름으로 만든 주소로 접속이 되는 것을 확인해볼 수 있다!
여기에서 뒤에 8080 포트가 붙은 이유는 해당 EC2 인스턴스를 생성했을 때 8080 포트를 지정해주었기 때문에 애초에 IP주소로 접속했을 때에도 8080 포트를 동일하게 사용한 것이다!
성공 🤠