웹에서 vscode를 사용할 수 있도록 해주는 code-server를 AWS의 EC2를 이용하여 생성하는 방법을 소개합니다.
1. EC2 인스턴스 생성하기
AWS 계정 생성 등 이전의 절차는 완료된 상태에서, EC2 컨테이너를 생성하겠습니다. 이번에 사용할 컨테이너는 t2.micro로 free tier대상이기에 무료로 사용할 수 있습니다. 또한 code-server는 t2.micro로도 충분할 정도로 가벼운 사양을 가지고 있기에 단순 코딩용으로 이용하기 적합합니다.
code-server의 권장 최소사양은 1 GB of RAM, 2 CPU cores 으로 실제로는 t2.micro의 다음 사양인 t2.small 이상의 인스턴스를 사용하는 것이 좋습니다
아시아 태평양 (서울)ap-northeast-2로 지역을 설정해주고, EC2 서비스 -> 인스턴스 -> 인스턴스 생성으로 인스턴스를 생성해줍니다.
- 이름 및 태그: 이름은 자유롭게 설정 해 주시면 됩니다
- 애플리케이션 및 OS 이미지(Amazon Machine Image): 본 포스팅에서는 Ubuntu Server 22.04 LTS를 사용했습니다
- 인스턴스 유형: 본 포스팅에서는 t2.micro를 사용했습니다
- 키 페어(로그인): 기존 키 페어를 불러오거나, 새 키 페어 생성을 할 수 있습니다
- 네트워크 설정: SSH 트래픽 허용(22번 포트), HTTP 트래픽 허용(80)을 해주시면 됩니다
- 스토리지 구성: aws free tier에서는 30 GiB를 무료 제공합니다. 본 포스팅에서는 20 GiB를 할당했습니다
인스턴스를 생성하였으면, openssh나 putty등을 이용하여 서버에 접속해줍시다.
2. code-server 설치
https://github.com/coder/code-server
code-server의 Getting Started를 참고하여 서버에 code-server를 설치합니다.
code-server 설치
다음 명령어로 code-server를 받아 설치할 수 있습니다.
curl -fsSL https://code-server.dev/install.sh | sh
code-server 실행
다음 명령어로 code-server를 실행할 수 있습니다. 그러나 이 방식으로는 putty나 openssh종료 시에 code-server가 종료되기에 systemd에 등록하여 사용하는 것이 좋습니다.
code-server
다음 명령어로 code-server를 systemd에 등록하여 서버 작동시에 code-server가 항상 작동하게 할 수 있습니다.
sudo systemctl enable --now code-server@$USER
config.yaml 설정 수정
다음은 code-server 접속시 비밀번호를 설정합시다. config.yaml 파일에 들어가 password 부분을 수정해 주면 됩니다.
sudo vi ~/.config/code-server/config.yaml
bind-addr: 127.0.0.1:8080
auth: password
password: 비밀번호는이곳에옵니다
cert: false
또한 systemd로 code-server를 작동했다면, 다음 명령을 통해 서비스를 재시작해줘야 합니다.
sudo systemctl restart code-server@$USER
bind-addr를 0.0.0.0:8080으로 설정하고, aws에서 8080포트를 개방해 주면 nginx 없이도 8080 포트로 접속하여 사용이 가능합니다. 바로 0.0.0.0:80 포트를 할당하면 error listen EACCES: permission denied 0.0.0.0:80 오류가 발생하고, 매번 포트번호를 써넣는것은 번거롭기 때문에, nginx를 통하여 프록시를 설정해주도록 합시다.
3. nginx 설정
다음 명령을 통해 nginx를 설치합니다.
sudo apt install nginx
설치간에 nginx 용량을 확인하는 부분이 있을 텐데, Y를 입력하여 넘어가면 됩니다.
다음은 nginx를 설정을 수정합니다. 다음 명령을 통해 파일을 열어줍니다.
vi /etc/nginx/sites-enabled/default
아래의 내용을 복사하여 기존 내용을 모두 대체하면 됩니다.
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
proxy_pass http://localhost:8080/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
vim 사용시에 a를 눌러 INSERT모드로 변경하고, 작성이 끝났으면 esc 키를 통해 입력모드를 종료하고, :wq를 통해 파일을 저장하고 나가면 됩니다.
수정이 끝나면 다음 명령을 통해 nginx를 재시작합니다.
sudo service nginx reload
'인프라 (Infra)' 카테고리의 다른 글
EC2 T instance VS M instance 비용 비교 (0) | 2024.04.08 |
---|---|
AWS ELB 구조 간단 정리 (0) | 2024.04.07 |
클라우드 서비스(Azure, AWS, GCP, Oracle) Freetier 비교 (1) | 2022.12.15 |
EC2 인스턴스 볼륨 확장하기 (0) | 2022.05.13 |