로컬 환경에서 파이썬으로 개발할 때 주피터 노트북을 많이 사용한다.
바로바로 실행 결과를 확인하면서 편리하게 개발하기 좋기 때문!
보통 윈도우(Windows) 로컬 환경에서 주피터 노트북 설치 및 실행을 하지만
이 글에서는 리눅스 서버 (또는 도커 컨테이너) 환경에서
마찬가지로 주피터 노트북을 설치하고 띄워서 개발해보도록 하겠다 :)
1. 파이썬이 설치되어 있어야 함
파이썬 개발을 위해서 주피터 노트북을 사용하는 만큼
당연하게도 리눅스 서버에 파이썬이 설치되어 있어야 한다.
$ python --version
Python 3.7.6
파이썬 설치 여부 및 버전을 위와 같이 확인한다.
만약 설치되어 있지 않다면,
$ sudo apt-get install python3
위 명령어를 입력하여 설치를 진행한다.
2. 주피터 노트북 설치
이제 리눅스 환경에서 주피터 노트북을 설치해보자.
보통은 pip 가 설치되어 있는 경우가 많을 텐데, 이 경우 다음과 같이 입력하여 설치를 진행한다.
$ pip install jupyter
만약 pip 가 설치되어 있지 않은 경우
$ sudo apt-get install jupyter
위와 같이 앞서 파이썬 설치했던 것과 유사하게 apt-get install 을 활용하여 설치를 진행한다.
3. 주피터 실행
주피터 노트북 실행 커맨드는 매우 간단하다.
$ jupyter notebook
이렇게 하면 실행이 된다.
그런데, 개발 편의성을 위해 몇 가지 옵션을 조절해보자.
1) 포트 변경하여 실행하기
주피터 노트북을 실행하면 기본적으로 8888 포트로 실행된다.
포트를 다른 숫자로 지정하여 실행하고자 한다면 (예: 8084)
$ jupyter notebook --port 8084
이렇게 --port 옵션을 주어 실행하면 된다.
2) root 계정으로 실행하기 (root 관련 에러 발생하는 경우)
리눅스 서버에 root 계정으로 접속한 경우
주피터 노트북은 정상적으로 실행되지 않으며, 다음과 같은 에러가 발생한다.
[C 12:22:48.946 NotebookApp] Running as root is not recommended. Use --allow-root to bypass.
root 계정으로 실행하는 것이 권장되지 않는다고 한다.
에러에 있는 가이드에 따라 다음과 같이 --allow-root 옵션을 추가하면 정상 실행된다.
$ jupyter notebook --port 8084 --allow-root
주피터 노트북이 정상적으로 실행된다면 다음과 같이 로그가 보일 것이다.
To access the notebook, open this file in a browser:
file:///root/.local/share/jupyter/runtime/nbserver-21227-open.html
Or copy and paste one of these URLs:
http://localhost:8084/?token=802a430f45c6e1337a817dab00b553db7dad2405d1beb797
or http://127.0.0.1:8084/?token=802a430f45c6e1337a817dab00b553db7dad2405d1beb797
맨 아래 http:// 로 시작하는 주소 2개 중 하나를 복사하여 웹 브라우저에 붙여넣으면
주피터 노트북이 정상적으로 실행된다.
http://{서버ip}:{포트}/?token={토큰값}
접속 경로는 위와 같이 정리할 수 있다.
token 값의 경우 실행할 때마다 매번 바뀌는 값이므로 참고한다.
3) 원격으로 실행하여 접속하기 (도커 컨테이너)
만약 주피터 노트북을 실행하려는 리눅스 서버가 원격서버 or 도커 컨테이너인 경우,
위 2)번에서 웹 브라우저에 붙여넣은 주소로 정상 실행되지 않을 것이다.
'localhost' 나 '127.0.0.1' 은 자기 자신의 ip 를 뜻하므로
이 값 대신 원격 서버의 ip 로 주소를 바꿔서 입력해야 하는데
이마저도 잘 되지 않을 수 있다.
그런 경우 주피터 노트북 실행 커맨드에
$ jupyter notebook --ip=0.0.0.0 --port=8084 --allow-root
요렇게 --ip=0.0.0.0 이라는 옵션 값을 넣어주면 정상적으로 접근이 된다.
다만, 도커 컨테이너의 경우 참고할 사항이 있다.
처음 컨테이너를 띄울 때 -p 옵션을 통해 port 매칭을 시켜주어야 한다.
$ docker run {옵션들} -p 12345:8084
이 경우는 컨테이너 내부에서 '8084' 포트로 실행되는 프로세스와
컨테이너 외부의 '12345' 포트를 연결해주는 것으로,
좀 전에 주피터 노트북을 8084 포트로 실행하였으니
외부에서 '서버ip:12345' 로 접속하면 도커 컨테이너 내부의 주피터 노트북 프로세스에 접근할 수 있다.
컨테이너 내부에서 8084로 이미 실행되고 있는 다른 프로세스가 있다면 정상동작하지 않을 수 있으니
포트 선택 시 프로세스 점유를 잘 고려하고 결정하도록 한다.
4) 백그라운드로 실행하기
위 주피터 노트북 실행 커맨드를 그냥 실행할 경우
서버 접속 세션이 끊기면 주피터 노트북도 꺼지게 된다.
다시 실행할 경우 token 값이 바뀌게 되어 기존의 접근 주소가 유효하지 않게 될 수 있다.
주피터 노트북을 백그라운드 프로세스로 실행하여 계속해서 떠 있도록 하고 싶다면
$ nohup jupyter notebook --ip=0.0.0.0 --port=8084 --allow-root &
이렇게 앞쪽에 'nohup'을, 뒷쪽에 '&' 을 입력하여 실행하면 된다.
(커맨드 입력 후 엔터 한 번 쳐줘야 함)
위 커맨드를 실행한 경로 내에 쌓이는 'nohup.out' 파일에 로그가 쌓이며
이 로그를 참고하여 동일하게 접속을 진행하면 된다. :D
':: linux' 카테고리의 다른 글
linux :: 파이썬 스크립트 백그라운드 실행 및 nohup.out 파일 로그 남지 않을 때 해결 (0) | 2023.09.26 |
---|---|
linux :: 리눅스 파일 압축, 압축 해제 명령어 모음집 (tar, gz, xz, bz2, zip 등) (0) | 2022.11.24 |
linux :: ubuntu(우분투), tomcat(톰캣), java(자바), jar 파일 버전 확인하기 (0) | 2022.02.24 |
linux :: apt update 시 NO_PUBKEY, 'NOSPLIT' 에러 해결 (0) | 2022.02.23 |
linux :: 리눅스 서버에 스토리지(storage) mount 시키기 (0) | 2021.12.21 |