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

标签 ipython jupyter-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 内部服务器错误

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

有什么想法吗?

最佳答案

除了使用屏幕,也许您可​​以切换到初始化脚本或 supervisord保持 IPython Notebook 正常运行。

假设您采用主管路线:

安装supervisord

使用包管理器安装supervisord。对于 ubuntu,它被命名为 supervisor

apt-get install supervisor

如果您决定通过 pip 安装 Supervisor,则必须自己设置其 init.d 脚本。

为 IPython 编写一个 Supervisor 配置文件

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

安装supervisor后,它应该已经创建了/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

上述管理程序配置还依赖于 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 进行编排。

关于ipython笔记本在远程服务器上的特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19896119/

相关文章:

python - 当我尝试运行 "import matplotlib.pyplot as plt"时,收到以下错误 : "ModuleNotFoundError: No module named ' PIL'"

windows - 如何在 Windows 上使用 Anaconda 安装 ipdb?

python - IPython - 循环输入历史记录中的 block ?

python - 使用 Python 的列的平均字长

python - Plotly FigureWidgets 未加载到 kaggle 的笔记本中

python - 无法在 mac 上安装 ipython

ruby - 如何在 Jupyter Web UI (Mac OS 10.10.5) 中安装 Ruby 用作笔记本?

python - Jupyter 笔记本会发出错误警告

latex - 在 IPython 笔记本中显式加载 AMSmath 会导致 "[Math Processing Error]"

python - 数据分析 Pandas SettingWithCopyWarning