본문 바로가기

카테고리 없음

[정리]jupyter lab,notebook 서버 호스팅, 원격접속하기!

안녕하세요!

A 부터 Z 까지 공유하는 SA2Z(Share A to Z) 블로그 입니다.!

오늘은 파이썬코딩에 유용한 툴인 주피터 랩(노트북)과 관련한 내용을 공유드리려합니다.!

웹기반인 주피터랩을 실행한 pc,노트북에서만 쓴다는건 참 아쉬운 일일텐데요!

주피터랩(노트북)을 실행하고, 외부에서 원격으로 접속할 수 있도록 설정하는 방법에대해 정리해보려 합니다.

# 주피터랩 설치

# 주피터 랩 원격설정

# 실행


# 주피터랩 설치

주피터랩(jupyter lab)은 주피터노트북(jupyter notebook)이 파일목록을 보여주는 탭과 별도의 탭들을 별도로 생성하는것과 대비해서 좌측에 경로트리를 두고, 하나의탭 안에서 소규모탭들을 추가하면서 개발할 수 있는 발전된 개발도구 입니다.

[주피터 노트북] 아래와 같이 파일경로를 볼수 있는 탭, 각각의 노트북파일당 브라우저 탭을 추가하여 개발진행하는 방식

주피터 노트북

[주피터랩] - 아래외 같이 브라우저내 1개의 탭 안에서 왼편에 경로표기, 오른편에 노트북파일당 내부 탭 생성으로 개발진행

주피터 랩

주피터랩의 경우 확장프로그램(extension)을 통해 부가적인 기능을 손쉽게 추가할 수 있습니다, 메모리에 올라가있는 변수들을 모니터링하거나 용량을 볼 수도 있고, 개발에 도움이될만한 툴들이 많이 있으니 주피터랩을 활용하시는게 좋습니다.

설치방법은 리눅스 우분투의 경우 패키지 설치방법이 가장 간단합니다.

$ sudo apt-get update 패키지설치 사이트목록을 업데이트하는 개념

$ sudo apt-get install jupyterlab -y 끗.


# 주피터랩 원격 설정

주피터랩은 주피터 노트북에서 시작했기 때문에 명령어는 주피터 노트북으로 실행하면 됩니다.

최초 주피터랩&노트북은 외부와 무관하게 로컬호스트에서만 실행되도록 디폴트 되어 있습니다.

외부와의 접속을 위한 제약사항을 만들고, 몇가지 설정 후 호스팅을하면 외부에서도 붙을 수 있습니다.

* 설정파일 생성
  $ jupyter notebook --generate-config -> 파일생성 /home/[username]/.jupyter/jupyter_notebook_config.py

* 외부접속시 비밀번호 설정
  $ jupyter notebook passward
  - 두번의 비밀번호 입력시 /home/[username]/.jupyter/jupyter_notebook_config.json 생성

*비밀번호 암호화 내용 확인 -> 빨간부분 복사,
  $ cat /home/[username]/.jupyter/jupyter_notebook_config.json
>> {
          "NotebookApp": {
          "password": "sha1:********"
       }

* /home/[username]/.jupyter/jupyter_notebook_config.py 파일 내용 수정 - 외부접속아이피,비밀번호,포트

- 외부IP제한 : c.NotebookApp.ip = '*'  // 모든 외부 IP에서 접속 허용
- 비밀번호 설정 : c.NotebookApp.password = 'sha1:************' // 위에서 암호화된 내용을 붙여넣기
- 포트설정 : c.NotebookApp.port=8888 // 원하는 포트번호 최대 5자리로 설정


# 주피터 랩 실행 & 원격접속

이제 준비는 끝났으니, 호스팅을 하려는 pc의 터미널에서 주피터 랩을 실행하기만 하면 된다.

$ jupyter lab 
   * $ jupyter lab --allow-root 만약 개발용도커컨테이너를 만들었을경우 파일권한관련 이슈가 있으므로 뒤에 옵션을 붙여주면 됩니다.

성공적으로 호스팅이 됬을경우, 호스팅한 서버의 ip와포트번호로 타 pc브라우저를 통해 접속하면 됩니다.
주소창 - ___.___.___.___ :8888  -> 비밀번호 입력

1개의 서버를 여러명과 동시에 쓸경우나, 프로젝트별 필요한패키지가 다를경우 별도의 주피터랩을 열어서 포트값만 달리해서 개발환경을 구성하는것도 하나의 방법이 될 것 같네요!