[WEB_풀스텍]/개발일지

[5주차] Web Application 배포하기!

Code_Otaku 2022. 7. 14. 15:16

[History of E.V.E]

 

크으...! 대한민국 대표 Visual Rock Band!

 

History of EVE (roonie.shop)

 

History of EVE

대한민국 대표 Visual Rock 그룹! 응원해주세요!

roonie.shop

 

안녕! 안녕!

드디어 5주짜리 국비지원 강의가 모두 끝이 났어!

쫌 전에는 때뜸 그 결과물을 박아놓고 자랑질 좀 먼저 해본거다.

 

물론 고수님들 보기에는 새끼! 귀엽노.. 하는 수준이겠지만

그 분들도 날 때부터 '001111110011111100100... (응애! 나 애기 000!)'

이러면서 태어나진 않았을 것 아닌가?

누구에게나 처음은 있는 법이고, 필자는 방금 웹 개발자로서 첫 걸음을 디딘 셈이다.

 

여태까지는 로컬 호스트, 즉 내 컴퓨터에서만 장난감을 만들어 쪼물딱 거려봤다.

물론 그것만으로도 졸잼이었지만..

결국 웹 기술을 익혔다면 종당에는 결과물을 배포까지 해봐야 하지 않겠는가?

 

사실 웹 퍼블리싱 (Web Publishing)을 위한 프로세스 자체는 이미 Spring Boot 수업에서 다룬 적이 있다.

[Domain] 나만의 셀렉샵 배포하기! (Z) (tistory.com)

 

[Domain] 나만의 셀렉샵 배포하기! (Z)

나만의 셀렉샵이라는 장난감을 A부터 Y까지 다루어 보았다. [Localhost] 나만의 셀렉샵 만들기! (A-Y) (tistory.com) [Localhost] 나만의 셀렉샵 만들기! (A-Y) http://spring.spartacodingclub.kr/ 00만의 셀렉..

codeotaku.tistory.com

 

결국 스프링이 되었건, 플라스크가 되었건, 쟝고가 되었건..

특정 언어에 상응하는 프레임워크를 사용하여 에플리케이션을 만들었을 뿐이다.

문법은 상이할 수도 있으나 배포하는 과정은 크게 다를 것이 없는 것이다.

 

하지만 필자가 스프링부트를 활용하여 퍼블리싱까지 했던 게 불과 몇 주 전인데..

솔직히 말하자면 그새 또 까먹어버렸다.

사람의 뇌라는 것이 잠재력 자체는 참 대단하지만..

SSD처럼 필요한 메모리만 똑 떼어넣고 백업을 시키는 것이 아직은 불가능하다. 

더군다나 필자의 뇌에 자리잡은 보조기억장치는 그 성능이 너무나도 처참하다..

 

그러니 또 반복 + 숙달 해야하지 않겠는가?

자기 자랑이 맞지만 필자가 이전 직장에서 늘상 써왔던 Auto-Cad, Solid-Works, Lab-View, Fortran 등등..

모두 머리보다는 손에 익숙해지는 것이 먼저였다.

 

첨부한 링크를 보고 넘어가셔도 상관 없지만..

아마 이번 포스팅이 퀄리티 면에서는 더 충실할 것이다.

왜냐면 같은 내용을 두 번째로 배우는 거니까!

 

이 점을 유념하고 가실 분들은 가시고, 함께 할 앗쎄이들은 마지막까지 달려보도록 하자.

아! 혹시라도 필자가 만든 장난감의 소스코드가 궁금하신 분들을 위해 깃헙 링크도 남겨놓겠다.

academy3746/Visitor_ver_1.0.1: POST / GET API 프로세스 숙달 (github.com)

 

GitHub - academy3746/Visitor_ver_1.0.1: POST / GET API 프로세스 숙달

POST / GET API 프로세스 숙달. Contribute to academy3746/Visitor_ver_1.0.1 development by creating an account on GitHub.

github.com

 

그럼 전방을 향해 힘찬 함성, 5초간.. 발사!!!

 


0. 기본 개념부터 잡고 가자!

 

[♡]

 

개념 원리 시간은 언제나 지루하기 때문에..

커여운 댕댕이를 먼저 박아놓고 시작하겠다.

물론 서론부터 지루하기 짝이 없었겠지만 커여운 댕댕이 보면서 화를 풀면 안될까..?

 

자, 각설하고!

내가 만든 장난감을 내 컴퓨터에서만 뿐만 아니라..

인터넷을 사용하는 누구나 이용할 수 있게 만들 수는 없을까?

 

당연히 있지!

