Type Here to Get Search Results !

파이썬 브라우저 구글 코랩 사용 및 드라이브 연결 | 웹서버 구축하기 | ngrok

이 글에서는 구글 코랩 사용법, 구글 코랩과 드라이브 연결, 구글 코랩을 통해 온라인 웹서버를 만들어서 접속해 보는 방법에 대해서 설명합니다. 

  • 구글 코랩(Colab) 소개
  • 코랩에서 구글 드라이브 사용하기
  • 구글 코랩에서 웹서버 구축하기  

구글 코랩(Colab) 소개



Google Colaboratory(Colab)는 Python 코드를 작성하고 실행할 수 있는 무료 온라인 서비스입니다. 웹 브라우저에서 실행되므로 설치나 구성이 필요하지 않습니다. Python 코드, Markdown 텍스트 및 기타 리소스를 포함할 수 있는 Jupyter 노트북을 호스팅하는 데 사용할 수 있습니다. Colab은 머신 러닝 프로젝트, 데이터 분석 및 시각화, 코드 교육 및 튜토리얼을 만드는 데 자주 사용됩니다.


Colab은 Google의 클라우드 서버에서 코드를 실행하므로 컴퓨터의 성능에 관계없이 모든 종류의 작업에 사용할 수 있는 강력한 도구입니다. 또한 GPU와 TPU를 포함한 다양한 컴퓨팅 리소스에 액세스할 수 있으므로 대규모 데이터 세트 작업 및 복잡한 모델 학습과 같은 작업에 적합합니다.


Colab을 사용하려면 Google 계정이 있어야 합니다. 그런 다음 Google Drive에서 새 Colab 노트북을 만들거나 GitHub 또는 기타 소스에서 기존 노트북을 가져올 수 있습니다. 노트북이 생성되면 코드, Markdown 텍스트 및 기타 리소스를 추가할 수 있습니다. 코드를 실행하려면 실행 버튼을 클릭하기만 하면 됩니다. Colab은 코드의 출력을 실시간으로 표시하므로 진행 상황을 확인하고 오류를 디버깅할 수 있습니다.


Colab은 배우기 쉽고 사용하기 편한 무료 도구입니다. 머신 러닝, 데이터 분석 또는 코드 교육에 관심이 있다면 Colab을 사용해 보세요.


Jupyter 노트북은 웹 브라우저에서 코드, 텍스트, 식을 작성하고 실행할 수 있는 오픈 소스 소프트웨어입니다. 파이썬, R, Julia를 포함한 다양한 프로그래밍 언어를 지원합니다. Jupyter 노트북은 데이터 분석, 기계 학습 및 시각화를 포함한 다양한 작업에 사용됩니다.

구글 코랩 바로가기

구글 코랩(Colab) 사용법 


단순히 코랩을 사용하는 것은 아무 위치에서나 "+코드"를 눌러서 코드셀을 실행할 수 있습니다. 

구글 코랩 코드셀 삽입

그러나, 내 전용의 Jupyter 노트북을 만드는 것으로 시작하는 것이 좋습니다.  

기본적으로 새 노트(Jupyter 노트북)를 만들면 구글 드라이브에 저장됩니다. 


새 노트(Jupyter 노트북) 만들기 화면

내 노트북에서 코드셀을 열어서 파이썬 코드를 테스트해 봅니다. 

내 노트북에서 코드셀을 열어서 파이썬 코드를 테스트하기


코랩에서 구글 드라이브 사용하기 


코랩에서 구글 드라이브를 사용하기 위해서는 다음의 코드를 입력하여 실행하는 것으로 구글 드라이브를 연결할 수 있습니다.

from google.colab import drive
drive.mount('/content/drive')

위의 코드를 구글 코랩의 내 노트에 코드셀로 입력하고 실행하면 구글 드라이브 연결 권한 확인 창이 나오고 연결이 됩니다. 

