웹사이트 검색

Ubuntu 22.04에 Jupyter Notebook을 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. Python 설치
  4. Jupyter 노트북 설치
  5. Jupyter 노트북 비밀번호 생성\n
  6. Jupyter 노트북용 Systemd 서비스 파일 생성
  7. Nginx를 Jupyter 노트북의 역방향 프록시로 구성\n
  8. Jupyter 노트북 액세스
  9. 결론

Jupyter Notebook은 사용자가 웹 브라우저를 통해 문서를 편집하고 실행할 수 있는 무료 오픈 소스 웹 기반 대화형 컴퓨팅 플랫폼입니다. Python을 기반으로 하며 웹을 통해 라이브 코드, 방정식 및 시각화가 포함된 문서를 만들고 공유할 수 있습니다. 목표는 오픈 소스 소프트웨어, 개방형 표준 및 여러 프로그래밍 언어에서 대화형 컴퓨팅을 위한 서비스를 개발하는 것입니다.

이 튜토리얼에서는 Ubuntu 22.04에 Jupyter Notebook 소프트웨어를 설치하는 방법을 보여줍니다.

전제 조건

  • Ubuntu 22.04를 실행하는 서버.\n
  • 유효한 도메인 이름은 서버 IP로 지정됩니다.\n
  • 루트 암호는 서버에서 구성됩니다.\n

시작하기

먼저 모든 소프트웨어 패키지를 최신 버전으로 업데이트하고 업그레이드하는 것이 좋습니다. 다음 명령을 실행하여 모두 업데이트할 수 있습니다.

apt update -y
apt upgrade -y

모든 패키지가 업데이트되면 다음 단계를 진행할 수 있습니다.

파이썬 설치

먼저 서버에 Python 및 기타 종속 항목을 설치해야 합니다. 다음 명령을 실행하여 모두 설치할 수 있습니다.

apt-get install python3 python3-pip -y

모든 패키지가 설치되면 다음 명령을 사용하여 Python 버전을 확인할 수 있습니다.

python3 --version

다음 출력이 표시되어야 합니다.

Python 3.10.6

그런 다음 다음 명령을 사용하여 PIP를 최신 버전으로 업데이트합니다.

pip3 install --upgrade pip

다음으로 다음 명령을 사용하여 PIP 버전을 확인합니다.

pip3 --version

다음 출력이 표시되어야 합니다.

pip 22.2.2 from /usr/local/lib/python3.10/dist-packages/pip (python 3.10)

다음으로 다음 명령을 사용하여 Python 가상 환경 패키지를 설치합니다.

pip3 install virtualenv

완료되면 다음 단계로 진행할 수 있습니다.

주피터 노트북 설치

먼저 다음 명령을 사용하여 노트북을 저장할 디렉토리를 만듭니다.

mkdir ~/project

그런 다음 프로젝트 디렉터리로 이동하고 다음 명령을 사용하여 Python 가상 환경을 만듭니다.

cd ~/project
virtualenv notebookenv

그런 다음 다음 명령을 사용하여 가상 환경을 활성화하십시오.

source notebookenv/bin/activate

그런 다음 다음 명령을 사용하여 Jupyter Notebook을 설치합니다.

pip install jupyter

Jupyter Notebook이 설치되면 다음 명령을 사용하여 Jupyter Notebook을 실행합니다.

jupyter notebook --allow-root

모든 것이 정상이면 다음과 같은 결과가 표시됩니다.

[I 14:23:26.729 NotebookApp] Serving notebooks from local directory: /root/project
[I 14:23:26.729 NotebookApp] Jupyter Notebook 6.4.12 is running at:
[I 14:23:26.729 NotebookApp] http://localhost:8888/?token=5dbdfdbf2e2dc72ccdaaa7361db8c55877ecfbc45676e625
[I 14:23:26.729 NotebookApp]  or http://127.0.0.1:8888/?token=5dbdfdbf2e2dc72ccdaaa7361db8c55877ecfbc45676e625
[I 14:23:26.730 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 14:23:26.734 NotebookApp] No web browser found: could not locate runnable browser.
[C 14:23:26.734 NotebookApp] 
    
    To access the notebook, open this file in a browser:
        file:///root/.local/share/jupyter/runtime/nbserver-3214-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=5dbdfdbf2e2dc72ccdaaa7361db8c55877ecfbc45676e625
     or http://127.0.0.1:8888/?token=5dbdfdbf2e2dc72ccdaaa7361db8c55877ecfbc45676e625

CTRL+C를 눌러 Jupyter Notebook을 중지합니다.

완료되면 다음 단계로 진행할 수 있습니다.

Jupyter 노트북 암호 생성

비밀번호로 Jupyter Notebook을 보호하는 것이 좋습니다. 먼저 다음 명령을 사용하여 Jupyter Notebook 구성 파일을 생성합니다.

jupyter notebook --generate-config

다음 출력이 표시되어야 합니다.

Writing default config to: /root/.jupyter/jupyter_notebook_config.py

다음으로 다음 명령을 사용하여 Jupyter Notebook 암호를 설정합니다.

jupyter notebook password

아래와 같이 비밀번호를 설정합니다.

Enter password: 
Verify password: 
[NotebookPasswordApp] Wrote hashed password to /root/.jupyter/jupyter_notebook_config.json

그런 다음 다음 명령을 사용하여 Python 가상 환경에서 비활성화합니다.

deactivate

완료되면 다음 단계로 진행할 수 있습니다.

Jupyter 노트북용 Systemd 서비스 파일 생성

다음으로 Jupyter Notebook을 관리하기 위해 systemd 서비스 파일을 생성해야 합니다. 다음 명령으로 만들 수 있습니다.

