AWS에 VS Code server를 만들어두면 내 public IP로 접속해서 바로 코딩할 수 있는 환경이 생기니까
아이패드에서 terminus를 사용하지 않고 웹으로 코딩할 수 있는 게 큰 장점인 것 같다.
code-server를 사용하면 VS Code를 브라우저에서 실행할 수 있다고 한다.
code-server를 설치하기 전에 어떤 걸 하는지 궁금하면 --dry-run 옵션을 사용해서 확인할 수 있다
~$ curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run
Ubuntu 18.04.5 LTS
Installing v3.9.1 deb package from GitHub releases.
+ Reusing ~/.cache/code-server/code-server_3.9.1_amd64.deb
+ sudo dpkg -i ~/.cache/code-server/code-server_3.9.1_amd64.deb
To have systemd start code-server now and restart on boot:
sudo systemctl enable --now code-server@$USER
Or, if you don't want/need a background service you can run:
code-server
code-server를 실제로 설치해보자
~$ curl -fsSL https://code-server.dev/install.sh | sh
code-server를 systemd에 등록해서 서비스로 돌리고 싶으면 아래처럼 등록한다.
sudo systemctl enable --now code-server@$USER
code-server 시작 명령
sudo systemctl start code-server@$USER
code-server에 아무런 설정을 하지 않았으면 http://[AWS 서비스 주소]:8080으로 실행된다.
그렇지만 공식 문서에서는 아무런 인증 수단 없이 code-server가 개방된 인터넷 공간으로 나오는 걸 반대함
기본적으로 code-server에 접속하려면 비밀번호를 입력해야 한다.
로컬에서 사용할 때는 기본 설정대로 해도 되지만
AWS를 사용하려고 했던 건 결국 외부에서도 사용하고 싶은거니까
보안 설정도 같이 해준다.
code-server의 기본 설정은 ~/.config에서 확인할 수 있다.
$ cat ~/.config/code-server/config.yaml
bind-addr: 127.0.0.1:8080
auth: password
password: xxxx
cert: false
1. ssh forwarding
공식 문서는 이 방법을 아주 추천한다고 한다.
ssh server를 통해 접속하는 것 뿐이라서 다른 방법보다 쉽게 설정할 수 있다.
그치만 아이패드 같이 ssh client가 없는 기기에서는 사용할 수 없으니 다른 방법을 사용해야 함😥
1) [code-server:server] 인증 방식을 password -> none으로 변경
sed -i.bak 's/auth: password/auth: none/' ~/.config/code-server/config.yaml
2) [code-server:server] code-server 재시작
sudo systemctl restart code-server@$USER
3) [code-server:client] ssh로 portforwarding을 한다.
aws의 공개키로 로그인해야 한다면 -i 옵션을 사용해서 공개키 파일명을 적어준다
ssh -N -L 8080:127.0.0.1:8080 [user]@<instance-ip> -i "aws-key.pem"
4) [code-server:client] http://localhost:8080 에 접속한다.
접속 된다~~
그래도... 혹시 모르니 아이패드 terminus에서 접속 가능한지 한번 봐야겠다ㅠㅠ
+) 된다! 그치만 한글로 적으니ㅋㅋㅋㅋㅋㅋ 다중 입력이 되는지 이이이러러러렇ㅎ헤게ㅔㅔ된다
2. 도메인 설정 + nginx로 웹 서버 설정 + TLS 적용
도메인을 설정하는 데 꽤 오래걸렸다. 로컬에서 그냥 정할 수 있을 줄 알았는데.. 안되네!
내가 했던 순서는 nginx -> domain -> tls인데 제대로 했으면 domain 부터 추가해야 편하다.
1) 도메인 만들기
공식 문서는 Google Domain을 쓰라고 하지만 유료다ㅠㅠ
제일 싼 요금이 page(1년에 $10)인데 다음에 필요할 때 사용해봐야지..
이번엔 무료로 도메인을 제공해주는 freenom을 사용해보기로 했다.
내 웹 주소가 될 문자(영어/숫자로 해야 함)를 검색해본다
위쪽 파랑색은 무료, 아래 노랑색은 유료다.
사람들이 잘 안쓰는 도메인 이름을 공짜로 주는듯.
근데 ml은 머신러닝이 생각나서 나중에 꽤 많이 쓰일 듯?
Get it now!로 선택하고 로그인을 한다.
로그인은 이메일 주소만 제대로 적고 나머지는 아무렇게나..
아래처럼 호스트이름과 IP 등록을 할 수 있다.
보통 www 적지 않는 경우도 있어서 둘다 적게 하는건가봄..?
IP address에는 두 곳 모두 내 AWS Public IP를 적는다.
내 이메일 주소로 인증을 하면 내 웹 주소가 생겼다!
2) nginx 웹 서버 설정하기
요기서부턴 문서를 참고했다
- nginx 설치
sudo apt update
sudo apt install -y nginx
3) TLS 적용
TLS(SSL) 적용이 필요한 이유는 웹 접속 시 보안 연결(HTTPS)을 해주기 위해서다
개인 정보를 그래도 안전하게 전송해주려고ㅎㅎㅎ
문서에는 무료로 SSL을 발급해주는 Let's Encrypt의 certbot을 사용했다.
내 AWS는 ubuntu 18.04, nginx 웹 서버를 사용하니 아래 주소대로 설정을 진행한다.
certbot.eff.org/lets-encrypt/ubuntubionic-nginx
- certbot 설치
# snap이 최신 버전인지 확인
sudo snap install core; sudo snap refresh core
# 기존에 설치된 certbot 삭제
sudo apt-get remove certbot
# certbot 설치
sudo snap install --classic certbot
- certbot 명령어 준비
certbot을 실행할 수 있게 /usr/bin 위치로 심볼릭 링크를 만들어준다
sudo ln -s /snap/bin/certbot /usr/bin/certbot
- certbot 실행
d 옵션은 1)에서 만든 웹 주소, m 옵션은 내 메일 주소를 적으면 된다.
메일 주소 잘못 적으면 안되던가...? 잘 모르겠다.
sudo certbot --non-interactive --redirect --agree-tos --nginx -d 0011test.tk -m test@google.com
4) nginx 설정 수정하기
certbot이 /etc/nginx/sites-available/default를 수정했기 때문에
/로 이동했을 때 code-server가 실행되게 proxy 설정이 필요하다
- location / 부분만 아래처럼 수정
# vi /etc/nginx/sites-available/default
server {
listen 80;
listen [::]:80;
server_name 0011test.tk;
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;
}
}
끝!!!!!
이제 nginx를 재시작 해주자
sudo systemctl restart nginx
'개발 > AWS' 카테고리의 다른 글
Django 앱 만들기 - DB에 저장된 내용을 보여주자! (0) | 2021.02.04 |
---|---|
Django 앱 만들기 - 모델 테스트 데이터를 자동으로 만들기 (0) | 2021.02.02 |
Django 앱 만들기 - model의 save와 admin의 save_model을 오버라이딩 하기 (0) | 2021.02.02 |
Django 앱 만들기 - Models method, upload image (0) | 2021.01.21 |
Django 앱 만들기 - admin 패널 꾸미기, QuerySet, UserManager (0) | 2021.01.21 |
댓글