주피터 노트북 서비스 띄우기

2021-07-06

.

Data_Engineering_TIL(20210706)

[참고자료]

블로그글 ‘쥬피터 노트북을 서비스(서버)로 구동’ 을 읽고 실습한 내용입니다.

URL : https://zelda.tistory.com/entry/%EC%A5%AC%ED%94%BC%ED%84%B0-%EB%85%B8%ED%8A%B8%EB%B6%81%EC%9D%84-%EC%84%9C%EB%B2%84%EB%A1%9C-%EA%B5%AC%EB%8F%99

[사전준비사항]

1) 운영체제 : Ubuntu 18.04 LTS

2) 사용자ID : ubuntu

3) 작업경로 : /home/ubuntu/jupyter

** mkdir -p /home/ubuntu/jupyter 명령어로 폴더생성

4) 가상환경디렉토리 : /home/ubuntu/venv/jupyter

** mkdir -p /home/ubuntu/venv/jupyter 명령어로 폴더생성

[실습내용]

Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-1045-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Jul  6 12:18:31 UTC 2021

  System load:  0.35              Processes:           119
  Usage of /:   3.9% of 29.02GB   Users logged in:     0
  Memory usage: 2%                IP address for ens5: 10.0.1.12
  Swap usage:   0%

0 packages can be updated.
0 of these updates are security updates.


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

/usr/bin/xauth:  file /home/ubuntu/.Xauthority does not exist
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

ubuntu@ip-10-0-1-12:~$ sudo apt-get update -y

ubuntu@ip-10-0-1-12:~$ sudo apt-get upgrade -y

ubuntu@ip-10-0-1-12:~$ pwd
/home/ubuntu

ubuntu@ip-10-0-1-12:~$ ll
total 36
drwxr-xr-x 5 ubuntu ubuntu 4096 Jul  6 12:19 ./
drwxr-xr-x 3 root   root   4096 Jul  6 12:15 ../
-rw------- 1 ubuntu ubuntu   58 Jul  6 12:18 .Xauthority
-rw-r--r-- 1 ubuntu ubuntu  220 Apr  4  2018 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Apr  4  2018 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Jul  6 12:18 .cache/
drwx------ 3 ubuntu ubuntu 4096 Jul  6 12:18 .gnupg/
-rw-r--r-- 1 ubuntu ubuntu  807 Apr  4  2018 .profile
drwx------ 2 ubuntu ubuntu 4096 Jul  6 12:15 .ssh/
-rw-r--r-- 1 ubuntu ubuntu    0 Jul  6 12:19 .sudo_as_admin_successful

ubuntu@ip-10-0-1-12:~$ python3 --version
Python 3.6.9

# 작업경로 생성
ubuntu@ip-10-0-1-12:~$ mkdir -p /home/ubuntu/jupyter

# 가상환경 경로 생성
ubuntu@ip-10-0-1-12:~$ mkdir -p /home/ubuntu/venv/jupyter

# python 가상환경 설치 및 실행
ubuntu@ip-10-0-1-12:~$ sudo apt install virtualenv -y
    
ubuntu@ip-10-0-1-12:~$ virtualenv --python=python3 /home/ubuntu/venv/jupyter
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/ubuntu/venv/jupyter/bin/python3
Also creating executable in /home/ubuntu/venv/jupyter/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

ubuntu@ip-10-0-1-12:~$ source /home/ubuntu/venv/jupyter/bin/activate
    
(jupyter) ubuntu@ip-10-0-1-12:~$ 
    
(jupyter) ubuntu@ip-10-0-1-12:~$ pip install jupyter

# jupyter_notebook_config.py 생성
(jupyter) ubuntu@ip-10-0-1-12:~$ jupyter notebook --generate-config
Writing default config to: /home/ubuntu/.jupyter/jupyter_notebook_config.py

(jupyter) ubuntu@ip-10-0-1-12:~$ cd /home/ubuntu/.jupyter/
    
(jupyter) ubuntu@ip-10-0-1-12:~/.jupyter$ ll
total 48
drwx------ 2 ubuntu ubuntu  4096 Jul  6 12:31 ./
drwxr-xr-x 8 ubuntu ubuntu  4096 Jul  6 12:31 ../
-rw-rw-r-- 1 ubuntu ubuntu 37856 Jul  6 12:31 jupyter_notebook_config.py

