지난 시간에 이어서 주피터 노트북을 설치해보자
1. 운영체제에서 사용 가능한 패키지들과 그 버전에 대한 정보를 업데이트하기
우선 Ubuntu의 apt-get명령어를 업데이트해주자
//ssh
sudo apt-get update
2. 파이썬 패키지 설치
우분투에선 기본적으로 파이썬3 언어가 깔려 있기 때문에
관련 패키지만 설치하기 위해 pip를 설치하자
//ssh
sudo apt-get install python3-pip
3. 주피터노트북 비밀번호 설정
파이썬 언어를 쓰기 위해 python3를 입력하고 아래와 같이 타이핑해주자
//python3, 주피터노트북 비밀번호 설정
>>> from notebook.auth import passwd
>>> passwd()
<!-- 만약 `from notebook.auth import passwd`를 입력했을 때 `ImportError: No module named notebook.notebookapp`라는
오류가 뜬다면 python을 종료하고 추가적으로 아래 스크립트를 입력하고 다시 진행해주자. -->
//ssh
sudo pip install --upgrade setuptools pip
sudo pip install --upgrade "ipython[all]"
//아래 명령어는 `ModuleNotFoundError: No module named 'jupyter-server-proxy` 자꾸 이런 에러가 뜨길래 추가해줬다.
sudo pip install jupyter-server-proxy
비밀번호를 입력하고, 검증까지 하면 SHA1로 암호화되었거나, argon2(여러번 해싱한 알고리즘)로 암호화된 비밀번호가 나온다. 영상에서는 SHA1로 진행되었지만, 내가했을 땐 argon2로 암호화된 키가 나왔었다. 일단 상관없으니까 그대로 진행하자! 'argon2:$argon2id~~~'
키자체를 복사해서 메모장에 옮겨놔야햔다.
※ python을 종료할 땐 ctrl+z
4. 주피터노트북 환경설정파일 생성
주피터 환경설정파일을 만들어주자
//ssh
jupyter notebook --generate-config //파일생성
//생성 후에 나온 경로/파일.py를 복사해서 아래 명령어에 붙여주자(home/ubuntu/.jupyter/jupyter_notebook_config.py)
sudo vi 경로/파일.py
c = get_config() // 환경설정 개체 만들어주기
c.NotebookApp.password = u'아까복사해둔 argon2키값'
c.NotebookApp.ip = '원격주소'
c.NotebookApp.notebook_dir = '/'
우선 방향키(↓)를 눌러서 맨 밑으로 가자
그리고 위 내용을 작성해주자.
※ a를 누르면 수정모드로 바뀐다
ctrl+c로 수정모드 벗어나고 :wq! 저장
5. 주피터 노트북 실행하기
아래 스크립트를 실행해서 루트권한을 가진 상태로 실행을 해보자.
//ssh
jupyter notebook --allow-root
1. 8888 포트로 실행한것을 볼 수 있다. 이제 웹브라우저에서도 실행할 수 있게 인스턴스의 방화벽을 설정해보자.
2. aws -> ec2 -> 인스턴스 -> 네트워킹 -> 보안그룹 클릭
3. 인바운드 규칙 편집 클릭
4. 규칙추가 버튼 누르고 -> 포트 8888 -> 0.0.0.0/0 기입 후 저장
5. 퍼블릭ip주소 복사후
위 사진대로 url-> 퍼블릭ip:8888포트로 접속할 수 있다.
6. 주피터 노트북 항상 돌아가게 만들기
이제 주피터 노트북을 항상 실행될 수 있는 상태로 만들어보자
//ssh
bg//백그라운드상태에서도 돌아갈 수 있게 해줌
disown -h//소유권을 포기하게하면 항상 실행되게 해준다.
7. https를 적용해보자
차례대로 다음 명령어도 실행해주자
//ssh
sudo apt install net-tools // netstat 명령어를 사용하기 위해 net-tools설치
sudo netstat -nap | grep 8888
이처럼 8888포트에 사용중인 것을 확인할 수 있다. 다음 명령어도 따라하자.
//ssh
sudo kill -9 'pid' //목록에 적힌 pid
cd /home/ubuntu
mkdir ssl
cd ssl
~~sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "prv.key" -out "pub.pem" -batch //사설인증서만들기 `prv.key`개인키, `pub.pem` 공개키~~
//https연결 부분에서 문제가 생겨서 아래 명령어를 사용하자
//key-> 개인키 , pem -> 공개키 를 의미
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
ssl 통신을 하기위해서 주피터환경설정 파일을 다시한번 수정해야한다.
//ssh
sudo vi 경로/파일.py //환경설정 파일을 열어주고
//환경설정 파일안에서 작성
c.NotebookApp.certfile = u'/home/ubuntu/ssl/mycert.pem'
c.NotebookApp.keyfile = u'/home/ubuntu/ssl/mykey.key'
//다시한번 주피터노트북을 실행시켜주자
~~sudo jupyter-notebook --allow-root~~
jupyter-notebook //강의에서는 관리자 권한으로 실행해도 https가 적용되던데 안되길래 일반 실행으로 하니까 https 가 적용되네...
8. 웹브라우저로 https접속하기
https://퍼플릭ip:8888 로 접속하면 이처럼 웹브라우저에서 한번 오류 메세지를 띄워준다. 고급 버튼을 누르고퍼블릭ip (안전하지 않음)(으)로 계속하기
를 눌러서 접속해보자.
9. 주피터노트북을 시스템 서비스로 등록해보자.
서버가 재부팅 될 때 자동으로 실행되게끔 만들어보자. 우선 서비스 파일을 먼저 작성하자
sudo vi /etc/systemd/system/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
다음으로 서비스를 구동시킬 수 있도록 만들자
//ssh
sudo systemctl daemon-reload
sudo systemctl enable jupyter
sudo systemctl start jupyter
sudo systemctl status jupyter
//번외)재실행 명령어
sudo systemctl restart jupyter
※ q를 눌러서 ssh로 돌아오기
출처 : 동빈나 유트브
'AWS배포하기' 카테고리의 다른 글
AWS EC2 배포하기-3 [도커(Docker) 설치 및 Dockerfile로 웹 서버 구동시키기] (0) | 2022.07.22 |
---|---|
AWS EC2 배포하기-1 배포하고 원격서버에 접속해보자 (0) | 2022.07.01 |