이 방법이 불편하시면 아래와 같이 구글 코랩 왼쪽에서 폴더 모양을 클릭하시고 위에 세 번째 아이콘인코랩에서 드라이브 아이콘를 눌러서 드라이브를 연결할 수도 있습니다. 이 방법을 사용하시면 위의 코드를 자동으로 코랩에서 넣어 줍니다.


구글 코랩 왼쪽의 아이콘들

위에서 drive가 구글 드라이브입니다. 그리고, 현재 실행 위치는 content가 됩니다. 내 drive에 있는 파이썬 파일을 실행하기 위해서는 해당 파일을 content로 옮겨 놓고 실행해야합니다. 

구글 코랩에 구글 드라이브 연결화면



구글 코랩에서 웹서버 구축하기  


구글 코랩은 Flask 웹 프레임워크를 지원하므로 간단한 웹 애플리케이션을 만들고 실행해 볼 수 있습니다.

python으로 Flask 웹 소스 생성하기

Flask는 파이썬으로 웹 애플리케이션을 개발하기 위한 경량화된 웹 프레임워크입니다. Flask는 간결하고 확장 가능한 설계를 가지고 있으며, 사용자 친화적인 인터페이스와 유연한 구조를 제공하여 웹 애플리케이션 개발을 용이하게 합니다.

웹 애플리케이션 서버 코드를 생성하여 구글 드라이브에 최상위 디렉토리 MyDrive 디렉토리에 아래의 예제 소스를 webApp.py 파일로 저장합니다.

from flask import Flask

app = Flask(__name__)  # Flask 애플리케이션 객체 생성

@app.route('/')  # 루트 URL에 대한 라우팅 및 핸들러 등록
def hello():
    return "Hello World!"  # "Hello World!" 문자열 반환

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8090, debug=True)  # 애플리케이션 실행, 호스트 및 포트 설정, 디버그 모드 활성화

ngrok로 외부에서 접속가능한 로컬 코랩 노트북 네트워크 환경 구성

다음으로는 ngrok로 외부에서 접속가능한 로컬 코랩 노트북 네트워크 환경을 구성해야 합니다. 

코랩은 가상 컴퓨터이므로 해당 컴퓨터에서 웹 애플리케이션을 실행하더라도 접속할 수 있는 주소가 존재하지 않습니다. 

그러므로, Google Colab에서 실행 중인 Flask 애플리케이션을 외부에서 액세스하려면, 공용 IP 주소를 사용하여 액세스할 수 있도록 포트 포워딩을 설정해야 합니다. 이를 위해서는 ngrok 같은 터널링 서비스를 사용할 수 있습니다.

이를 위해서 코랩 코드셀을 추가하고 아래와 같이 ngrok와 pyngrok를 설치합니다. 

!pip install ngrok
!pip install pyngrok

ngrok는 로컬 서버를 인터넷에 공개적으로 접근할 수 있도록 도와주는 도구입니다. 일반적으로 개발 및 테스트 목적으로 사용되며, 로컬 환경에서 개발 중인 웹 애플리케이션을 외부에서 접근하여 테스트할 수 있도록 해줍니다. ngrok은 인터넷을 통해 터널을 생성하여 로컬 서버와 외부 사이의 연결을 중개합니다. 이를 통해 로컬 서버를 인터넷에 노출시키고, 외부에서 해당 서버에 접근할 수 있게 됩니다. Ngrok은 간편한 설정과 사용법으로 인기가 있으며, 다양한 플랫폼에서 지원됩니다. ngrok을 사용하면 로컬 서버의 포트를 지정하여 터널을 생성할 수 있습니다. ngrok은 고유한 도메인 및 포트를 제공하며, 이를 통해 외부에서 해당 서버에 접속할 수 있습니다. 또한, ngrok은 HTTP, HTTPS, TCP 등 다양한 프로토콜을 지원하여 다양한 종류의 서버를 터널링할 수 있습니다. ngrok을 통해 로컬 서버를 인터넷에 노출시킬 때는 보안에 주의해야 합니다. ngrok은 임시적인 테스트 목적으로 사용되는 것이 일반적이며, 실제 운영 환경에서 사용하기에는 적합하지 않을 수 있습니다. 외부로 노출되는 서버에는 적절한 보안 조치를 취해야 합니다. ngrok은 개발자 커뮤니티에서 널리 사용되는 도구로, 로컬 개발 및 테스트 시에 유용하게 활용될 수 있습니다.

