AWS에 웹을 구축해보자
목차
- AWS회원가입
- EC2 인스턴스 생성
- 키페어 발급
- 웹 서버 코딩/ 바이너리 파일 생성
- scp명령어로 인스턴스에 바이너리 파일 전송
- ssh로 서버에 접속
- 접속한 서버에서 바이너리 파일 실행
- 브라우저로 내가 만든 AWS 웹 서버에 접속
1. 회원가입
AWS 회원가입을 해준다.
2. 인스턴스 생성
AWS 로그인
- 인스턴스
- 인스턴스 시작
을 통해 새 인스턴스를 생성해준다.
이 과정에서 여러가지 설정을 해줄 수 있다.
나의 경우 1. AMI 선택
: Amazon Linux 2 AMI
, 5. 태그 추가
: Name: webserver
그리고 6. 보안 그룹 구성
에서는 내 노트북에서만 ssh접속을 할 수 있게 현재 내 ip에서만 접속을 할 수 있게 해주었고 목적이 웹 서버 배포이기 때문에 80번 포트는 누구든지 접근할 수 있게 해주었다. 이렇게 설정을 완료해주고 시작하려고 하면 키페어를 발급해준다.
3. 키페어 발급
! 키페어는 한번 발급받으면 다시 받을 수 없으니 잘 보관할 것!
발급받은 키페어를 기억하기 쉬운 위치에 저장한다. 나 같은 경우 어디에서든 접근하기 쉽게 홈디렉터리에 저장해주었다.
chmod 400
명령어를 통해 나에게만 읽기권한을 주도록 하자. 권한을 수정하고 pem파일을 옮기면 권한이 초기화 되는 듯 하니 꼭 먼저 옮겨주고 권한을 부여해주자.
1
2
3
4
mv keypairname.pem ~/.ssh/
cd ~/.ssh
chmod 400 keypairname.pem
여기서 chmod란?
chmod란 파일에 대한 권한을 설정해주는 명령어로써, chmod뒤에 나오는 숫자는 각각 나/그룹/전체의 권한을 뜻하며 권한에는 read(4), write(2), excute(1) 세 가지가 있다.
400같은 경우 read / 0 / 0 이므로 나에게만 읽기 권한이 있다는 뜻.
700은 read(4)+write(2)+excute(1) / 0 / 0 이 되므로 나에게만 읽기, 쓰기, 실행 권한이 있다는 뜻이다.
4. 웹 서버 코딩/ 바이너리 파일 생성
이제 본격적으로 웹 서버를 띄울 코드를 짜보자. 간단하게 80번 포트에 접속하면 “Hello AWS!”텍스트를 볼 수 있게 하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main
import (
"io"
"net/http"
)
func main() {
http.HandleFunc("/", index)
http.ListenAndServe(":80", nil)
}
func index(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "Hello AWS!")
}
그러고 바이너리 파일을 만들어 주면 되는데 이 때 만들어질 바이너리 파일을 AWS에 띄운 인스턴스의 운영체제에 맞게 만들어주어야 한다. go env
명령어로 현재 설정되어있는 파라미터를 확인할 수 있고 빌드 시킬 때 아래와 같이 따로 설정하여 파일을 빌드할 수 도 있다.
1
GOOS=linux GOARCH=amd64 go build -o custom_binaryfilename
5. scp명령어로 바이너리 파일 전송
1
scp -i ~/.ssh/[keypair].pem ./custom_binaryfilename [user]@[public_DNS]:
위 명령어를 통해 내 로컬에서 인스턴스로 파일을 전송해줄 수 있다.
나같은 경우 user
= ubuntu
였으며 public_DNS
는 AWS EC2 인스턴스 탭의 인스턴스 요약
에서 확인할 수 있다. 이제 파일이 제대로 보내졌는지 확인하기 위해 인스턴스에 접속을 해보자.
6. ssh로 인스턴스에 접속
1
ssh -i ~/.ssh/[keypair].pem [user]@[public_DNS]
여기서 user
와 public_DNS
는 scp명령어 실행 할 때와 같은 인자값이다.
접속한 인스턴스에서 빠져나오려면 ctrl+c
혹은 exit
을 타이핑하여 나올 수 있다.
7. 바이너리 파일 실행
파일 실행 권한을 주기 위해 chmod명령어를 사용해 준다. 이번엔 나에게만 읽기,쓰기,실행 권한을 부여할 것이다. 권한을 부여한 후 실행을 시켜준다.
1
2
sudo chmod 700 [binary_file_name]
sudo ./[binary_file_name]
인스턴스 요약
탭에서 퍼블릭 IPv4 주소
에 접속하여 웹 서버가 제대로 띄워졌는지 확인해본다.