Wookim

AWS 프로젝트 올리기 (6) 본문

programming language/DevOps

AWS 프로젝트 올리기 (6)

개발자인 경우 2020. 11. 28. 20:27

지난 글에서 EC2에 window terminal을 이용해 접속하는 방법에 대해 작성했다.

 

이번엔 웹서버를 EC2에 저장하고 실행시켜

 

외부에서 접속해보자.

 

 

내용을 앞서 정리하자면 다음과 같다.

 

1. 간단한 python flask 웹 api 서버 만들기

2. 도커파일과 requirements.txt 만들기

3. github에 프로젝트 올리기

4. EC2에 필요한 소프트웨어 다운받기 (파이썬, 도커 등)

5. EC2에 계정 만들기

6. git 프로젝트 clone 하기

7. 도커파일 빌드하여 프로젝트 이미지 만들기

8. 도커 컨테이너 실행하기(프로젝트 실행)

9. EC2 인스턴스 인터페이스(웹페이지)에서 포트 열기(인바운드 규칙 생성)

10. url로 웹페이지 접속하기

 

 

내용이 좀 많으니 나누어서 작성하겠다.

 


 

1. 간단한 python flask 웹 api 서버 만들기

우선 python3와 flask를 다운받아야 한다.

www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

python3를 우선 다운 받자.

다룰 내용이 많으므로 설치하는 방법은 검색하길 바란다.

 

파이선을 다운받고 설치한 다음에

cmd나 파워셀, 윈도우 터미널을 열고 다음과 같이 명령어를 치자.

 

 

터미널에 

python

을 처보고 정상 설치된것을 확인한다.

 

다음으로 flask를 다운받아야 한다.

python의 외부 라이브러리는 패키지 매니저인 pip을 이용한다.

 

다음과 같은 명령어를 쳐보자.

pip install flask

필자는 이미 설치되어 저렇게 보이지만, 없다면 설치되는 로그가 보일것이다.

 

자 적당한 위치에 자신의 프로젝트를 저장할 폴더를 만들자.

바탕화면의 폴더

바탕화면에 프로젝트를 저장할 폴더를 하나 만들었다.

각자 사용하고 싶은 ide로 해당 프로젝트 폴더를 열면된다.

 

필자는 visual studio code를 사용하고 있다. (줄여서 vscode)

code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

필자는 vscode를 이용해 작업해보겠다.

 

설치하고 우측 상단 파일 혹은 file을 클릭 > 폴더 열기 혹은 open folder 클릭> 자신이 만든 프로젝트 폴더 선택

 

한다.

 

저기 모양을 클릭해 파일 하나를 만들겠다.

자 해당 파일을 만들고 내용은 다음과 같이 작성한다.

import flask

app = flask.Flask (__name__)

@app.route('/')
def hello_world():
    return 'plz press the like btn !! by wookim'
    
if __name__ == "__main__":
    app.run(host='0.0.0.0', port='5000')

맨 마지막 app.run(host=....) 이부분이 중요한 부분이다.

host를 0.0.0.0으로 설정한 이유는 외부 ip에서도 접근을 허용한다는 의미인듯하다.

저 옵션을 주지않으면 default로 127.0.0.1로 설정되는데, 로컬에서만 해당 웹서버에 접근이 가능하게 된다.

자세한 내용은 구글에서 검색해보시길...

 

 

위 코드는 정말 필요한 내용만 작성한것인데,

실 운영은(production) 1도 고려하지 않은 코드다.

 

단순히 실행하고 접속 확인만을 위한 가장 단순한 코드이니 참고만 하고

 

절대로 실 운영 코드로 사용하지 말것!

(그럴 사람도 없겠지만 ㅎㅎ..)

 

구글에 flask production 치면 많은 글이 나올듯

 

jhb.kr/358

 

Flask는 Production Server가 아니다.

ec2에 flask로 만든 서버를 실행하고.. 5000 번 포트를 열고.. 외부에서 아무리 접속하려고 해도 안된다-_-  * Environment: production   WARNING: Do not use the development server in a production environ..

jhb.kr

필자가 읽을 예정인 글이다. 참고해보시길.

 

 

다음으로 Dockerfile과 requirements.txt 파일을 만들겠다.

 


2. 도커파일과 requirements.txt 파일만들기

 

 

app.py가 있는 폴더에 

Dockerfile과 requirement.txt 파일을 만들자.

 

두 파일에 대한 간단한 설명을 하자면 

Dockerfile은 도커 이미지를 만들기위한 명세서이다.

 

리눅스 명령어와 python 실행 명령어를 적어 둔다.

 

?

도커 이미지를 만들기 위한 명령어를 직접 치고 관리하기 귀찮으니까

파일로 적어두는것이다.

 

