我正在使用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
。
有什么想法吗?
答案 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进行编排。