FreeNAS에 jupyter notebook을 설치하는 방법에 대해 정리하였다. 이 설치 방법은 Daniel Curtis 가 작성한 Install Jupyter Notebook on FreeBSD 에 기초하여 작성하였다.
1. FreeNAS에 Jail 설치
1) 먼저 FreeNAS 메뉴얼을 참조하여 jail을 설치한다.
2) 설치한 Jail로 login 한다.
jail이 설치된 FreeBSD에서 테미날 앱을 실행시킨 후, 터미날에서
# jls
를 실행하여 설치된 jail list를 확인한 후, jail shell 로 들어간다.
이를 위해
# su
# jexec "jail_no" csh
를 실행한다. 그리고 에디터 vim을 설치한다.
# pkg install vim
2. Jupyter user 생성
Jail 내에서 다음의 명령을 실행한다.
# pw add user -n jupyter -m -s /bin/sh -c "Jupyter Notebook"
3. Python 3와 관련 패키지 설치
# pkg install python3 py38-{pip,pandas,numpy,matplotlib,setuptools,virtualenv,pyzmq}
4. jupyter 또는 jupyterlab설치
# pip3 install jupyter
또는
# pkg install py38-jupyterlab
5. jupyter 로그인 비밀 번호 생성
# python3
Python 3.8.12 (default, Nov 4 2021, 01:21:17)
.
.
>>> from notebook.auth import passwd; passwd()
6. Config 파일 설치
다음의 명령어로 config 파일을 생성한다.
su - jupyter -c "jupyter notebook --generate-config"
다음과 같이 config file을 수정한다.
vim /home/jupyter/.jupyter/jupyter_notebook_config.py
아래의 항목을 찾아 줄 앞에 있는 #을 제거하고 앞에서 복사해 둔 비밀번호를 인용부호 사이에 기입한다.
c.NotebookApp.password = ''
그리고 다음의 항목을 상황에 맞게 수정하여 준다
c.NotebookApp.ip ='192.168.0.1'
c.NotebookApp.open_browser = False
c.NotebookApp.notebook_dir = '/media/jupyter'
c.NotebookApp.port = 8888'
7. 시작 스크립트 생성
다음과 같이 폴더를 생성하여 준다.
mkdir /media/jupyter
chown jupyter:jupyter /media/jupyter
mkdir /var/run/jupyter
chown jupyter /var/run/jupyter
아래와 같이 인터넷에 나와있는 방법으로 시작 스크립트를 설치하면 이상하게도 gnuplot, R 과 같이 multi kernel을 설치시 jupyter가 제대로 작동하지 않았다. 그래서 다음과 같은 방법으로 설치하였다.
설치방법 1
cd /usr/local/etc/rc.d
vim jupyter.sh
설치한 jupyter 다음 내용을 넣어준다.
!#/bin/sh
#su - jupyter -c 'jupyter notebook'
su - jupyter -c 'jupyter lab'
파일을 저장한 후
chmod a+x jupyter.sh
jail을 재시작한 후
http://ip-address:8888
로 jupyter 실행
설치방법 2
아래와 같이 설치시 python3 kernel에 대해서는 잘 작동하나, 다른 언어의 kernel을 추가로 설치하면 작동이 잘 않됨.
다음과 같이 시작 스크립트를 만들어 준다.
mkdir /usr/local/etc/rc.d/
vi /usr/local/etc/rc.d/jupyter
다음의 내용을 넣어준다.
#!/bin/sh
#
# PROVIDE: jupyter
# REQUIRE: LOGIN
#
# Add the following lines to /etc/rc.conf to enable jupyter notebook server
#
#
# jupyter_enable (bool): Set to "NO" by default,
# Set it to "YES" to enable jupyter notebook server
. /etc/rc.subr
name=jupyter
command=/usr/local/bin/jupyter
rcvar=jupyter_enable
load_rc_config $name
jupyter_enable="${jupyter_enable-"NO"}"
jupyter_user="${jupyter_user-"jupyter"}"
jupyter_pidfile="${jupyter_pidfile:-"/var/run/jupyter/jupyter.pid"}"
# /etc/rc.subr use $pidfile (not ${name}_pidfile)
pidfile="${jupyter_pidfile}"
start_cmd="su - ${jupyter_user} -c '${command} notebook' &"
stop_cmd="${name}_stop"
status_cmd="${name}_status"
getval_cmd="${name}_getval"
jupyter_stop()
{
jupyter_pid=$(pgrep -f "jupyter-notebook")
echo "Stopping ${name}."
kill -s TERM "$(cat "${jupyter_pidfile}")"
echo "Stopping ${name}."
kill -s TERM "${jupyter_pid}"
rm ${jupyter_pidfile}
}
jupyter_status()
{
# Try its best to find the service's status
if [ -f "${jupyter_pidfile}" ]
then
jupyter_pid="$(cat "${jupyter_pidfile}")"
fi
if [ -z "${jupyter_pid}" ]
then
jupyter_pid=$(pgrep -f "jupyter-notebook")
[ -n "${jupyter_pid}" ] && echo "${jupyter_pid}" > "${jupyter_pidfile}"
fi
if [ -n "${jupyter_pid}" ]
then
echo "${name} running with pid: $jupyter_pid"
else
echo "${name} not running? (pid not found)"
fi
}
command_args=" >/dev/null 2>&1 &"
load_rc_config $name
run_rc_command "$1"
스크립트를 실행 파일로 만들어 주고
chmod a+x /usr/local/etc/rc.d/jupyter
Jial 부팅시 jupyter 가 자동실행 되도록 다음과 같이 하여 준다.
sysrc jupyter_enable=YES
jupyter를 실행하여 본다.
8. Python kernel 설치
pip install ipykernel
su - jupyter -c 'python3.8 -m ipykernel install --user'
이제 jupyter을 실행하여 보자.
service jupyter start