그것은 바로 상시 인터넷에 연결되어 있는 서버 전용 컴퓨터를 하나 장만하는 것이다.

그리고 장난감을 빌드하여 그 컴퓨터에 밀어넣으면 된다.

 

거기서 끝?

댓츠 노노..

새로 장만한 서버 컴퓨터를 1년 365일 24시간 내내 켜놓아야 한다.

혹시 정전이 일어날 경우를 대비해 UPS 장치도 따로 구비해야 할 것이고..

고양이의 접근도 엄금해야 할 것이다.

절대로 인터넷이 끊겨셔도 안될 것이고!

 

와 씹.. 진심이냐?

진심이다.

실제로 회사마다 저런 원시적인 방식으로 서버를 운영했던 흑역사가..

그다지 오래 되지 않았다.

지금도 IT 인프라가 형편없는 나라를 가보면 그다지 낯선 풍경도 아니고.

 

그렇다면 기업이나 관공서가 아닌 개인이 서비스를 직접 운영한다면?

당연히 돈이 한 두 푼 깨지는 일이 아닐 것이다.

 

매달 납부하는 전기세는 물론이거니와..

늘어나는 트래픽을 충분히 수용할 만한 성능 좋은 서버 컴퓨터.

그리고 비상 상황을 대비한 UPS 설치 공사.

게다가 어딘가에서 인터넷 프로토콜 (IP) 주소 또한 할당 받아야겠지?

그래야만 고객들이 아무런 제한 없이 우리의 웹 사이트에 접속할 것 아니겠는가? 

 

여기까지만 다뤄도 숨이 넘어갈 것 같다..

하지만 그런 걱정일랑 휴지통에 갖다 버려라!

 

우리는 아주 아주 아주 값싼 비용으로 저 모든 과정을 한꺼번에 핸들링 할 것이다.

 

바로 '웹 클라우드 (Web Cloud)' 를 통해서!

 

벌써부터 흥미진진해지지?

빨리 본문으로 들어갔으면 좋겠지?

아직까지도 서론이었냐구?

당연하지!

 

[다시 한 번 밝혀두지만 필자는 문과충이다.]

[밥벌이는 안될지언정..]

[쓰잘데기 없이 개소리만 줄줄줄 늘여뜨려 놓는 게 세상에서 가장 쉬운 전형적인 문돌이다.]

 


1. AWS (Amazone Web Service) 서버를 구매하자!

 

시작부터 뭘 현질 하라고 하니까 거부감이 먼저 들 수도 있겠다.

필자 또한 그러했으니까..

그렇다면 웹을 배포하고, 그것을 글을 쓰는 이 시간에도 운영하기까지..

다 합해서 얼마가 깨졌는지 툭 까놓고 시작해볼까?

 

정확하게 550원이라는 예산이 소요되었다.

 

호에에에에?!?!?!

 

ㅇㅇ..

 

우선 'AWS' 서비스에 가입하는데..

로봇이 아님을 증명하기 위하여 100원을 선납하였고

바로 환불까지 받을 수 있었다.

여기까지 0원이지?

거기에다가 'Gabia' 에서 도메인을 구입하는 데 든 비용이 부가세 제외하고 500원

 

우리 같은 불가촉천민에게는 감지덕지 아니겠는가?

 

그러니까 앞으로 필자가 써내려가는 과정대로 주저없이 따라와주기 바란다.

나중에 몇 십, 몇 백 만원씩 깨지는 그런 거 절대 아니니까..

 


1-1)  EC2 서버 컴퓨터를 구매하자!

 

뭐야?

이러면 서버 컴퓨터를 비싼 돈 주고 사는 거랑 무슨 차이가 있는데?

 

차이가 있다.

우리는 그럭저럭 쓸만한 성능의 서버 전용 컴퓨터를 공짜로 구매하려는 것이다.

그것도 물리적인 체적을 지닌 실제 컴퓨터가 아니라..

AWS 서비스에서 가상의 컴퓨터를 구매하는 과정 먼저 살펴볼 것이다.

 

물론 세상에 공짜는 없다..

1년까지만 무료로 쓸 수 있는 서버이기 때문에 그 전에 서버를 내려주든지 해야 한다.

그것도 당연히 빼먹지 않고 올릴테니까 두 눈 부릅뜨고 필자와 함께 해주기 바란다.

 

[Ubuntu Server Setting]

 

필자가 쓰고 있는 노트북의 운영체제 (OS)는 윈도우다.

여러분은 무엇인가?

필자와 마찬가지로 윈도우? 그것도 아니면 MAC?

 

우리가 구매하려는 서버 컴퓨터의 운영체제는 기본적으로 Linux이다.

