[DL 서버구축] 4. Jupyter 설치

Anaconda가 설치되어있다는 가정 하에 Jupyter를 설치한다.
Jupyter Lab은 Jupyter Notebook을 개선한 것이기 때문에 둘의 설정 방법은 동일하다.
실행할 때만 jupyter notebook으로 할지, jupyter lab으로 할지만 바꾸면 된다.

1. 비밀번호 설정

Anaconda에는 Jupyter Notebook이 이미 설치되어있다.
비밀번호를 설정한 후 백그라운드에서 돌려주기만 하면 된다.

>>> from notebook.auth import passwd
>>> passwd()
Enter password: 
Verify password: 
'sha1:<암호화된 비밀번호>'

이제 config 파일을 생성한 후 암호화된 비밀번호를 넣어주면 된다.

$ jupyter notebook --generate-config
$ vi ~/.jupyter/jupyter_notebook_config.py

# In vi editor
# Password to use for web authentication
c = get_config()
c.NotebookApp.password = u'sha1:<암호화된 비밀번호>'

Jupyter Notebook이나 Lab을 백그라운드에서 실행하기 위해서는 백그라운드로 프로세스를 실행한 후 nohup으로 프로세스를 데몬화하면 된다.
IP나 포트를 지정하고 싶다면 아래의 커맨드에 적당히 채워주면 된다.

$ nohup jupyter notebook --no-browser > jupyter.log &
or
$ nohup jupyter notebook --ip=xxx.xxx.xxx.xxx --port=xxxx --no-browser > jupyter.log &

이 경우 Jupyter를 종료하고 싶으면 ps와 grep을 사용하여 프로세스를 직접 종료해야 한다.

$ ps -eaux | grep jupyter
$ kill <프로세스 ID>

2. Jupyter Script

위에서 소개한 Jupyter의 실행과 종료를 스크립트화할 수 있다.

실행중인 파이썬을 모두 종료하도록 작성했는데, 적당히 수정해서 쓰면 된다.

#!/usr/bin/zsh
PYTHONPATH="/usr/anaconda3/bin/python3"

# Argument Validation
if [ $# -ne 1 ]; then
    echo "Run with the correct command: <run|kill|restart>"
    exit
fi
if [ "$1" != "run" -a "$1" != "kill" -a "$1" != "restart" ]; then
    echo "Run with the correct command: <run|kill|restart>"
    exit
fi

# Run Jupyter Lab
if [ "$1" = "run" ]; then
    nohup jupyter lab --ip=1.1.1.1 --port=1111 --no-browser > jupyter.log &
    exit
fi

# Kill Jupyter Lab
if [ "$1" = "kill" ]; then
    # kill $(ps eaux | grep jupyter | awk '{print $2}' | sed -n '1p')
    killall -s SIGTERM $PYTHONPATH
    exit
fi

# Restart Jupyter Lab
if [ "$1" = "restart" ]; then
    killall -s SIGTERM $PYTHONPATH &&
    nohup jupyter lab --ip=1.1.1.1 --port=1111 --no-browser > jupyter.log &
    exit
fi

다음의 방법으로 Jupyter를 백그라운드에서 실행하고 종료할 수 있다.
물론 스크립트기 때문에 첫 실행 전에 chmod +x jupyter.sh를 실행해주어야 한다.

$ ./jupyter.sh run
$ ./jupyter.sh kill
$ ./jupyter.sh restart

cf. 방화벽

방화벽이 닫혀있는 경우 당연히 외부에서 서비스에 접근할 수 없다.

예를 들어 Ubuntu의 경우 다음과 같이 (필자의 Jupyter 포트는 1111이다)

$ sudo ufw allow 1111/tcp
$ sudo ufw reload

CentOS의 경우 다음과 같이

$ sudo firewall-cmd --permanent --zone=public --add-port=1111/tcp
$ sudo firewall-cmd --reload

방화벽을 해제할 수 있다.

Series Navigation<< [DL 서버구축] 3. Ubuntu 18.04에 CUDA/cuDNN/PyTorch 설치

Hits: 71

댓글 남기기