[AWS] Jupyter Notebook 설치

junhyeong·2023년 4월 5일
0

저번 글에서 aws의 EC2 인스턴스를 생성해서 접속해 보았다.

그런데 콘솔창에서 해당 인스턴스에 접근을 해서 서버를 관리하는 것은 불편할 수 있기 때문에 Jupyter Notebook(GUI 환경)으로 서버를 관리해보려고 한다

Jupyter Notebook은 콘솔 창이 아니라 웹브라우저 환경에서 해당 서버에 바로 접근해서 서버를 관리할 수 있도록 해준다

Jupyter Notebook 설치

먼저 apt-get 명령어를 이용해 설치할 것이기 때문에 아래처럼 apt-get을 업데이트 해준다.

sudo apt-get update

그리고 기본적으로 ubuntu에는 python3가 깔려있다. 그렇기 때문에 python3를 추가적으로 설치하지는 않고 관련 패키지를 설치할 수 있도록 도와주는 python3 pip를 설치할 것이다.

sudo apt-get install python3-pip

이제 설치된 파이프를 이용해서 Jupyter Notebook을 설치할 것이다.

sudo pip3 install notebook

여기까지 했다면, 만들어진 Jupyter를 이용해 서버 외부에서 해당 서버에 웹브라우저를 이용하여 접속할 수 있도록 된 상태이다.

비밀번호 설정

하지만 여기서 우리는 아무나 서버에 접근하면 안되기 때문에 쥬피터 접속을 위한 비밀번호를 설정해 줄 것이다.


이렇게 python3를 이용해서 notebook.auth 라이브러리를 이용하면 된다.
그리고 비밀번호를 설정하겠다는 패스워드 함수를 호출하여 패스워드를 입력해주면 완료가 된다.

이 과정이 끝나면 내가 설정한 비밀번호의 hash값이 argon2:로 시작하는 키로 나온다. 그러면 메모장에 그대로 복사해둔다.

환경설정 진행

이제 우리가 이 서버에서 Jupyter Notebook을 실행해서 외부해서 접속을 했을 때 비밀번호를 입력해야지 서버에 접속할 수 있도록 하기 위해서 주피터 환경설정을 진행해줄 것이다.

이를 위해서는 먼저 주피터 환경설정 파일을 만들어 주어야한다.

jupyter notebook --generate-config 

이렇게 --generate-config 옵션을 붙여서 환경설정 파일을 만들 수 있고, 아래에 환경설정 파일에 존재하는 경로가 반환되는걸 확인할 수 있다.

이제 vi 에디터를 이용해서 해당 환경설정 파일을 수정해보겠다.

sudo vi [환경설정 파일 경로]

제일 아래로 내려서 아래 내용들을 모두 입력해준다.

c = get_config()

먼저 환경설정 객체를 만들기 위해 해당 코드를 맨 위에 입력하고, 나머지는 아래와 같이 코드 수정

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

작업경로 설정
c.NotebookApp.notebook_dir = '원하는/작업경로를/입력'

아이피 설정
c.NotebookApp.ip = '사용할.아이피.입력.'
Private IP를 입력한다

포트 설정
c.NotebookApp.port = '사용할 포트번호 네자리를 입력, 초기값은 8888.'

비밀번호 설정
c.NotebookApp.password = u'복사해둔 암호화된 비밀번호
예) c.NotebookApp.password = u'argon2:' '

시작시 브라우저 실행여부
c.NotebookApp.open_browser = False # 서버로 실행될때 서버PC에서 주피터 노트북 창이 새로 열릴 필요가 없다.

모든 설정을 마쳤다면 :wq를 이용해 저장을 하고 나간다

외부에서 접속 가능하도록 하기

이제 Jupyter Notebook을 root권한을 가진 상태로 실행해서 외부에서 접속할 수 있도록 할것이다.

먼저 아래 명령어들을 입력해준다.

sudo jupyter-notebook --allow-root
cd /home/ubuntu/.jupyter     // .jupyter 폴더로 이동 
jupyter notebook --config jupyter_notebook_config.py     // 서버 실행

그 다음에는 aws에서 생성한 인스턴스를 확인하고 보안그룹을 클릭해준다

인바운드 규칙 편집을 눌러 아래 사진과 같이 규칙을 추가하고 저장한다. (8888포트로 누구나 접속할 수 있도록 방화벽을 열어주는 과정)

Jupyter Notebook 서버는 초기에 8888 포트로 열린다.

이제 이전 화면으로 돌아와서 퍼블릭 주소에 :8888을 붙여서 접속을 하면
예)18.118.20.88:8888

아래와 같은 화면을 볼 수 있고 설정한 패스워드를 입력하면 터미널까지 접속 가능해진걸 확인할 수 있다.

만약 접속할 수 없다는 에러가 뜬다면 포트 방화벽이 해제가 안된 것이기 때문에 아래 명령어를 입력하여 해제해준다.

sudo ufw allow 8888

이제 이렇게 더 이상 ssh가 필요하지 않고 바로 웹브라우저에서 해당 서버에 접속할 수 있게 되었다.

항상 실행될 수 있는 상태로 만들기

하지만 우리는 Jupyter Notebook을 항상 실행될 수 있는 상태로 만들고 싶기 때문에 기존의 터미널에 다음과 같은 작업을 해준다

  1. 해당 서버 종료 (control + z)
  2. 백그라운드 상태에서 돌아갈 수 있도록하고 소유권 포기하기

여기까지 끝내면 터미널에서 서버를 종료해도 웹브라우저에서 Jupyter Notebook 서버가 항상 켜져있는걸 확인할 수 있다.

profile
매일매일이 성장하는 하루가 될 수 있도록!

0개의 댓글