본문 바로가기

Docker

AWS EC2 인스턴스에 Jupyter Notebook 설치

반응형

Jupyter notebook이란 서버에 접속을 할 때 인터넷 브라우저로 서버를 접속하여 조금더 보기 쉽고 관리하기 수월하게 하기 위해서 사용하는 툴 이다. 그 툴을 aws Ubuntu server에 다운로드하는 방법을 정리해 보았다.

 

우선 aws  Ubuntu 18.04 server 인스턴스를 생성한 후에 ssh로 접속을 한다.

기본적으로 Ubuntu 18.04 server에는 python3가 깔려 있다. 

 

python3를 확인하고 apt-get install을 이용하여  python3-pip을 install 해준다.

 

 

정상적으로 설치한 후 sudo pip3 instasll notebook을 이용하여 jupyter notebook을 설치한다.

 

인터넷 브라우저로 접속하기  때문에 ip주소가 노출된다면 누구든지 내 서버에 접속할 수 있다.

그렇기 때문에 Jupyter notebook에 비밀번호를 설정해 주어야 한다.

비밀번호는 설치되어있는 python3를 이용하여 만들수 있다.

 

 

위와 같이 python3에 들어간 다음 passwd()함수를 이용하여 비밀번호의 hash값을 얻을 수 있다.

저 hash값을 이용하여 비밀번호를 설정하기 때문에 우선 메모장에 잘 복사해둔다.

 

그리고 Jupyter notebook의 환경설정을 하기 위해서 설정파일을 만들어서 vi로 수정해 준다.

 

jupyter_notebook_config.py

 

가장 아래쪽으로 이동해서  get_config()함수로 객체를 만들고 위에서 만든 비밀번호 hash값과 ip주소 notebook_dir등을 설정해 준다.

 

sudo jupyter-notebook --allow-root

명령어를 이용하여 jupyter-notebook을 실행시켜 준다.

 

jupyter-notebook은 서버에서 실행되었기 때문에 aws 서버의 퍼블릭 IPv4 주소(인스턴스 세부정보 or 인스턴스 요약에 나와있다)를 이용하여 접속할 수있다.

서버에 접속하기 위해서는 우선 8888포트를 열어서 모든 ip에서 접속할 수 있도록 설정을 해주어야 한다.

보안그룹 수정 탭에서 위와같이 8888포트에 사용자를 0.0.0.0/0 (모든 ip에 대해서 포트 개방)으로 설정하여 방화벽을 열어  준다.

퍼블릭 ip-v4주소로 8888포트를 지정하여 접속하면 위와같은 화면이 나타나는데 이전에 설정했던 비밀번호를 입력하면 접속이 된다.

 

위의 주소는 aws에서 제공해주는 ip주소로 다른 어떤기기를 사용해도 접속할 수 있다.

 

로그인 성공하면 위와같은 화면을 통해서 서버에 있는 파일과 폴더를 수정하고 관리할 수 있다. 

new를 이용하여 새로운 터미널 창도 열 수 있다.

 

위와같은 작업으로 우리는 ssh를 이용하지 않아도 ip주소와 비밀번호만으로도 서버에 접속할 수 있게 되었다.

 

하지만 우리는 Jupyter-notebook은 항상 실행되고 있어야 하고 실행되는중에도 서버에서는 다른 일을 할 수 있어야 하기 때문에 백그라운드에서 실행 될수 있도록 설정해야 한다.

 

ctrl+z를 이용하여 잠시 중지한 다음 bg를 이용하여 백그라운드에서 실행하고 disown -h를 이용하여 소유권을 포기하여 다른 작업을 하면서 jupyter-notebook도 실행되도록 설정하였다.

 

현재 설정된 통신은 http:// 를 이용한 통신이다. 그러므로 서버에 접속하여 작업을 할때 전달되는 정보들은 보안에 취약한 상태이기 때문에 ssl인증서를 적용하여 https:// 로 만들어 주어야 한다.

 

우선 설정을 하기 전에

 

sudo netstat -nap | grep 8888 명령어를 이용하여 8888포트를 사용하고 있는 pid를 찾아준다.

그 후 sudo kill -9 {pid} 를 이용하여 종료해 준다.

 

서버에서 jupyter-notebook을 종료했기 때문에 당연히 웹브라우저에서 접속도 끊긴다.

 

 

ssl인증을 적용하기 위해 우선 사설 인증서를 만들어 준다.

/home/ubuntu/ssl폴더를 만들어서

sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "cert.key" -out "cert.pem" -batch 명령어를 이용

하여 공개키와 개인키를 생성하여 준다.

 

그 후 jupyter-notebook 설정파일에 들어가서 위와같이 공개키와 개인키를 설정해 준다.

 

jupyter-notebook을 다시 실행해 보면 성공적으로 https:// 로 인증서를 이용한 서버가 구동중인 것을 확인할 수 있다.

 

웹브라우저로 접속할 때에도 주소를 https://{aws 퍼블링 ip-v4}:8888 로 접속을 하면 된다.

(*크롬에서는 ssl 인증서를 신뢰할 수 없기 때문에 경고를 주지만 고급탭에서 안전하지 않음으로 접속을 하면 된다.)

 

마지막으로

jupyter-notebook을 시작프로그램처럼 서버를 재부팅하면 바로 실행되도록 설정할 것이다.

 

우선 ctrl+c를 이용하여 서버를 중지 시킨다.

which jupyter-notebook 명령어를 이용하여 실행파일의 위치를 찾는다

그리고 /etc/systemd/system/jupyter.service 파일을 생성해 준다.

 

jupyter.service

위의 설정을 마친 후

 

sudo systemctl daemon-reload

sudo systemctl enable jupyter

sudo systemctl start jupyter

sudo systemctl status jupyter

를 이용하여 jupyter-notebook을 싱행하고 상태를 확인해 보면 잘 작동하고 있는것을 볼 수 있다.

(q를 눌러서 상태확인을 마칠 수 있다.)

 

sudo systemctl restart jupyter 명령어를 이용하여 jupyter를 다시 시작할 수도 있다.

 

위의 설정을 마치면 aws 인스턴스를 재부팅해도 다른 설정없이 바로 서버에 jupyter-note을 이용하여 ip주소와 비밀번호로 접속을 할 수 있다.

 

 

 

 

(동빈나 님의 유튜브를 보면서 정리한 내용 입니다.)

반응형