본문 바로가기
오라클 클라우드/우분투팁

주피터 (Jupyter Notebook) 설치하여 웹브라우저로 서버 관리 - 우분투

by xavi2019 2021. 2. 19.

 

2023년 8월 : Ubuntu 22.04 버전에서 작동하도록 글 수정

아래 내용대로 따라해서 잘 되었는지 궁금합니다.
성공여부를 간단하게 익명댓글 남겨주시면 감사하겠습니다.

 

 

Jupyter Notebook은 vim 에디터 사용이 익숙하지 않고, 파일 업로드, 다운로드 등의 작업을 어려워하는 분들을 위한 웹브라우저 기반의 서버 관리자 프로그램입니다.

 

터미널 작업도 브라우저에서 할 수 있어서 매우 유용합니다. ssh 클라이언트가 없는 곳에서도 쉽게 작업이 가능하므로 설치해 두면 아주 유용합니다.

 

설치하는 법은 조금 까다롭고 번거롭지만 한번 설정해 두면 그 편함은 말로 다 할 수 없습니다.

 

꼭 시도해 보세요.

 

설치하기 

sudo apt update

sudo apt update
sudo apt upgrade
sudo apt install python3-pip

# Ubuntu 22.04 이전
sudo pip3 install notebook

# Ubuntu 22.04 이후
pip3 install notebook
sudo apt install jupyter-core

 

접속 비밀번호 설정

설치 후, 비밀번호를 생성해 보겠습니다.

 

python3 를 실행하고,

python3

아래와 같이 입력하고 엔터를 칩니다.

# Ubuntu 22.04 이전
from notebook.auth import passwd; passwd()

# Ubuntu 22.04 이후
from jupyter_server.auth import passwd; passwd()

비밀번호를 입력합니다.

ubuntu@vm2-alimie:~$ python3
Python 3.8.5 (default, Jul 28 2020, 12:59:40)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from notebook.auth import passwd
>>> passwd()
Enter password:
Verify password:
'argon2:$argon2id$v=19$m=10240,t=10,p=생략'
>>>

'argon2:$argon2id$v=19$m=10240,t=10,p=생략' 

 

위 비밀번호 전체를 일단 메모장 같은 곳에 저장해 놓습니다.

 

Ctrl + D를 눌러 pytho3를 빠져나옵니다.

 

 

환경설정

이제 주피터 환경설정을 진행합니다.

진행하기 전에 서버의 Private IP를 먼저 알아야 합니다.

hostname -I

라고 쳐 보면, 아래와 같이 Private IP가 나옵니다.

ubuntu@teracokr-01:~$ hostname -I
10.0.0.65

 

 

이제 환경설정을 시작합니다.

jupyter notebook --generate-config

 

위 명령어에서 에러가 나면, ssh를 exit로 빠져나가고 다시 서버에 ssh 로 접속해보세요.

그리고 위 명령어를 실행하여 아래와 같은 메시지가 보이면 계속 진행합니다.

Writing default config to: /home/ubuntu/.jupyter/jupyter_notebook_config.py

 

에디터로 위 파일을 편집합니다.

vi /home/ubuntu/.jupyter/jupyter_notebook_config.py

i를 눌러, 편집모드로 들어가서 아래와 같이 적어줍니다.

# 파일의 제일 끝
c = get_config()
c.NotebookApp.password = u'argon2:$argon2id$v=19$m=10240,t=10,p=생략'
c.NotebookApp.ip = '10.0.0.65'
c.NotebookApp.notebook_dir = '/'
c.NotebookApp.port = 8888

 

방화벽 열기 

우리는 8888번 포트로 접속을 할 것이기때문에, 방화벽을 열어줍니다. 

오라클 클라우드에서는 두 가지를 해줘야 하죠?

이전 글을 참고하세요.

 

sudo iptables -I INPUT -p tcp -s 0.0.0.0/0 --dport 8888 -j ACCEPT
# 리부팅이 되더라도 유지하도록
sudo service netfilter-persistent save
sudo service netfilter-persistent reload

 

그리고 오라클 클라우드 웹브라우저 관리자로 들어가서 보안목록에 포트를 추가해줍니다.

잘 모르겠으면 이전글 참고하세요.

 

 

실행하기 

자 마지막으로 주피터 노트북을 실행합니다.

 

sudo jupyter-notebook --allow-root --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py

 

브라우저로 접속하기 

 

그리고 브라우저로 접속해봅니다.

http://여러분인스턴스의공인IP:8888/

 

