-
Jupyter Notebook을 통한 서버 접속개발도구 2021. 5. 24. 00:48
AWS EC2 인스턴스의 서버를 Jupyter Notebook을 통해 접속
cmd 창에서 ssh 통신으로 접속
AWS EC2 인스턴스 대쉬보드 -> 연결 -> SSH 클라이언트 명령어 로 접속
환경세팅
현 시점에서는 python3 사용
python3는 ubuntu 최근 버전에서 기본적으로 깔려있다
pip 설치를 위한 리눅스 패키지 매니저 업데이트 : apt-get
$ sudo apt-get updatepython 패키지 매니저 설치 : pip3
$ sudo apt-get install python3-pippython 웹기반 개발환경 관리 패키지 설치 : jupyter notebook
$ sudo pip3 install notebook호스팅시 CLI 환경이 아닌 웹브라우저를 통해 쉽게 개발환경을 관리할 수 있다.
ssh 클라이언트가 없어도 웹브라우저만 있으면 접속 및 관리 가능
python3 인터프리터 실행
$ python3python 명령창에서 jupyter notebook 호스트 접속 비밀번호 설정
>>> from notebook.auth import passwd >>> passwd() Enter password:보안을 위해 접속 비밀번호를 설정해준다.
설정시 Verify password 라는 문장과 함께 비밀번호에 대한 해쉬값이 출력된다.
값은 따로 저장해둔다.
jupyter notebook 환경 설정하기
$ jupyter notebook --generate-config
$ sudo vi /home/ubuntu/.jupyter/jupyter_notebook_config.py
config 파일 생성하기
리눅스 vi 에디터로 config 파일 편집하기
a 로 편집모드 전환
config 파일끝에 다음 문장 추가
c=get_config() c.NotebookApp.passsword = u'비밀번호해쉬값' c.NotebookApp.ip = '호스팅서버의 private IP' c.NotebookApp.notebook_dir = '/' c.NotebookApp.port = 8888vi 에디터 편집 끝내고 저장하고 나가기
esc 눌러서 모드 전환 후 :wq! 입력
클라우드 호스팅 서버에서 보안목록에 포트 추가(tcp, 8888)
주피터 노트북 실행
$ sudo jupyter-notebook --allow-root --config=/home/ubuntu/.jupyter/jupyter_notebook_config.py다른 프로세스가 포트 사용중이면 해당 포트 사용중인 프로세스 강제 종료시키는 명령어
$ sudo fuser -k 8888/tcp웹브라우저로 서버 접속하기
http://호스팅 서버의 public IP:8888/터미널이 닫혀도 백그라운드에서 실행하도록 설정하기
$ bg $ diswon- h백그라운드 실행-소유권 포기
HTTPS 적용을 위한 사설키 만들기 : SSL
$ sudo kill -9 호스팅서버의pid $ cd /home/ubuntu $ mkdir ssl $ cd ssl $ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout "jupyter_key.key" -out "jupyter_cert.pem" -batch.key는 개인키 .pem은 공개키이다. 개인키인 .key는 보안을 위해 절대 노출되어선 안된다
주피터 config 파일에 ssl 통신 설정하기
$sudo vi /home/ubuntu/.jupyter/jupyter_notebook_config.py ... 설정 파일에 밑에 줄 추가 c.NotebookApp.certfile = u'/home/ubuntu/ssl/jupyter_cert.pem' c.NotebookApp.keyfile = u'/home/ubuntu/ssl/jupyter_key.key'다시 jupyter notebook을 실행하면 http가 아닌 https 통신이 적용된것을 확인할 수 있다

신뢰받지 않는 인증서 자신이 만든 사설 ssl 인증서이므로 그냥
시스템 서비스로 등록하여 리부팅되어도 항상 실행되도록 설정하기
$sudo netstat -nap | grep 8888 # 해당 포트를 사용중인 프로세스 확인 $sudo kill -9 프로세스pid # 해당 pid 프로세스 종료 $sudo vi /etc/systemd/system/jupyter.service # 서비스 파일 작성vi 에디터에서 다음과 같이 입력
[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 # 시스템 데몬 실행 $sudo systemctl enable jupyter # 주피터 서비스 사용가능상태 만들기 $sudo systemctl start jupyter # 주피터 서비스 항상 실행시키기 $sudo systemctl status jupyter # 실행중인 주피터 서비스 확인하기완료
서버가 재부팅 되어도 jupyter notebook 서비스는 재구동되어 항상 서비스됨

q 눌러서 출력창 나가기
주피터 서비스 재시작 해보기
$ sudo systemctl restart jupyter'개발도구' 카테고리의 다른 글
[GCP] GCE 인스턴스 생성하고 접속하기 + Anaconda환경에서 Jupyter Notebook설치 (0) 2021.06.12 AWS EC2에 Docker 설치 & 개발환경 구축 (0) 2021.05.26 Docker 사용하기 (0) 2021.05.23 [firebase] SHA 해쉬값 (지문) 얻기 ( 디버그 서명 인증서 ) (0) 2019.07.15 nodejs 서버 호스팅 : heroku 사용하기 (0) 2019.06.02