nano /etc/systemd/system/jupyter.service

다음 코드를 추가합니다.

[Unit]
Description=Jupyter Notebook
 
[Service]
Type=simple
PIDFile=/run/jupyter.pid
ExecStart=/root/project/notebookenv/bin/jupyter-notebook --config=/root/.jupyter/jupyter_notebook_config.py --allow-root
User=root
Group=root
WorkingDirectory=/root/project/notebookenv
Restart=always
RestartSec=10
 
[Install]
WantedBy=multi-user.target

파일을 저장하고 닫은 후 다음 명령을 사용하여 systemd 데몬을 다시 로드합니다.

systemctl daemon-reload

그런 다음 Jupyter Notebook을 시작하고 다음 명령을 사용하여 시스템 재부팅 시 시작되도록 활성화합니다.

systemctl start jupyter
systemctl enable jupyter

Jupyter Notebook의 상태를 확인하려면 다음 명령을 실행합니다.

systemctl status jupyter

다음 출력이 표시되어야 합니다.

? jupyter.service - Jupyter Notebook
     Loaded: loaded (/etc/systemd/system/jupyter.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-11 14:27:01 UTC; 4s ago
   Main PID: 3649 (jupyter-noteboo)
      Tasks: 1 (limit: 2242)
     Memory: 53.4M
        CPU: 980ms
     CGroup: /system.slice/jupyter.service
             ??3649 /root/project/notebookenv/bin/python /root/project/notebookenv/bin/jupyter-notebook --config=/root/.jupyter/jupyter_noteb>

Oct 11 14:27:01 ubuntu2204 systemd[1]: Started Jupyter Notebook.
Oct 11 14:27:02 ubuntu2204 jupyter-notebook[3649]: [I 14:27:02.288 NotebookApp] Serving notebooks from local directory: /root/project/noteboo>
Oct 11 14:27:02 ubuntu2204 jupyter-notebook[3649]: [I 14:27:02.289 NotebookApp] Jupyter Notebook 6.4.12 is running at:
Oct 11 14:27:02 ubuntu2204 jupyter-notebook[3649]: [I 14:27:02.289 NotebookApp] http://localhost:8888/
Oct 11 14:27:02 ubuntu2204 jupyter-notebook[3649]: [I 14:27:02.290 NotebookApp] Use Control-C to stop this server and shut down all kernels (>
Oct 11 14:27:02 ubuntu2204 jupyter-notebook[3649]: [W 14:27:02.293 NotebookApp] No web browser found: could not locate runnable browser.

완료되면 다음 단계로 진행할 수 있습니다.

Nginx를 Jupyter 노트북의 역방향 프록시로 구성

이 시점에서 Jupyter Notebook이 시작되고 포트 8888에서 실행됩니다. 이제 포트 80을 통해 Jupyter Notebook에 액세스하려면 Nginx를 리버스 프록시로 구성해야 합니다.

먼저 다음 명령을 사용하여 Nginx 웹 서버 패키지를 설치합니다.

apt-get install nginx -y

Nginx가 설치되면 다음 명령을 사용하여 Nginx 가상 호스트 구성 파일을 만듭니다.

nano /etc/nginx/conf.d/jupyter.conf

다음 구성을 추가합니다.

upstream notebook {
server 127.0.0.1:8888;
}
 
server {
listen 80;
server_name jupyter.example.com;
 
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
 
location / {
     proxy_pass http://localhost:8888;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header Host $http_host;
     proxy_http_version 1.1;
     proxy_redirect off;
     proxy_buffering off;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
     proxy_read_timeout 86400;
     }
}

파일을 저장하고 닫은 후 다음 명령을 사용하여 구문 오류가 있는지 Nginx를 확인합니다.

nginx -t

다음 출력이 표시되어야 합니다.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

그런 다음 Nginx 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart nginx

다음 명령을 사용하여 Nginx 상태를 확인할 수도 있습니다.

systemctl status nginx

다음과 같은 결과가 표시됩니다.

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-11 14:28:53 UTC; 54s ago
       Docs: man:nginx(8)
    Process: 4193 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 4194 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 4195 (nginx)
      Tasks: 2 (limit: 2242)
     Memory: 2.6M
        CPU: 40ms
     CGroup: /system.slice/nginx.service
             ??4195 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??4196 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Oct 11 14:28:53 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Oct 11 14:28:53 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.

다음으로 다음 명령을 사용하여 루트 사용자를 www-data 그룹에 추가합니다.

usermod -g www-data root

다음으로 Jupyter Notebook 구성 파일을 편집하고 원격 액세스를 활성화합니다.

nano /root/.jupyter/jupyter_notebook_config.py

다음 줄을 변경합니다.

c.NotebookApp.allow_remote_access = True

파일을 저장하고 닫은 다음 Jupyter Notebook 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart jupyter

완료되면 다음 단계로 진행할 수 있습니다.

Jupyter 노트북에 액세스

이제 웹 브라우저를 열고 URL http://jupyter.example.com을 사용하여 Jupyter Notebook에 액세스합니다. 다음 화면에서 Jupyter Notebook 비밀번호를 입력하라는 메시지가 표시됩니다.

비밀번호를 입력하고 로그인 버튼을 클릭합니다. 다음 화면에 Jupyter Notebook 대시보드가 표시되어야 합니다.

결론

축하합니다! Ubuntu 22.04에서 Nginx와 함께 Jupyter Notebook을 리버스 프록시로 성공적으로 설치했습니다. 이제 인터넷을 통해 노트북을 생성, 공유 및 실행할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.