Infra

EC2에 설치된 주피터 노트북 https 설정 및 백그라운드 설정

Going9 2023. 11. 25. 20:16

(53) 도커(Docker) 활용 및 배포 자동화 실전 초급 ② - Jupyter Notebook 설치, HTTPS 적용, 시스템 서비스 설정하기 - YouTube

동빈나님의 배포강의

 

이전 글에서 주피터 노트북을 EC2에 설치했습니다.
EC2에 jupyter notebook 설치하기 (tistory.com)

 

EC2에 jupyter notebook 설치하기

(46) 도커(Docker) 활용 및 배포 자동화 실전 초급 ② - Jupyter Notebook 설치, HTTPS 적용, 시스템 서비스 설정하기 - YouTube 동빈나님의 배포강의 동빈나님의 배포 강의를 따라하다가 주피터 노트북을 실

going9.tistory.com

 

 

이번에도 영상 그대로 따라하면 안되는 부분이 있어서 글을 작성하게 되었습니다.

 

1. OpenSSL 사용하여 인증서 생성

주피터 노트북 문서 참고하면서 했습니다.

Running a public Jupyter Server — Jupyter Server documentation (jupyter-server.readthedocs.io)

$ cd /home/ubuntu  # 해당 경로로 이동 후
$ mkdir ssl
$ cd ssl  # ssl 디렉토리 생성 및 이동
$ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem  # 인증서 발급
$ ls
mycert.pem  mykey.key  # 생성된 키 확인

 

  • req: 인증서 요청 및 관리 도구를 나타냅니다.
  • -x509: X.509 표준에 따른 자체 서명된 인증서를 생성한다는 것을 지정합니다.
  • -nodes: 생성된 키(key)에 암호화를 적용하지 않도록 지정합니다. 즉, 암호 없이 키를 생성합니다.
  • -days 365: 생성된 인증서의 유효 기간을 365일로 설정합니다.
  • -newkey rsa:2048: RSA 알고리즘을 사용하여 2048 비트의 새로운 개인 키를 생성합니다. 영상에서는 1024 비트의 키를 생성하는데 그렇게 하니 키가 너무 짧다는 오류가 발생했습니다.
  • -keyout mykey.key: 생성된 개인 키를 mykey.key 파일에 저장합니다.
  • -out mycert.pem: 생성된 자체 서명된 인증서를 mycert.pem 파일에 저장합니다.

이 명령은 주로 테스트 환경이나 개발 환경에서 사용됩니다. 실제 운영 환경에서는 신뢰할 수 있는 Certificate Authority (CA)에 의해 서명된 인증서를 사용하는 것이 보안상 권장됩니다. 자체 서명된 인증서는 브라우저 등에서 경고를 일으킬 수 있습니다.

 

2. config 파일에 적용

$ sudo vi /home/ubuntu/.jupyter/jupyter_notebook_config.py

 

jupyter_notebook_config.py 파일을 열어서 아래의 문장을 추가 해줍니다.

c.NotebookApp.certfile = u'/home/ubuntu/ssl/mycert.pem'
c.NotebookApp.keyfile = u'/home/ubuntu/ssl/mykey.key'

 

인증서 키 위치 추가

 

 

여기까지 하고 서버를 실행시켜 보면

 

 

https가 적용되었습니다.

 

3. 부팅 시 자동으로 실행되게 설정

$ sudo vi /etc/systemd/system/jupyter.service  # 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

 

 

작성이 끝나면

$ sudo systemctl daemon-reload  # systemd의 설정을 다시 로드
$ sudo systemctl enable jupyter  # enable 명령어를 사용하여 Jupyter 서비스를 부팅 시 자동으로 시작하도록 설정
$ sudo systemctl start jupyter  # 주피터 실행(위에서 enable 적용해서 현 시점 이후로는 사용하지 않아도 됨)

 

 

끝났습니다.

이제 인스턴스를 재부팅해도 자동으로 주피터 노트북이 실행되고 https://퍼블릿ip로 접근하실 수 있습니다.