ipython笔记本远程服务器的特性

时间:2013-11-10 22:35:10

标签: ipython ipython-notebook

我正在使用ipython笔记本执行我的第一步,并将其成功安装在我的远程服务器上(通过SSH),然后使用以下命令启动它:

ipython notebook --ip='*' ---pylab=inline --port=7777

然后我检查http://myserver.sth:7777/,笔记本电脑运行正常。然后我想关闭与服务器的SSH连接并让ipython在后台运行。当我这样做时,我无法连接到myserver.sth:7777。一旦我通过SSH再次连接到远程服务器,我就可以再次连接到笔记本电脑。然后我尝试使用screen启动ipython:我在screen -S ipy创建了一个新屏幕,我开始使用上面的ipython笔记本,然后使用Ctrl+A,D分离屏幕并退出到TTY。我仍然可以远程连接到笔记本电脑。然后我关闭了SSH连接,当我尝试访问以前存储的笔记本时出现404 NOT FOUND错误,我在http://myserver.sth:7777/的笔记本列表中看不到它。我试图创建一个新的笔记本,但我得到了500 Internal Server Error

我还尝试使用和不使用ipython notebook运行sudo

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

您可以切换到初始脚本或supervisord以保持IPython笔记本的正常运行,而不是使用屏幕。

让我们假设你走上了监督路线:

安装supervisord

使用您的包管理器安装supervisord。对于ubuntu,它的名称为supervisor

apt-get install supervisor

如果你决定通过pip安装supervisor,你必须自己设置它的init.d脚本。

为IPython编写管理员配置文件

configuration file告诉主管要运行什么以及如何运行。

安装主管后,它应该已创建/etc/supervisor/supervisord.conf。这些行应存在于文件中:

[include]
files = /etc/supervisor/conf.d/*.conf

如果它们包含这些线条,那么你的状态很好。我只展示它们以展示它期望新配置文件的位置。您的配置文件可以到那里,其名称类似于/etc/supervisor/conf.d/ipynb.conf

这是一个示例配置,由Chef ipython-notebook-cookbook生成,在virtualenv中运行笔记本:

[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

上面的supervisor配置还依赖于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 cookbook来完成整个安装和配置。但是,使用像这样的小东西进行配置管理有点过分(除非你在自动化中编排这些内容)。

现在我使用Docker图像处理IPython笔记本,通过JupyterHub或tmpnb进行编排。