반응형

보통 ML이 가능한 서버와 원격으로 접속하는 클라이언트 환경에서 주피터 노트북을 사용한다. 그리고, 서버는 리눅스(또는 우분투) 환경에서 사용하는 것이 일반적이라고 생각하기에 그런 환경을 염두에 두고 정리한다.

서버 주소를 알고 있다는 가정하에, SSH로 서버에 접속한다.

SSH 아이디@192.168.0.123
아이디@192.168.0.123's password:

패스워드를 입력하고, 접속하면 원격 서버에 접속하게 된다.

아이디@sss:~$ jupyter notebook --generate-config

콘솔 창에서 위 jupyter notebook --generate-config를 입력하면, jupyter_notebook_config.py 파일이 생성된다.
우분투의 ls -al 명령을 실행하면 현재 위치에 있는 폴더 목록(숨김 폴더까지 보여줌)을 보여준다. 
* 아래는 주피터 노트북 사이트에 나온 내용을 정리함

1. 단일 노트북 서버 실행

주피터 노트북 웹 애플리케이션은 서버-클라이언트 구조를 기반으로 한다. 노트북 서버는 HTTP 요청을 처리하기 위해 ZeroMQ와 Tornado를 기반으로 하는 2-프로세스 커널 아키텍처를 사용한다. 
※ 기본적으로 노트북 서버는 127.0.0.1:8888에서 로컬로 실행되며 localhost에서만 액세스할 수 있다. http://127.0.0.1:8888을 사용하여 브라우저에서 노트북 서버에 액세스할 수 있다.

2. 공개 노트북 서버 실행

웹 브라우저를 통해 원격으로 노트북 서버에 액세스하려면 공용 노트북 서버를 실행하면 된다. 공용 노트북 서버를 실행할 때 최적의 보안을 위해서는 먼저 노트북 서버 보안을 해야 한다.

비밀번호와 SSL/HTTPS로 서버를 보호해야 한다.

먼저 비밀번호를 사용해서 노트북 보안을 하려면 다음과 같은 명령어를 입력하면 된다.

jupyter notebook password

노트북 서버 보안을 위해 인정서 파일과 해시된 비밀번호 생성하는 것부터 시작한다.

아직 구성 파일이 없으면 다음 명령줄을 사용해 노트북용 구성 파일을 만든다.

jupyter notebook --generate-config

~/.jupyter 디렉토리에서, jupyter_notebook_config.py 구성 파일을 편집한다. 기본적으로 노트북용 구성파일은 모든 필드가 주석처리되어 있다. 사용하려는 명령어 옵션만 사용가능하게 주석 처리를 해제하고, 편집해야 한다. 최소한의 구성 옵션 세트는 다음과 같다.

# 인증서 파일, IP, 비밀번호에 대한 옵션을 설정하고 브라우저 자동 열기를 끕니다.
c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebooApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'
# 공용 서버의 모든 인터페이스(ips)에 바인딩하려면 ip를 '*'로 설정합니다.
c.NotebookApp.ip = '*'
c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
c.NotebookApp.open_brower = False

# 서버 액세스를 위해 알려진 고정 포트를 설정하는 것이 좋습니다.
c.NotebookApp.port = 9999

그런 다음 jupyter notebook 명령어를 사용하여 노트북을 시작할 수 있다.

  • 'https를 사용하세요. SSL 지원을 활성화했을 땐,  일반 http://가 아닌 https://를 사용해 노트북 서버에 접속해야 한다는 것을 기억하세요. 콘솔의 서버 시작 메시지에 이 내용을 미리 알려주만 세부 사항을 간과하고 서버가 다른 이유로 응답하지 않는다고 생각하기 쉽습니다. 
  • SSL을 사용하는 경우 항상 'https://'로 노트북 서버에 접속!

이제 브라우저에서 공개 서버의 도메인 'https://your.host.com:9999'를 입력하여 당신의 공개 서버에 액세스할 수 있다.

반응형

3. 방화벽 설정

올바르게 작동하게 하려면, 클라이언트에서 연결할 수 있도록 주피터 노트북 서버가 돌아가는 컴퓨터 방화벽(공유기가 있는 경우 공유기 방화벽 설정도 필요)의 주피터 노트북 구성 파일(jupyter_notebook_config.py)의 액세스 포트(c.NotebooApp.port) 설정에 구성되어 있어야 한다. 방화벽은 49152에서 65535까지의 포트에서 127.0.0.1(localhost)의 연결을 허용해야 한다. 이러한 포트는 서버가 노트북 커널과 통신하는 데 사용된다. 커널 통신 포트는 ZeroMQ에 의해 무작위로 선택되며 커널당 여러 연결이 필요할 수 있으므로 광범위한 포트에 액세스할 수 있어야 한다.

좀 더 많은 명령어를 알아보려면, 주피터 노트북에서 다음과 같은 명령어를 사용하면 된다.

jupyter notebook --help

반응형

+ Recent posts