2023년 8월 : Ubuntu 22.04 버전에서 작동하도록 글 수정
아래 내용대로 따라해서 잘 되었는지 궁금합니다.
성공여부를 간단하게 익명댓글 남겨주시면 감사하겠습니다.
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif)
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
끝났습니다.
이제 재부팅을 해도, 주피터는 항상 실행되어 있습니다.
'오라클 클라우드 > 우분투팁' 카테고리의 다른 글
Datadog 설치(불완전) (2) | 2022.03.04 |
---|---|
리눅스 우분투 하드 폴더 용량 관리 (0) | 2022.02.11 |
파이썬 크롤링 셀레니움을 위한 파일 설치 - 우분투 (0) | 2021.02.19 |
오라클 클라우드 여러 맥북에서 ssh 접속하기 (0) | 2021.02.09 |
우분투(Ubuntu) 하드 디스크 용량 확인 명령어 (0) | 2020.11.22 |
댓글