Ubuntu라고도 하는데.. 그 말이 그 말이다.

리누스 토발스라는 변태x끼가 오픈소스로 제공한 서버 전용 OS이다.

 

우선 그 OS 먼저 구매하도록 하자.

필자가 구매한 버전은 가장 최신인 22.04이다.

어지간하면 최신 버전이 가장 좋지 않겠는가?

물론 여러분은 18.04나 20.04로 구매하셔도 상관없다.

필자 역시 두 개 다 써봤는데 용량 말고는 별 차이 없더라.

 

[Review & Launch]

 

프리티어 타입으로 구매해라.

어짜피 메모리 1GB 짜리라도 한동안 널널할 것이다.

 

[Launch]

 

주저하지 말고 Launch 눌러라.

참고로 지금 보시는 화면은 영어로 되어 있는데 저거는 한 2년전 기준이고..

지금은 한글도 지원 가능하니, 굳이 어렵게 영어 쓰지 말고 한글 써라.

서버 역시 어디 이상한 필리핀 같은 똥남아 촌구석 말고 서울 서버로 바꾸고!

서버 변경은 좌측 상단에 있다.

 

[친절]

 

그치?

솔직히 귀찮아서 강의 사이트 노션에 첨부된 사진자료 갖다 쓰고 있는 게 맞음..

진짜 헷갈리는 부분은 필자가 직접 들어가서 실습까지 해본 사진으로 올리겠다.

 

 

여태까지 잘 따라왔다면 Key-Pair를 생성하라는 창이 뜰 것이다.

크게 고민할 거 없이 새 키-페어를 생성해줘라.

기존에 생성한 키-페어가 있을리가 없겠지만..

그게 안전하다.

 

근데 키-페어가 모지이? ㅎㅎㅎ

하면서 의문을 표할 수도 있는 몇 안되는 에이스 독자분들을 위해 특별히 설명하겠다.

공부는 그렇게 하는거야.

 

그냥 AWS에서 제공하는 간편한 공인인증서 정도로 이해해라.

키-페어를 새로 생성할 때에는 신규 ID와 패스워드를 물어볼 것이다.

여기서 입력한 개인정보가 여러분이 지정한 저장매체에만 깔리는 것이다.

프리티어를 쓰는 우리들은 *.pem 이라는 확장자를 가진 파일이 깔릴 것이다.

 

실제로 공인인증서도 별도의 확장자를 가진 파일이 저장매체에 깔리잖아?

임의로 생성한 ID와 패스워드는 늘 불안하기 마련이다.

하다못해 심심하면 털리는 게 구글 계정인데.. ㅡㅡ

그것을 방지하고자 AWS에서 강구한 간편하면서도 나름 강력한 보안수단인 것이다.

 

ID와 패스워드를 잘 기억하고..

오직 여러분만 아는 경로에 꼭꼭 숨겨놔라.

나중에 소스코드를 빌드할 때 유용하게 써먹을 것이다.

 

오케이, 다음.

 


1-2) EC2 서버 컴퓨터, 그만 쓰고 싶은데..

 

[EC2 종료]

 

지금은 비록 공짜지만..

방금 우리가 구매한 EC2 컴퓨터는 딱 1년까지만 무료로 쓸 수 있다.

그 이후로는 별도의 요금이 청구되는 식이다.

 

그러므로 더 이상 도메인을 사용하지 않게 되면 저런 식으로 인스턴스를 중지하거나 종료시켜줘라.

중지는 서버 컴퓨터의 전원을 꺼주는 셈이고

종료는 그동안 우리가 빌린 서버 컴퓨터를 AWS에 반납하는 셈이다.

 

필자는 분명히 알려줬다.

나중에 폭탄 요금 맞아서 징징거리기 없기야?

 

오케이, 다음.

 


3) EC2 서버에 접속하기!

 

SSH (Secure Shell Protocol) 라고 들어본 적 있는가?

컴공 전공이 아니고서야 당연히 없겠지..

필자도 처음 보는 녀석이다.

 

쉽게 생각하자.

우리들의 개인 PC에서부터 EC2라는 서버 컴퓨터로 접속하고자 할 때 필요한 프로그램이다.

그것도 매우 안전한 방식으로 말이다.

그래야만 기껏 만들어놓은 장난감을 AWS 서버에 올릴 거 아냐?

보안 방면에선 아주 자신만만한 녀석이니 쫄 필요 없다.

 

[SSH Port]

 

참고로 EC2 컴퓨터의 기본 포트번호는 22번이다.

이 22번이라는 구멍이 활짝 열려있어야만 우리는 EC2 서버에 접속할 수 있다.

