Home [AWS/Go] AWS에 웹을 구축해보자
Post
Cancel

[AWS/Go] AWS에 웹을 구축해보자

AWS에 웹을 구축해보자

목차

  1. AWS회원가입
  2. EC2 인스턴스 생성
  3. 키페어 발급
  4. 웹 서버 코딩/ 바이너리 파일 생성
  5. scp명령어로 인스턴스에 바이너리 파일 전송
  6. ssh로 서버에 접속
  7. 접속한 서버에서 바이너리 파일 실행
  8. 브라우저로 내가 만든 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 이므로 나에게만 읽기 권한이 있다는 뜻.
700read(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]

여기서 userpublic_DNS는 scp명령어 실행 할 때와 같은 인자값이다.
접속한 인스턴스에서 빠져나오려면 ctrl+c 혹은 exit을 타이핑하여 나올 수 있다.

7. 바이너리 파일 실행

파일 실행 권한을 주기 위해 chmod명령어를 사용해 준다. 이번엔 나에게만 읽기,쓰기,실행 권한을 부여할 것이다. 권한을 부여한 후 실행을 시켜준다.

1
2
sudo chmod 700 [binary_file_name]
sudo ./[binary_file_name]

인스턴스 요약탭에서 퍼블릭 IPv4 주소에 접속하여 웹 서버가 제대로 띄워졌는지 확인해본다.

This post is licensed under CC BY 4.0 by the author.

[Devlog] Go로 만드는 웹 (2): 회원가입, 로그인&아웃 기능 구현..!

[AWS/Go] EC2에서 Go server를 지속적으로 호스팅해보자