0️⃣ 사전 설명
Jupyter Notebook
- 터미널에서 관리하기 보단, gui환경으로 서버를 관리하는 편리함을 얻기 위해 설치해보자
- 이후엔 터미널이 아니라 웹 브라우저로 서버를 관리할 수 있을 것이다
- python의 pip를 통해 설치할 것이다
- 즉, python을 설치하고, python의 pip 명령어를 통해 install할 것이다
- 그러므로 서버 접속> python 설치 > pip install 주피터 절차로 가야하는 것이 정석이다
1️⃣ 주피터 설치
~$: sudo apt-get update ~$: python3 //ubuntu에는 기본적으로 python이 깔려있음, 확인하기
~$: exit() //python이 깔려진 버전을 확인 한 후, 파이썬 접속 종료
~$: sudo apt-get install python3-pip
~$: sudo pip3 install notebook
2️⃣ 주피터 접근권한을 위한 비밀번호 설정
- passwd라는 라이브러리를 통한 jupyther 비밀번호 생성하기
~$:python3 //파이썬 쉘 진입
>>> passwd()
Enter password: [비밀번호]
Verity password: [비밀번호]
'해시화된 암호' // 복사하여 따로 저장
>>> exit() // 종료
이제 이 암호를 통해 외부에서 접근시 이 암호를 통해서만 서버 접속 가능
3️⃣ jupyter 환경설정 파일 만들기
- jupyter 환경설정과 실행
// 환경설정 파일 제작 ~$: jupyter notebook --gernerate-config Writing default config to: /home/ubuntu/.jupyter/jupyter_notebook_config.py ~$: sudo vi /home/ubuntu/.jupyter/jupyter_notebook_config.py // a키를 눌러 편집모드 진입 후 아래 작성 c = get_config() c.NotebookApp.password = u'[해시화된 암호]' c.NotebookApp.ip = '[현재 aws ip주소]' c.NotebookApp.notebook_dir = '/' // esc키를 누른 후, 아래의 명령어로 편집모드 탈출 :wq! // root권한을 가진 상태로 jupyter 실행, 외부에서 접속할 수 있도록 실행해보기 ~$: sudo jupyter-notebook --allow-root //대충 서버아이피:8888포트가 열렸다는 내용 확인 ~$:
4️⃣ AWS 인바운드 규칙 추가하기
- aws에서 인스턴스창 > 보안 탭> 보안 그룹 > 인바운드 규칙
- 인바운드 규칙 편집
- 사용자 지정 TCP, 8888포트, Anywhere
- 해당 아이피에 :8888포트를 붙여서 접속하면 됨
- 패스워드 입력하여 접속후 화면 확인(해시화되지 않은 패스워드를 입력)
5️⃣ Jupyter를 항상 실행될 수 있는 상태로 만들기
- ubuntu 터미널에서 jupyter활성화 설정
[notebookApp] ... [notebookApp] ... //ctrl + z를 통해 탈출 ~$: bg [1]+ sudo jupyter-notebook --allow-root & //백그라운드에서 실행됨을 확인 ~$: disown -h //소유권을 포기하게 만듦, 항상 실행중인 상태가 되었음 ~$: ls
- jupyter를 웹브라우저에서 터미널로 확인하기
- 이제 이 웹브라우저에서 동일한 진행이 가능하게 되었다
- 이제 ssh없이도 가능하다는 것이다
- 여기까지는 통신상태가 위험한 상태다
- 별도의 설정을 다시 해주자
6️⃣ 현재 실행중인 notebook 종료하기
- 기존의 ubuntu 터미널에서 현재 실행중인 notebook 종료시키기
~$: sudo netstat -nap | grep 8888 // 해당 포트를 이용중인 ip확인 가능 (LISTEN 포트번호/python)
//이용중인 포트들 확인
~$: sudo kill -9 [포트번호] //실행중인 ip off 시키기
- https를 적용할 수 있도록 하기
~$: cd /home/ubuntu
~$: pwd
// print working drectory, 현재 경로 확인
// 이하로 사설 인증서 만들기 위한 작업
~$: mkdir ssl //폴더 생성
~$: cd ssl
~ssl$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout [키이름.key] -out [pem이름.pem] -batch
//키 생성 내용 확인
~ssl$ ls
//키 확인
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout
- 인증서 유효기간 365일, rsa 알고리즘을 통해 키를 만듦 (공개키 기반)
- 보통 ssl인증서는 공개키 기반 구조에 입각한 알고리즘을 채택한다
- 자세한 건 🔎 ‘공개키 기반 구조’
- 인증과정에서는 공개키과 개인키로 각각 구분이 된다~
- 보통 ssl인증서는 공개키 기반 구조에 입각한 알고리즘을 채택한다
-keyout “[키이름.key]” -out “[pem이름.pem]” -batch
- [키이름.key]는 절대로, 다른 사람에게 노출이 되어선 안 된다
- jupyter 설정편집
~ssl$ sudo vi /home/ubuntu/.jupyter/jupyter_notebook_config.py
// a키를 통해 insert, 최하위에 공개키 파일 내용 추가하기
c.NotebookApp.certfile = u'/home/ubuntu/ssl/[pem이름].pem'
c.NotebookApp.keyfile = u'/home/ubuntu/ssl/[key이름].key'
// esc키 누르고 아래 명령어를 통해 편집모드 탈출
:wq!
~ssl$ sudo jupyter-notebook --allow-root // 주피터 재실행
//실행 문구 확인
- safari를 통해 https:// 아이피:8888 로 접근하기
- 크롬은 암만해봤자 보안설정으로 안 됨
- 사파리 접속을 통해 위험성 인지 체크하고 넘어가면 접속 가능
- 기존의 해시코드 이전 비밀번호를 작성하고 들어가면 연결 완료
7️⃣ 시스템 서비스로서 jupyter 등록하기
- 내 로컬 노트북을 껐다 키면 그때마다 다시 해야하므로 이에 대한 설정을 해주자
- 정확히 말하자면 :우분투 서버 진입 > sudo jupyter-notebook —alow-root 명령어 입력 를 생략하게 만들기
~ssl$: which jupyter-notebook //주피터 실행파일의 경로 확인
~ssl$ sudo vi /etc/Systemd/Syste/jupyter.service //서비스 파일 작성
[Unit]
Description=Jupyter Notebook Server
[Service]
Type=simple
User=ubuntu
ExecStart=/usr/bin/sudo /usr/local/bin/jupyter-notebook --allow-root --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py
[Install]
WantedBy=multi-user.target
~ssl$
sudo systemctl daemon-reload // 데몬 재로딩
sudo systemctl enable jupyther // 주피터 서비스 사용 가능 상태로 만들기
//생성문구 확인
sudo systemctl start jupyter // 주피터 서비스를 항상 서비스 하도록함
sudo systemctl status jupyter // 주피터 서비스 실행 상태 확인
//실행중인 로그 확인
sudo systemctl restart jupyter // 필요하다면 주피터 재실행
- 이제, 아마존 웹 서비스에서 인스턴스를 재부팅 시키는 경우까지 포함하여 주피터는 자동 실행될 것이다