말인 즉슨 구멍이 닫혀있으면 넣을 수가..

아니 접속할 수가 없겠지?

 

이제 본격적으로 접속을 해보자.

 

...

 

왜 뜸을 들이냐고?

중차대한 문제가 발생했기 때문이다.

지금 여러분이 쓰고 있는 컴퓨터의 OS가 무엇인지 물어본 적이 있었다.

진짜 뭐 쓰냐니까?

이거 굉장히 중요한 문제다.

 

왜냐하면 윈도우에서는 SSH라는 프로그램이 지원되지 않기 때문이다.

오직 MAC에서만 지원된다.

참고로 필자가 쓰고 있는 노트북의 OS는 윈도우다.. ㅡㅡ

 

그렇다면 SSH를 대체할 수단이 없는거야?

 

있지!

 

 

구글 검색창에 저 녀석을 찾아서 깔아주도록 하자.

 

 

요따구로 생겨먹었다.

이걸 가지고 뭘 할거냐고?

 

우선은 필자가 올려주는 소스코드를 수동적으로 따라 치도록 하자.

 

ssh -i /path/my-key-pair.pem ubuntu@AWS EC2 IPv4

 

ubuntu@ 까지는 필자와 똑같이 타이핑 하면 된다.

그 뒤에 쓸 IP 주소는 여러분이 인스턴스를 생성하면서 자동으로 발급받은 바 있다.

 

 

이 주소 말이다.

요 앞으로는 수시로 저 IP 주소를 가져다가 쓸 것이므로 크롬 창에 늘 띄어놔라.

 

AWS에서 발급받은 IP주소까지 Paste 했으면 Enter!

참고로 말하자면 윈도우 환경에서는 ctrl+v 키가 안먹히더라..

 

여기까지 차질없이 진행했으면

우리는 EC2 서버에 무사히 접속한 것이다.

 

또한!

장난감을 웹에 배포하기 위한 첫 단계가 끝난 셈이다.

 

ANG?????

 

ㅎㅎ.. ㅈㅅ.. ㅋㅋ;

이제 챕터 1이 끝난거야.

스탭 바이 스탭으로 사진만 올리면 필자야 편하지.

그렇지만 처음 접하는 사람으로서는 이 프로세스 자체가 굉장히 낯설고 헷갈릴 것이다.

 

아니, 전에 한 번 다뤄봤다며?

똑같은 내용을 왜 수고스럽게 다시 올리는건데?

까먹어서 그렇다. 까먹어서..

필자의 두뇌에 탑재된 SSD의 성능이 처참할 정도로 후달리고, 노후된 걸 뭐 어쩌겠는가?

나중에 구글링 두 번, 세 번 할꺼 한번으로 줄일려고 그런다! 왜? ㅡㅡ

 


2. 서버를 세팅하자!

 

말인 즉슨..

아직 Git-Bash에서 설정 해줘야 하는 놈들이 잇-빠이! 라는 뜻이다.

어어? 한숨부터 쉬지 말아라.

절대 외우라는 거 아니다.

 

# python3 -> python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

# pip3 -> pip
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

# Install Flask on GitBash
pip install flask

# Install pymongo on GitBash
pip install pymongo

# Install dnspython on GitBash
pip install dnspython

# How to run EC2 server constantly?
nohup python app.py &

# How to quit EC2 server?
ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill

# Append OG Tag on index.html
<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="이미지URL" />

 

이렇게 필요한 내용 가져다가 쓰라고 필자가 친절하게 정리까지 해놨다.

필요한 거.. 라고 했지만.. ㅎㅎㅎㅎ

