주피터 노트북 서비스 띄우기
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 로 접속하면 주피터 노트북에 접속할 수 있다.