아래와 같이 뜨면 일단 성공한 것입니다.

아까 설정한 비밀번호로 접속해봅니다.

 

접속이 되면 아래와 같이 보입니다.

 

 

 

터미널도 실행할 수 있고, 파일 업로드도 할 수 있습니다.

 

백그라운드 실행으로 바꾸기

 

Ctrl + z

bg

disown -h

 

를 차례대로 입력하면 터미널 창이 닫혀도 백그라운드에서 돌아가게 됩니다.

 

 

서버 재시작해도 항상 실행하게 

 

먼저 백그라운드에서 실행되는 주피터를 멈춰보겠습니다.

프로세스 아이디를 먼저 확인해볼게요.

sudo netstat -nap | grep 8888

# netstat 가 설치 안되어 있으면
sudo apt install net-tools

27746 이 프로세스 아이디입니다. 이 프로세스를 죽여보겠습니다.

sudo kill -9 27746

다시 브라우저로 접속해보면 접속이 안되는 것을 알 수 있습니다.

 

 

SSL로 접속하기 

자 이제 ssl 로 접속되게 해 볼까요?

홈 디렉토리로 이동하여(이미 홈이거나, 홈이 아니어도 상관은 없지만, 기왕이면 홈으로)

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout jupyter-key.key -out jupyter-cert.pem

위와 같이 입력하고 나면 ls 명령어를 이용해서 SSL 키-쌍(Key Pair) 파일이 생성된 것을 알 수 있습니다.

 

나중을 위해 *.pem 파일 다운 받기 

sFTP로 파일을 다운받으시거나 ftp 설정을 안한 분은 아래와 같이 다운 받으세요.

 

자 좀 번거롭습니다만, 이 과정은 꼭 해 줍시다. 다시 주피터를 실행합니다.

아직은 https가 아니고 http 입니다.

sudo jupyter-notebook --allow-root --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py

 

 

그리고 브라우저로 접속합니다. 

http://여러분의 공인IP:8888/

 

 

로그인 후, /home/ubuntu 로 이동한 후 *.pem 파일을 다운 받습니다.

맥북의 Finder를 열어서 pem 파일을 더블클릭 합니다.

인증서 보기를 눌러보면 아까 만든 인증서 이름이 보입니다. monco

추가를 눌러 키체인 관리에서 다시 monco를 더블클릭 후 아래와 같이 항상신뢰로 해 줍니다.

 

SSL 적용하기 

 

자 다시 이제 환경설정 파일로 들어가서

vi .jupyter/jupyter_notebook_config.py

 

 

제일 끝에 아래 두줄을 추가해줍니다.

c.NotebookApp.notebook_dir = '/'
c.NotebookApp.port = 8888

# 아래 두 줄 입력해줍니다.
c.NotebookApp.certfile = u'/home/ubuntu/jupyter-cert.pem'
c.NotebookApp.keyfile = u'/home/ubuntu/jupyter-key.key'

 

 

 

기존에 실행한 주피터 노트북을 죽입니다. 위에서 한 작업과 동일합니다.

sudo netstat -nap | grep 8888

sudo kill -9 프로세스아이디 

 

 

다시 실행해 봅니다.

sudo jupyter-notebook --allow-root --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py

 

http 가 아니고 https 로 된 것을 볼 수 있습니다.

 

이제 브라우저에서 접속을 해 보겠습니다.

 

만약 키체인 파일을 추가하지 않고크롬으로 접속해 보면... 아래와 같이 접근이 안되지만,

 

키체인 추가하는 과정과 항상신뢰의 과정을 거치면 아래와 같이 접속할 수 있습니다.

 

접속이 잘 됩니다.

 

서비스로 등록하여 리부팅 되어도 실행되게 

 

자 이제 마지막으로 리부팅이 되어도 실행이 되도록 서비스에 등록해 보겠습니다.

 

 

Ctrl-C로 주피터 실행을 멈추시고 아래와 같이 입력합니다.

sudo vi /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter Notebook Server

[Service]
Type=simple
User=ubuntu
ExecStart=/usr/bin/sudo /usr/local/bin/jupyter-notebook --allow-root --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py

[Install]
WantedBy=multi-user.target

자 이제 서비스에 등록합니다.

 

sudo systemctl daemon-reload
sudo systemctl enable jupyter
sudo systemctl start jupyter

# 상태 확인
sudo systemctl status jupyter

 

끝났습니다.

 

이제 재부팅을 해도, 주피터는 항상 실행되어 있습니다.

댓글