screen を使用するのではなく、おそらく init スクリプトまたはSupervisordに切り替えて、IPython ノートブックを稼働させ続けることができます。
あなたがsupervisordルートに行くと仮定しましょう:
Supervisord をインストールする
パッケージ マネージャーを使用して、supervisord をインストールします。ubuntu の場合、名前はsupervisor
.
apt-get install supervisor
pip を使用してスーパーバイザーをインストールすることにした場合は、その init.d スクリプトを自分でセットアップする必要があります。
IPython のスーパーバイザー構成ファイルを作成する
構成ファイルはスーパーバイザーに何をどのように実行するかを指示します。
スーパーバイザーをインストールすると、/etc/supervisor/supervisord.conf
. 次の行がファイルに存在する必要があります。
[include]
files = /etc/supervisor/conf.d/*.conf
これらの線が含まれている場合は、体調が良好です。新しい構成ファイルが必要な場所を示すためにのみ示します。構成ファイルは、 のような名前でそこに移動できます/etc/supervisor/conf.d/ipynb.conf
。
仮想環境でノートブックを実行するipython-notebook-cookbookによって Chef によって生成されたサンプル構成を次に示します。
[program:ipynb]
command=/home/ipynb/.ipyvirt/bin/ipython notebook --profile=cooked
process_name=%(program_name)s
numprocs=1
numprocs_start=0
autostart=true
autorestart=true
startsecs=1
startretries=3
exitcodes=0,2
stopsignal=QUIT
stopwaitsecs=10
user=ipynb
redirect_stderr=false
stdout_logfile=AUTO
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stdout_capture_maxbytes=0
stdout_events_enabled=false
stderr_logfile=AUTO
stderr_logfile_maxbytes=50MB
stderr_logfile_backups=10
stderr_capture_maxbytes=0
stderr_events_enabled=false
environment=HOME="/home/ipynb",SHELL="/bin/bash",USER="ipynb",PATH="/home/ipynb/.ipyvirt/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games",VIRTUAL_ENV="/home/ipynb/.ipyvirt"
directory=/home/ipynb
serverurl=AUTO
上記のスーパーバイザー構成は、IPython ノートブック構成 ( にあります) にも依存しています/home/ipynb/.ipython/profile_cooked/ipython_notebook_config.py
。これにより、構成がはるかに簡単になります (パスワードハッシュやその他の多くの構成可能要素もセットアップできるため)。
c = get_config()
# Kernel config
# Make matplotlib plots inline
c.IPKernelApp.pylab = 'inline'
# The IP address the notebook server will listen on.
# If set to '*', will listen on all interfaces.
# c.NotebookApp.ip= '127.0.0.1'
c.NotebookApp.ip='*'
# Port to host on (e.g. 8888, the default)
c.NotebookApp.port = 8888 # If you want it on 80, I recommend iptables rules
# Open browser (probably want False)
c.NotebookApp.open_browser = False
構成ファイルを取得したので、再読み込みして更新します
supervisorctl reread
supervisorctl update
現実
実際には、 Chefのクックブックを使用して、インストールと構成全体を行っていました。ただし、このような小さなもので構成管理を使用するのは、少しやり過ぎです (自動化でこれらを調整している場合を除く)。
最近では、IPython ノートブックに Docker イメージを使用し、JupyterHub または tmpnb を介してオーケストレーションを行っています。