[Setting] jupyter notebook 원격 접속
들어가며,,
네트워크 설정 완료한 서버를 이용해 분석하기 위해 jupyter notebook 원격 접속이 가능하도록 세팅해야한다.(물론 local에서도 가능하다.) 세팅이 완료되면 해당 pc가 아닌 곳에서 원격 접속하여 python을 활용한 분석을 할 수 있다. 이때 버전 충돌 방지를 위해 docker container를 새로 만들어 진행할수도 있지만 그 부분은 생략한다. 본 포스팅에서는 어떻게 원격 접속을 할 수 있는지 그 방법에 대해 다뤄보겠다.
설치 과정
1. config 파일 생성
$jupyter notebook --generate-config.
# /home/v2j/.jupyter/jupyter_notebook_config.py
생성시 경로 밑에 위와 같은 config.py 파일이 생성된다.
2. ipython으로 암호생성
$ipython
다음과 같이 입력해주는 이유는 jupyter notebook에 암호를 걸어 함부로 접근하지 못하게 하기 위해서 이다. 모든 데이터 분석은 보안이 중요하다 :) 위와 같은 커멘드를 입력하면 아래 사진과 같은 화면이 나올 것이다.

> out[2] 에 나오는 'sha1:~~~'를 다 복사해준 뒤 'exit()' 으로 나가주자.
> 'sha1:~~~'는 내가 설정해준 암호이다.
3. jupyter_notebook_config.py(환경설정) 파일 수정
$sudo vi ~/.jupyter/jupyter_notebook_config.py
1번에서 만들어준 config.py 파일을 열어 원격 접속을 허용하도록 수정해주자.

> 위 사진과 같이 해당 부분을 " * "로 바꿔준다.
추가로 아래에 사용하고자 하는 서버의 정보를 입력해준다.
> c.NotebookApp.ip = ~~~ # 접속할 ip 입력(서버 ip)
> c.NotebookApp.open_browser = False # 원격 실행이므로 브라우저 실행X
> c.NotebookApp.password = 'sha ~~' # 미리 복사해놓은 암호화된 비밀번호 붙여넣기
> c.NotebookApp.password_required = True # 비밀번호 요구
> c.NotebookApp.port = 8888 # 포트 번호
tip. 쉽게 찾기 위해서는 'esc → :c.NotebookApp.password' 와 같이 해주면 'c.NotebookApp.password' 에 해당하는 line으로 이동한다. (like ctrl + f 와 같은 기능
# 이렇게 실행해도 되지만 추천하지 않는다. 영구적으로 실행시켜 놓아야 편하다.
$jupyter notebook
# 이렇게 실행하면 jupyter notebook을 강제로 종료하기 전까지는 꺼지지 않는다.
$nohup jupyter notebook
# 또는 아래와 같이 실행하자. 자세한 사항은 아래에 추가 설명을 기입하겠다.
$screen -r jupyter
> jupyter service를 screen에 띄워 어떤 ip에서 사용중인지 모니터링 가능 + jupyter notebook 실행
> 'ctrl + a + d' 순서대로 누르면 나가진다. 이렇게 나가게 되면 jupyter notebook이 셧다운 되지 않는다.
> 'ctrl + c' 를 누르면 jupyter notebook이 셧다운 된다.
5. 설정 끝.!
마치며,,
여러 사람이 하나의 서버를 사용해야 한다면 동일한 환경의 Docker image를 이용하여 사용자의 수 만큼 container를 만들어 사용하는 걸 추천한다. 만약 그렇게 하지 않는다면 다른 사용자의 설정으로 인한 버전 충돌 및 서버에 직접적인 영향으로 뭔가 문제가 생길 것이다.