https://ngrok.com/에 접속하여 무료 가입을 합니다.

ngrok 서비스 바로가기

가입은 간단하게 gmail로 가능합니다. gmail로 가입 후 인증 항목에 가시면 개인별 인증 번호가 있습니다. 이 번호를 이용해서 코랩 노트북을 웹에서 접속 가능하도록 합니다.

ngrok은 무료 플랜과 유료 플랜이 있습니다. 무료 플랜인 경우 기본적으로 8시간 동안 세션을 유지 할 수 있고 이후에는 도메인이 변경됩니다. 하지만 가입 후 Auth 토큰을 생성하면 세션을 시간 제한 없이 사용 할 수 있습니다. 

ngrok은 무료 플랜은 몇 가지 제약 사항이 있지만 개인적으로 사용하는 목적으로는 충분할 것을 생각합니다.

먼저 Auth 토큰을 생성하기 위해서 공식 웹사이트에 로그인 합니다.  처음 로그인하면 Auth 토큰을 생성하라는 안내가 나오기도 합니다. 아니면 아래와 같은 화면에서 왼쪽의 Your Authtoken을 누르면 복사할 수 있는 창이 나타납니다. 여기서 Copy를 누르시면 됩니다. 

ngrok의 auto token Auth 토큰 생성하는 방법 이미지

이제 다시 구글 코랩으로와서 코드셀에서 ngrok를 이용하여 나의 Auth 토큰을 활성화 해줍니다.

!ngrok authtoken <YOUR_AUTH_TOKEN>

<YOUR_AUTH_TOKEN> 항목에 자신의 Auth 토큰을 넣어주고 실행하면 됩니다. 아래 이미지는 제 토큰을 모두 보여드릴 수 없어서 뒷부분은 일부러 짤랐습니다.

ngrok authtoken 활성화

아래와 같이 코드를 입력 후 실행하면 해당 결과로 ngrok 터널링 주소가 나타납니다. 해당 주소를 웹 브라우저에 입력하면 내 flask 웹 애플리케이션에 접속할 수 있습니다.
from pyngrok import ngrok
import os

os.chdir('/content/drive/MyDrive')

# Flask 애플리케이션 실행
!nohup python webApp.py &

# ngrok 실행
url = ngrok.connect(8090)
print("Public URL:", url)


구글 코랩의 코드셀에서 ngork 연결과 함께 실행한 화면

최초 접속시 아래와 같은 경고 메시지가 한번 나오고 visite site를 누르면 그 다음부터는 계속 접속 가능하게 됩니다.

ngrok 최초 접속시 안내 문구 화면


# 현재 작업 디렉토리 변경
import os
os.chdir('/content/drive/My Drive')

Colab에서 파이썬 웹서버를 만드는 방법은 다음과 같습니다.

  1. Colab 노트북을 엽니다.
  2. import flask 명령을 사용하여 Flask를 가져옵니다.
  3. app = Flask(__name__) 명령을 사용하여 Flask 앱을 만듭니다.
  4. @app.route("/") 데코레이터를 사용하여 라우트를 만듭니다.
  5. def hello(): 함수를 사용하여 hello world 메시지를 보여줍니다.
  6. return "Hello, world!" 문으로 핸들러를 반환합니다.
  7. app.run() 명령을 사용하여 웹 서버를 시작합니다.

이렇게 하면 Colab에서 실행되는 간단한 웹 서버가 생성됩니다. 웹 서버에 액세스하려면 ngrok를 통해 인증 토큰을 생성하고 관련 코드를 파이썬으로 실행합니다. Colab 노트북에 나타난 ngrok URL을 브라우저의 주소 표시줄에 입력합니다.

웹 브라우저에서 hello world!를 보실 수 있습니다.

웹 브라우저에서 Hello world! 출력 화면