[# How to quit EC2 server] 위로는 그냥 싹 다 가져다가 Git-Bash에 입력해줘야 한다.

그것도 라인 바이 라인으로!

 

우분투는 마치.. DOS로만 작동하던 옛날 컴퓨터 같다.

하나부터 열 까지 전부 사용자가 명령어를 직접 입력해서 컴퓨터에게 일을 시켜야 한다.

애초에 서버용으로 쓰라고 만든 컴퓨터이기 때문에 윈도우 UI와 결이 전혀 다르지.

조금 번거롭겠지만 저 녀석들을 전부 콘솔창에 입력해주자.

 

[# How to quit EC2 server] 는 지금 돌아가고 있는 EC2 서버를 강제종료 할 때 쓰는 명령어이다.

어지간해선 쓸 일이 없기는 한데..

버그를 수정 할 때는 서버를 내려야 하지 않겠는가?

그 때 쓰는 명령어이기 때문에 우선은 세팅에서는 제외해주길 바란다.

 


3. Filezilla를 이용해 파일을 빌드 해보자.

 

원래 필자는 파일을 빌드하는 과정 그 자체보다는..

빌드라는 개념에 더 집중하여 포스팅을 올리고자 하였다.

하지만 파고 들어가기 시작하니까 끝이 없더라.

 

오히려 글의 취지를 해치고, 배꼽이 더 커지는 격이 되어서 싹 다 갈아 엎었다.

이틀을 고민하고, 또 고민한 내용이었는데 아쉬움이 크긴 하다..

나중에 관련된 내용만 따로 정리해서 올리던지 하겠다.

그럼 바로 본론으로 들어가보자.

 

 

구글에 이 녀석을 검색해줘서 설치까지 완료해줘라.

설치 과정은 어려울 게 없으므로 따로 올리지 않겠다.

다만 우리가 앞으로 앱을 만들어 웹 서버에 배포할 때는 무조건 이 녀석을 쓸 것이다.

 

 

요따구로 생겨먹은 파일이 바탕화면에 하나 생성될 것이다.

자주 써야 하는 녀석이므로 목록에서 지우지 말자.

 

 

 

너무도 친절하게 과정과 체크 항목을 편집해서 올려 놓았기 때문에 실수는 용납하지 않겠다.

호스트는 AWS에서 인스턴스를 생성하면서 할당받은 IPv4의 주소를 가져다가 쓰면 된다.

포트 번호는 무조건 22번으로 지정해줘라.

왜??? 라고 묻는 독자들이 있을지도 모르겠다.

필자도 평소에 그런 태도 매우 좋아한다.

하지만 가끔은 그런 줄로 알고 넘어갈 부분도 있는 것이다.

 

가장 중요한 부분은 이전에 발급받은 키-페어를 호출해오는 것이다.

확장자명이 *.pem인 녀석은 PC에 단 하나밖에 없을테니 실수하지 말아라.

체크 항목까지 전부 설정해줬으면 과감하게 ㅇㅋ 버튼 눌러줘라.

사실 실수하면 걍 삭제하고 다시 만들어주면 돼.

 

 

필자의 지시대로 잘 따라왔으면 다음과 같은 화면이 뜰 것이다.

경로 정도는 직접 찾아가 줘야 해.

여기서 유념해야 할 것은 딱 두 가지이다.

좌측 화면이 내 컴퓨터, 우측 화면이 EC2 컴퓨터라는 것이 첫째.

그리고 필자가 화살표로 표시해놓은 진행방향이 두번째로 기억할 녀석이다.

실제로 내 컴퓨터에 있는 녀석들을 그냥 EC2 컴퓨터로 드래그해주는 것만으로

빌드는 간단하게 끝이 난다.

 

아니 그래서 빌드가 대체 뭔데?

라는 의문이 생기는 분들은 우선 넘어가주기 바란다.

그것을 먼저 다뤄보려고 했는데 엎어졌다고 하지 않았는가..

나중에 꼭 포스팅해서 올려줄게.

장담컨데 꺼무위키보다 훨씬 알아먹기 쉬울거다.

 


4. 서버를 세팅하자! (Ⅱ)

 

필자가 필요할 때 가져다가 쓰라면서 정리해놓은 SSH 설정 리스트를 기억하는가?

뒤로 좀 돌아가면 정확히 2번 항목에 정리되어 있다.

그래도 이 파트에서 필요한 명령어들만 별도로 정리해 주겠다.

 

# pip3 설치
sudo apt-get update
sudo apt-get install -y python3-pip

# pip3 대신 pip 라고 입력하기 위한 명령어
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

한꺼번에 복붙하지 말고 한 줄씩 입력해서 실행해줘.

 

# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

요 놈은 포트 포워딩이라고 하는 별도의 기술이다.

AWS에서 생성했던 인스턴스의 인바운드 규칙을 기억할지 모르겠다.

80번 포트로 들어오는 요청을 5000번 포트로 넘겨주라는 명령어이다.

우선은 그렇게만 알고 있어라.

나중에 JSP 관련 내용을 포스팅 할 일이 있으면 그때 더 자세하게 다루기로 하겠다.

 


5. FLASK 서버를 실행해보자!

 

이제 절반 정도 왔다.

필자도 미안하게 생각하고 있으니 조금만 더 기운을 내보자.

코딩에 비하면 별 것도 아닌 내용들이지만 프로세스 하나 하나를 기억하지 못한다면 웹을 배포할 수가 없다.

물론 외우지 말아라.

반복 + 숙달하다 보면 외우기 싫어도 외워진다.

 

자! 플라스크 서버를 실행하기 위해서는 윈도우에서는 Git Bash, MAC에서는 SSH를 다시 켜줘야겠지?

더 이상 파이참에서 서버를 실행할 일은 없을 것이다.

↑ 화살표 몇 번만 탭 해주면 마지막으로 실행한 명령어를 알아서 찾아줄 것이니, 사서 고생하지 말아라.

 

python app.py

필자는 Application 파일의 이름을 그냥 app.py라고 지어줬을 뿐이다.

 

근데 제대로 실행이 안될걸? ㅎㅎㅎ

파이참에서 임포트 해줬던 패키지들을 SSH에서도 동일하게 설치해줘야 하거든.

필자가 명령어 올려줄테니 그냥 복붙해서 써라.

 

# Install Flask on GitBash
pip install flask

# Install pymongo on GitBash
pip install pymongo

# Install dnspython on GitBash
pip install dnspython

파이참에서 쓰던 패키지들과 정확하게 일치한다.

라인 바이 라인으로 입력해서 빠뜨리지 말고 설치해줘라.

그래야 플라스크 서버가 온전하게 구동된다.

 

python app.py

패키지까지 다 설치 해줬으면 마참내!

플라스크 서버를 가동시켜보자.

장담컨대 제대로 실행이 될 것이다.

 

그럼 이제 뭘 해볼까?

웹 서버에 우리가 만든 서비스를 올렸으니 한 번 들어가 줘야지!

 

크롬 브라우저 창에 아래와 같이 입력합니다.

http://[내 EC2 IP]:5000/

 

잘 되니?

접속이 잘 돼?

아마 한참을 기다려도 여러분이 원하는 그 HTML 화면은 안 뜰 것이다.

 

아직 포워딩 해준 5000번 포트가 열려있지 않은 상태거든.. ㅎㅎㅎㅎ

아니 아까 Git Bash에서 명령어 입력 해줬잖아?

 

그러니까 내 말은..

아직 AWS에서 포트를 열어주지 않았다는 것이다.

그거까지 완료를 해줘야 서비스가 개통이 되는거야..

 

다시 AWS 페이지로 들어가보자.

접속이 해제된 분들은 다시 로그인 해주시고..

 

 

인스턴스로 들어가.

해당되는 인스턴스 마킹해.

보안그룹으로 들어가.

 

 

들어가.

 

 

인바운드 규칙을 좀 손 봐주자.

 

 

포트를 두 개 추가 해줘야 한다.

 

기본적으로 HTTP 접속을 위한 80번 포트.

여러분이 지금 당장 http://www.naver.com:80 이라고 쳐도 네이버로 접속이 될 것이다.

거의 대부분의 웹 사이트가 주소 뒤에 붙은 80번 포트를 포워딩 하고 있다고 생각하면 됨.

 

가장 중요한 녀석인 5000번 포트.

플라스크 서버의 기본 포트이기 때문에 이 녀석을 열어줘야 비로소 페이지에 접속할 수 있게 된다.

 

여기까지 해줬으면 마참내!

사이트가 정상적으로 동작할 것이다.

 

http://128.123.456.789

이런 식으로 여러분이 AWS에서 할당받은 IP 주소로 접속 해봐라.

문제없이 돌아가고 있을 것이다.

포트번호 5000은 당연히 생략이 가능하다.

거 녀석도 이미 포워딩 해주고 있으니까!

 

킹치만..

뭔가 똥 싸고서 밑을 덜 닦은 느낌을 지울 수가 없다.

요즘 누가 아이피 주소로 웹 사이트에 접속을 하는가?

님들 네이버 아이피 주소 일일히 외우고 다님?

 


6. nohup 을 설정해주자!

 

문맥으로 봐선 당장에 그럴듯한 도메인 주소를 설정하는 방법부터 다룰 줄 알았지?

필자는 물론이거니와, 여러분 중 누구도 IP 주소를 직접 입력해서 네이버에 접속하지는 않을테니까.

그렇지만 개발하는 우리들 입장에서는 가장 중차대한 문제라고 할 수 없다.

 

 

자자! 잠시 화를 가라 앉히고.. 생각들을 해보시라.

유저들이 겪을 불편함을 왜 벌써부터 고민하는가?

정작 우리는 가장 치명적인 서버 결함을 해결하지 못한 상태인데?

 

감이 좋은 분들은 이미 눈치챘을지도 모르겠다.

발상의 전환을 위해 한 가지 질문을 하겠다.

 

우리는 그동안 어떤 방법으로 서버를 운영해왔지?

 

로컬 개발환경에서는 앱 (app.py) 을 직접 실행시켜줬지.

그래야지만 플라스크 서버가 본격적으로 일을 시작하니까..

 

그럼 앱을 AWS에 배포한 다음부터는?

Git Bash나 SSH 콘솔창을 띄어놓고 강제로 리눅스 서버에 접속해줬다.

별도의 명령어를 입력해서 필요한 패키지를 직접 설치해줬던 거 기억하지?

 

여기서 바로 치명적인 서버결함이 발생한다.

SSH를 종료하면 더 이상 플라스크 서버가 작동하지 않는다는 사실..

알고 있었는가?

몰랐으면 직접 실험해보기 바란다.

 

아니이.. 이럴 거였으면 뭣하러 AWS에서 EC2 컴퓨터를 구매한건데?

우리는 개인 서버실이 없더라도 24시간 동안 쉬지않고 돌아가는 서버 전용 컴퓨터를 원한 거였잖아?

손모가지 날아가붕게?

 

맹새컨데 필자는 절대 사기를 치지 않았다.

80번과 5000번 포트를 여는 과정까지 분명하게 밟았다.

다만 아직 설정 하나를 덜 해줬을 뿐이다.

 

# 아래의 명령어로 실행하면 된다
nohup python app.py &

미안하지만 다시 SSH에서 리눅스 서버에 접속해주길 바란다.

그리고 저 녀석을 토씨 하나 틀리지 말고 그대로 긁어가.

앞으로 SSH에서 서버를 실행할 때는 무조건 저 명령어로 통일해서 쓸거다.

그리고 마지막으로 SSH를 종료한 다음에, IP 주소로 사이트에 접속해볼래?

 

필자를 믿고 여기까지 잘 진행하였다면 별 차질없이 굴러가는 서버를 확인할 수 있을 것이다.

SSH를 강제종료 해줘도 리눅스 서버가 알아서 작동하고 있는 것을 말이다.

우리에게는 이것이 중대사안이다.

우선은 서버가 잘 굴러가야 유저들의 애로사항도 접수할 것 아니겠는가?

 

맨 마지막에 OG 태그를 다루면서 넣으면 딱 좋은 내용이기는 하지만..

만약 도중에 코드를 수정해야 해서 부득이하게 서버를 셧다운 시켜줘야 하는 일이 발생한다면?

 

ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill

요 녀석을 가져다가 써라.

 


7. 도메인을 연결하자!

 

여기까지 오느라 정말정말 수고 많으셨다.

사실상 이것이 퍼블리싱의 마지막 단계이다.

어짜피 OG 태그는 복붙할 소스코드만 던져주고 끝낼 것이니..

마지막으로 집중해서 봐야 하는 부분은 여기가 마직막이다.

 

https://dns.gabia.com/

 

웹을 넘어 클라우드로. 가비아

 

dns.gabia.com

필자가 이 사이트를 소개했는지 모르겠다.

우리가 원하는 도메인 주소를 포워딩 해주기 위해서는

유감이지만 돈을 조금 써야 한다.

당연히 서비스에도 가입을 해야겠지?

가입까지 다 완료했으면 필자를 차근차근 따라와주기 바란다.

 

 

이런 식으로 쓰고 싶은 도메인을 검색해봐라.

참고로 co.kr / .com / or.kr은 겁나 비싸다.

*.shop이 그나마 가장 저렴할거야..

물론 섹시 엘프 퀸이라는 매물이 있을리가 없지.

 

 

이왜진?????

마침 500원이라는 합리적인 가격에 매물이 하나 있네..

필자는 미리 사놓은 게 있기 때문에 눈물을 머금고 여러분에게 양보하겠다.

 

 

찾아서 들어가라.

 

 

레코드 정보를 설정해줄 것이다.

 

 

타입은 건드리지 말고..

호스트 이름은 @로 설정해주면 된다.

IP 주소는 인스턴스 생성할 때 할당받은 IPv4 그 녀석 알지?

그 외에 다른 설정들 건드릴 거 없이 저장해줘라.

 

 

이런 식으로 말이다.

이제부터는 복잡한 IP주소로 접속할 필요가 없다.

방금 여러분이 돈 주고 구매한 도메인으로 접속하는 것이다.

 

http://roonie.shop/

 

History of EVE

대한민국 대표 Visual Rock 그룹! 응원해주세요!

roonie.shop

이렇게.. ㅎㅎ

 


8. OG 태그를 생성해주자!

 

 

단톡방에 간단한 유튜브 링크 하나를 복붙해도 요즘은 다 저런 식으로 뜨지?

이미지 미리보기, 타이틀, 디스크립션..

요 놈을 OG태그라고 한다.

Tag라고 하니 당연히 HTML에 붙여넣어줘야 하겠지?

대부분의 경우에는 상단 Meta Tag에 위치해 있을 것이다.

 

ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill

이럴 때 필요한 명령어가 바로 위에서 소개한 요 녀석이다.

어쨌든 앱을 수정해줘야 하기 때문에 우선은 서버를 내려야하지 않겠는가.

 

# 아래의 명령어로 실행하면 된다
nohup python app.py &

수정이 다 끝나고, 빌드까지 새로 해주면 다시 요 녀석을 실행하면 되는 일이고..

어려울 거 하나도 없다.

 

<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="이미지URL" />

OG 태그는 이 녀석을 가져다가 써라.

저기서 크게 달라질 건 없다.

코딩은 하늘 아래 새로운 것을 창조하는 것이 아니라

거의 대부분이 복사 + 붙여넣기의 연속이다.

 


9. 에필로그..

 

국비지원으로 5주차에 달하는 내용이 드디어 끝이 났다.

웹개발 종합반이라길래 필자는 당연히 Java와 Spring Boot를 쓸 줄 알았는데

의외로 Python과 Flask를 개발 툴로 쓰는 과정이었다.

걱정이 먼저 앞서기는 했는데, 다행이도 파이썬을 깊게 다루는 과정은 아니었다.

딱! 실무에서 당장 써먹을 만한 내용들만 최대한으로 간추린 느낌?

 

그렇기 때문에 앞으로는 나와 여러분 하기 나름이다.

우리가 여태까지 배운 내용은 비전공자를 상대로 한 기초중에 쌩기초 과정이기 때문에..

결국에는 밑천이 드러나는 순간이 올 것이다.

이 점은 현직에서 일하는 개발자들도 똑같다.

이게 뭐였더라..? 하면서 다시 언어공부로 돌아가햐 하는 시점이 반드시 찾아온다.

 

아직 너무나도 부족한 필자지만 이 다음 과정이 막막한 독자분들을 위해

약간의 가이드를 첨가하겠다. 

 

우선, 지금까지 다뤄왔던 파이썬 먼저 짚어볼까?

이 파이썬이라는 녀석은 어디 가서 능력으로 꿇릴 것 없고, 격식 차리는 거 굉장히 싫어하는..

MZ 세대 신입사원과 같은 인터프리터 언어이다.

문법부터가 굉장히 직관적이고, 간편하고, 유저 친화적이다.

이번 기회에 파이썬의 매력에 빠지신 분들은 앞으로 주욱 파이썬을 공부하면 된다.

다만 플라스크 외에 Django 라는 프레임워크가 또 있는 걸로 안다.

프로젝트 규모가 커지면 사실상 쟝고의 의존도가 더 커진다고 한다.

 

반면에 필자가 시작언어로 선택했던 Java는 파이썬과 결이 다르다.

꽤 오랜 시간동안 회사에 충성을 다해왔고, 가진 바 능력과 실적도 이미 확실하게 검증받은..

어떻게든 MZ 세대 신입사원들과 친해지려고 애를 쓰는 부장님 느낌이 나는 컴파일 언어이다.

문법은 파이썬에 비해 너무하다 싶을 정도로 엄격하고, 불편하고, 유저 적대적.. 이라고 하고 싶지는 않다.

프레임워크를 써보면 알겠지만, 어떻게든 유저 친화적으로 다가가기 위해 노력중이다.

필자는 이클립스를 먼저 써봤기 때문에 그것이 더 와닿았다.

 

무엇보다 개발자가 편의성만 추구하려고 하면 어디 쓰겠는가?

모름지기 개발 언어에는 체계과 질서가 있어야 하는 법이다.

이제 갓 대학을 졸업한 전공생들에게는 개소리로밖에 안들리겠지만..

필자는 이미 다른 업계에서 다년간 엔지니어로 일한 경험이 있다.

설계단계부터 탄탄하지 못하면 뒤로 갈수록 두 번, 세 번 자질구레한 업무에 시간을 빼앗기게 된다.

필자의 견해에 동의하는 분들은 Java를 공부해도 좋다.

 

그 외에 게임 개발쪽이라면 기본적으로 C++을 공부해야 할 것이고..

데이터 사이언스에 흥미가 있다면 당연히 SQL부터 공부해야 할 것이다.

 

필자처럼 개발자로의 취칙이나 이직을 고려하시는 분들

이미 현업에서 박 터지게 싸우고 계신 선배님들

모두 앞으로 하시는 일에 건승이 있기를 기원한다.