본문 바로가기
Data Engineering/AWS

[AWS] Jupyter Notebook 설치 및 실행

by Toritol 2022. 8. 2.
728x90

 저번 글에서는 AWS EC2 상에서 원하는 Python3 버전을 설치하는 방법에 대해서 살펴봤습니다. 본 글에서는 Anaconda를 통해 Jupyter notebook 설치 및 실행까지 설명하도록 하겠습니다. AWS EC2 상에서 Anaconda 및 가상환경을 생성하는 방법은 https://coding-nurse.tistory.com/226에 자세하게 설명되어 있습니다. Linux를 거의 처음 접하는 저도 쉽고 오류없이 설치하였으므로, 글을 읽으시는 분들도 큰 문제없이 Anaconda 설치를 완료하실 수 있을 것입니다. 저는 ec2-user 계정을 통해 모든 과정을 진행하였습니다.

 

 우선 Jupyter Notebook 설정 파일을 생성합니다. 아래의 코드를 실행하면 결과로 경로도 함께 나오게 되는데, 해당 경로의 파일을 수정해야하기 때문에 잘 알아두셔야 합니다. 해당 경로는 저와 다를 수 있습니다.

 

(base) [ec2-user@00 ~]$ jupyter notebook --generate-config
Writing default config to: /home/ec2-user/.jupyter/jupyter_notebook_config.py

 

 기존 글에서 살펴봤던 vi 편집기를 통해 해당 파일을 수정합니다. 결과로 해당 파일이 엄청 길게 나올 것입니다. 'G(Shift + g)'를  입력하면 파일의 끝으로 이동할 수 있습니다.

 

(base) [ec2-user@00 ~]$ vi /home/ec2-user/.jupyter/jupyter_notebook_config.py
...
## The interval (in seconds) on which to check for terminals exceeding the
#  inactive timeout value.
#  Default: 300
# c.TerminalManager.cull_interval = 300

 

 위의 파일에 'a'를 입력한 이후에 다음 코드들을 추가해줍니다. notebook_dir은 jupyter notebook을 실행하면서 생성된 파일이 저장되는 경로를 입력하면 되고, ip에는 'ifconfig' 코드를 실행한 이후 나타나는 ip 주소를 입력해주면 됩니다(예시를 위해 0.0.0.0을 넣은 것 뿐입니다). 다른 블로그 글에는 port와 같이 추가적인 것들을 입력하기도 하는데, 저는 경로와 ip만 추가해줘도 큰 무리없이 jupyter notebook이 실행되었습니다. 코드를 추가했다면 :와 wq를 입력하여 편집을 종료하고 파일을 저장합니다.

 

c = get_config()
c.NotebookApp.notebook_dir = '/data/jupyter_test/'
c.NotebookApp.ip = '0.0.0.0'

 

 이제 Jupyter notebook을 실행하기 전에 앞서, 방화벽 설정을 진행해야합니다. 방화벽 설정은 EC2 관리 페이지의 보안그룹에서 '유형: 사용자 지정 TCP / 포트범위: 8888 / 소스: 위치무관'와 같은 인바운드 규칙을 추가해주면 8888번 포트의 방화벽을 개방할 수 있습니다. 방화벽 설정에 관한 글은 https://sectumsempra.tistory.com/48https://wooono.tistory.com/165 글을 참고하였습니다. 이후 다음 코드를 통해 jupyter notebook을 실행해주면 됩니다. 

 

(base) [ec2-user@00 ~]$ jupyter notebook --allow-root
[W 2022-08-02 10:11:58.729 LabApp] 'allow_root' has moved from NotebookApp to ServerApp. This config will be passed to ServerApp. Be sure to update your config before our next release.
[W 2022-08-02 10:11:58.729 LabApp] 'notebook_dir' has moved from NotebookApp to ServerApp. This config will be passed to ServerApp. Be sure to update your config before our next release.
[W 2022-08-02 10:11:58.729 LabApp] 'ip' has moved from NotebookApp to ServerApp. This config will be passed to ServerApp. Be sure to update your config before our next release.
[W 2022-08-02 10:11:58.729 LabApp] 'ip' has moved from NotebookApp to ServerApp. This config will be passed to ServerApp. Be sure to update your config before our next release.
[I 2022-08-02 10:11:58.736 LabApp] JupyterLab extension loaded from /home/ec2-user/anaconda3/lib/python3.9/site-packages/jupyterlab
[I 2022-08-02 10:11:58.736 LabApp] JupyterLab application directory is /home/ec2-user/anaconda3/share/jupyter/lab
[I 10:11:58.740 NotebookApp] Serving notebooks from local directory: /data/jupyter_test
[I 10:11:58.740 NotebookApp] Jupyter Notebook 6.4.8 is running at:
[I 10:11:58.740 NotebookApp] http://0.0.0.0:8888/?token=08e7cdf8097596fa415a19ed4cac2aa4e0d50b54b681342d
[I 10:11:58.740 NotebookApp]  or http://127.0.0.1:8888/?token=08e7cdf8097596fa415a19ed4cac2aa4e0d50b54b681342d
[I 10:11:58.740 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 10:11:58.743 NotebookApp] No web browser found: could not locate runnable browser.
[C 10:11:58.743 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///home/ec2-user/.local/share/jupyter/runtime/nbserver-13929-open.html
    Or copy and paste one of these URLs:
        http://0.0.0.0:8888/?token=08e7cdf8097596fa415a19ed4cac2aa4e0d50b54b681342d
     or http://127.0.0.1:8888/?token=08e7cdf8097596fa415a19ed4cac2aa4e0d50b54b681342d

 

 방화벽을 개방하고 위의 코드를 실행한 이후, 저의 경우에는 이런 저런 ip로 접속을 시도해도 계속 실패했었습니다. 여러 글을 읽다보니 ec2-user 계정의 경우에는 ec2-user@'퍼블릭 ip 주소':8888로 접속해야 가능하다는 것을 확인했고, 시도해보니 접속에 성공할 수 있었습니다. 혹시 저처럼 계속해서 실패하시는 경우 시도해보면 좋을 것 같습니다. 접속에 성공하면 아래와 같은 화면이 뜨게 되고 위의 결과에 있는 토큰 값을 입력해주면 접속에 성공하실 수 있습니다.

 

 

 AWS EC2 및 Linux를 처음 접하면서 겪게 되는 과정이나 오류를 정리하는 글이기 때문에, 글을 읽으시다가 틀리는 부분이 있으면 언제든지 댓글로 알려주시길 바랍니다.

 

728x90

댓글