# jupyter_notebook_config.py에 대해서 아래와 같이 백업본을 뜬다.
(jupyter) ubuntu@ip-10-0-1-12:~/.jupyter$ cp jupyter_notebook_config.py jupyter_notebook_config_backup.py
    
(jupyter) ubuntu@ip-10-0-1-12:~/.jupyter$ vim jupyter_notebook_config.py

...

#외부 접속 허용
c.NotebookApp.allow_origin = '*'

...

#시작시 브라우저 실행 안함

...

c.NotebookApp.open_browser = False

...

(jupyter) ubuntu@ip-10-0-1-12:~/.jupyter$ jupyter notebook password
Enter password:
Verify password:
[NotebookPasswordApp] Wrote hashed password to /home/ubuntu/.jupyter/jupyter_notebook_config.json

######################################################################################################################
# 또는 아래와 같이 비번을 설정해도 된다.
######################################################################################################################

(jupyter) ubuntu@ip-10-0-1-12:~/.jupyter$ python3
Python 3.8.10 (default, Jun 2 2021, 10:49:15)
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from notebook.auth import passwd
>>> passwd()
Enter passwords: mypassword123321!
Verify password: mypassword123321!
'xklqnwelxkqnexklqnelkqwneclqkneclqnqwx'
>>> exit()

(jupyter) ubuntu@ip-10-0-1-12:~/.jupyter$ vim jupyter_notebook_config.py

...

c.NotebookApp.password = 'xklqnwelxkqnexklqnelkqwneclqkneclqnqwx'

...

######################################################################################################################

(jupyter) ubuntu@ip-10-0-1-12:~/.jupyter$ cd /home/ubuntu/jupyter
    
(jupyter) ubuntu@ip-10-0-1-12:~/jupyter$ vim jupyter.sh
    
# 주피터 노트북 실행 스크립트 작성
(jupyter) ubuntu@ip-10-0-1-12:~/jupyter$ cat jupyter.sh
#!/bin/bash

source /home/ubuntu/venv/jupyter/bin/activate

cd /home/ubuntu/jupyter

jupyter notebook --ip=0.0.0.0

(jupyter) ubuntu@ip-10-0-1-12:~/jupyter$ ll
total 12
drwxrwxr-x 2 ubuntu ubuntu 4096 Jul  6 12:41 ./
drwxr-xr-x 8 ubuntu ubuntu 4096 Jul  6 12:41 ../
-rw-rw-r-- 1 ubuntu ubuntu  115 Jul  6 12:41 jupyter.sh
    
(jupyter) ubuntu@ip-10-0-1-12:~/jupyter$ chmod 755 jupyter.sh
    
(jupyter) ubuntu@ip-10-0-1-12:~/jupyter$ ll
total 12
drwxrwxr-x 2 ubuntu ubuntu 4096 Jul  6 12:41 ./
drwxr-xr-x 8 ubuntu ubuntu 4096 Jul  6 12:41 ../
-rwxr-xr-x 1 ubuntu ubuntu  115 Jul  6 12:41 jupyter.sh*

# 주피터 노트북 서비스 등록하기
(jupyter) ubuntu@ip-10-0-1-12:/etc/systemd/system$ sudo vim jupyter.service
    
(jupyter) ubuntu@ip-10-0-1-12:/etc/systemd/system$ cat jupyter.service
[Unit]

Description=Jupyter Notebook

[Service]

Type=simple

WorkingDirectory=/home/ubuntu/jupyter

ExecStart=/home/ubuntu/jupyter/jupyter.sh

User=ubuntu

Group=ubuntu

Restart=always

[Install]

WantedBy=multi-user.target

# 서비스 시작 및 활성화
(jupyter) ubuntu@ip-10-0-1-12:/etc/systemd/system$ cd ~
    
(jupyter) ubuntu@ip-10-0-1-12:~$ pwd
/home/ubuntu

(jupyter) ubuntu@ip-10-0-1-12:~$ sudo systemctl start jupyter.service
    
(jupyter) ubuntu@ip-10-0-1-12:~$ sudo systemctl enable jupyter.service
Created symlink /etc/systemd/system/multi-user.target.wants/jupyter.service → /etc/systemd/system/jupyter.service.

# 서비스 수정후 데몬 리로드할때는 아래와 같이 명령어를 실행한다.
(jupyter) ubuntu@ip-10-0-1-12:~$ sudo systemctl daemon-reload

# 웹브라우저를 열고 http://[해당서버 아이피주소]:8888 로 접속하면 주피터 노트북에 접속할 수 있다.