자세한 설명보단 도커 이미지를 만드는 방법을 검색해 보는것을 추천한다.

 

 

자 해당 Dockerfile에 다음과 같이 작성하자

FROM python:latest
RUN mkdir myapp/
COPY app.py myapp/app.py
COPY requirements.txt myapp/requirements.txt
WORKDIR /myapp/
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "app.py"]

간략하게 설명하면

FROM은 기반이될 이미지를 선택하는것. 

RUN은 리눅스 명령어이다. (mkdir은 폴더를 만들라는뜻)

COPY는 Dockerfile과 같은 경로에 있는 파일을 명시하고 도커 이미지의 해당 경로에 복사하라는 뜻이다.

WORKDIR은 명령을 수행할 메인 디렉토리를 설정하는 것(즉 이후 명령어가 수행될 경로 설정)

EXPORSE는 도커 이미지의 포트를 열어두는것

CMD 는 실행 명령어 인데 ["사용할 명령어", "대상"] 이런식으로 사용했다.

 

(필자도 자세한 내용은 모르니 정확한 내용은 꼭 검색해보길)

 

자 다음으로 requirements.txt파일이다.

 

Flask==1.0.2

이거 하나만 사용하면 굳이 쓸 이유가 없는 파일이지만, 

프로젝트 사이즈가 크면 활용도가 매우 높아진다. 

이런것도 있구나 하고 알아두면 좋다.

 

3. github에 프로젝트 올리기

자... 이제 github에 올려야 한다...

github.com/

 

GitHub: Where the world builds software

GitHub is where over 50 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

만약 git을 잘 모른다면...

backlog.com/git-tutorial/kr/

 

누구나 쉽게 이해할 수 있는 Git 입문~버전 관리를 완벽하게 이용해보자~ | Backlog

누구나 쉽게 알 수 있는 Git에 입문하신 것을 환영합니다. Git을 사용해 버전 관리를 할 수 있도록 함께 공부해봅시다!

backlog.com

위의 성지글을 읽어보면 아주 아주 도움이 된다.

 

여기에서 다룰정도의 사이즈는 아니다...

 

어느정도 깃을 다룰줄 안다는 전제하에 진행하겠다.

 

 

github에 로그인하여 새 레포지터리를 만든다.

레포지터리가 만들어진 모습

 

필자는 보통 git을 커맨드로 다루기에 커맨드를 이용해 프로젝트를 올리겠다.

 

순서는 다음과 같다.

 

1. 프로젝트 폴더로 이동

2. 명령창으로 git init 명령어 실행

3. github 접속정보 입력 (id, pw, remote url)

4. git add --all

5. git commit -m "커밋메세지"

6. git push origin master

 

위 단계인데 조금더 자세히 적어보겠다.

 

프로젝트 폴더

해당 프로젝트 폴더의 상단 탐색기 주소창에 cmd를 입력하고 엔터를 누르자

 

 cmd창이 해당 폴더 경로에서 시작된다.

 

자 다음 명령어를 친다.

 

git init

해당 폴더를 git으로 관리하겠다는 의미라 생각하자.

 

다음으로 github 접속정보를 입력해야 한다.

 

우선 remote(깃허브의 주소)를 추가해야한다.

 

github에 만든 레포지토리로 이동해 주소를 복사하거나 우측의 주소 복사 버튼을 클릭한다.

 

다시 커맨드 창으로 돌아서 다음과 같이 명령어를 작성한다.

 

git remote add origin <자신의 깃허브 레포지터리 url>
git remote

위 remote add 는 우리가 관리할 github 레포지터리를 추가하는 명령어이고

remote는 현재 폴더의 github 레포지터리를 보여주는 명령어 이다.  (즉 제대로 추가 되었는지 확인하는 명령어)

자 어디다 올릴지 정했으니 파일들을 저장하고 올려보자

 

git add --all
git commit -m "first commit"

다음으로 github 레포지터리에 올리는 명령어를 치면

git push origin master

필자는 별도의 과정없이 바로 올라갔는데, 

github의 ID pw를 요구할 수도 있다.

 

당황하지 말고 입력하면 문제없을 것이다.

 

만약 매번 묻는다면 git global login 키워드로 구글링하여 설정하길 바란다.

 

레포지토리에 해당 파일들이 올라갔다.

 

이번글은 여기까지..

'programming language > DevOps' 카테고리의 다른 글

AWS 프로젝트 올리기 (8)  (0) 2020.12.09
AWS python, docker 설치 (7)  (0) 2020.11.30
윈도우 터미널을 이용해 EC2 접속하기 (5)  (39) 2020.11.26
AWS SSH 설정과 EC2 실행 (4)  (0) 2020.11.25
AWS와 SSH (3)  (0) 2020.11.25
Comments