繁体   English   中英

如何配置虚拟机以在 Google Cloud Platform 上通过 Web 访问 jupyter notebook?

[英]How to configure a VM for web access to jupyter notebook on Google Cloud Platform?

我正在尝试使用 Python、Miniconda 和 Jupyter 在 Google Cloud Platform 中创建数据科学环境。 但是当我尝试使用外部 IP 访问 jupyter 时遇到错误

我按照以下步骤操作:

1 - 我已访问资源管理页面 ( https://console.cloud.google.com/cloud-resource-manager )。 创建一个新项目 (test_01)

2 - 我打开了仪表板 ( https://console.cloud.google.com/home/dashboard )。 我选择了我刚刚创建的项目(test_01)

3 - 在左上角的菜单中 - 选择“Compute Engine”并点击“VM实例”。点击“创建”按钮

4 - 我填写:命名实例(the-who),选择区域(在我的情况下 - 北美洲-northeast1-a),选择内存,存储和CPU,选择启动盘,远程访问SSH,确保你可以通过允许 Http 和 Https 流量从 Internet 访问 VM,然后单击“创建”

5 - 我打开了 Google 的 Cloud Shell。 我按下按钮 >_

6 - 在 Ubuntu 终端打开的情况下,我输入为 root 创建密码:sudo passwd

7 - 输入命令进入 SSH:gcloud compute ssh the-who

8 - 总是有一个关于该区域的问题:您的意思是区域 [us-east1-c] 例如:[the-who] (Y/n)? - 由于矿区不同 (northamerica-northeast1-a) 我按 n

9 - 我开始安装软件包(bzip2 git libxml2-dev):“sudo apt-get update”和“sudo apt-get install bzip2 git libxml2-dev”

10 - 现在安装 miniconda、scikit-learn、pandas、jupyter 和 ipython:“wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh”、“bash Miniconda3-latest-Linux- x86_64.sh”、“rm Miniconda3-latest-Linux-x86_64.sh”、“source .bashrc”和“conda install scikit-learn pandas jupyter ipython”

11 - 我检查安装:“python --version”和“which python”

12 - 现在我想设置我的 VM 以允许 Web 访问我的 Jupyter 笔记本。 我返回到实例面板并在左上角的菜单中选择了“VPC 网络 > 防火墙规则”。 我点击了“CREATE FIREWALL RULE”链接并填写了以下值

13 - 名称:jupyter-rule * 源 IP 范围:0.0.0.0/0 * 指定的协议和端口:tcp:8888 * 目标标签:the-who * 并将所有其他变量保留为默认值。 因此,此防火墙规则允许所有传入流量(所有 IP 的)到达端口 8888。

14 - 我返回到 VM 页面(左上菜单> Compute Engine> VM 实例)并单击 VM 名称。 我记下了虚拟机的外部 IP 地址

15 - 回到终端,我配置了 jupyter。 我输入“jupyter notebook --generate-config”来生成配置文件并生成密码“jupyter notebook password”

16 - 现在编辑 jupyter 配置文件:vim .jupyter/jupyter_notebook_config.py

17 - 在第一行写入然后保存并关闭文件:c.NotebookApp.ip = '*'

18 - 上述命令将允许笔记本可用于 VM 上的所有 IP 地址。 然后我用命令行启动了 Jupyter Notebook: jupyter-notebook --no-browser --port=8888

但我发现了这个错误信息:

(base) reichaves@the-who:~$ jupyter-notebook --no-browser --port=8888
[I 11:51:06.234 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret
Traceback (most recent call last):
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/traitlets/traitlets.py", line 528, in get
    value = obj._trait_values[self.name]
KeyError: 'allow_remote_access'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 864, in _default_allow_remote
    addr = ipaddress.ip_address(self.ip)
  File "/home/reichaves/miniconda3/lib/python3.7/ipaddress.py", line 54, in ip_address
    address)
ValueError: '' does not appear to be an IPv4 or IPv6 address
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/reichaves/miniconda3/bin/jupyter-notebook", line 11, in <module>
    sys.exit(main())
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/jupyter_core/application.py", line 266, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/traitlets/config/application.py", line 657, in launch_instance
    app.initialize(argv)
  File "</home/reichaves/miniconda3/lib/python3.7/site-packages/decorator.py:decorator-gen-7>", line 2, in initialize
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 1628, in initialize
    self.init_webapp()
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 1378, in init_webapp
    self.jinja_environment_options,
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 159, in __init__
    default_url, settings_overrides, jinja_env_options)
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 252, in init_settings
    allow_remote_access=jupyter_app.allow_remote_access,
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/traitlets/traitlets.py", line 556, in __get__
    return self.get(obj, cls)
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/traitlets/traitlets.py", line 535, in get
    value = self._validate(obj, dynamic_default())
  File "/home/reichaves/miniconda3/lib/python3.7/site-packages/notebook/notebookapp.py", line 867, in _default_allow_remote
    for info in socket.getaddrinfo(self.ip, self.port, 0, socket.SOCK_STREAM):
  File "/home/reichaves/miniconda3/lib/python3.7/socket.py", line 748, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

请问,有谁知道是否缺少任何设置细节?

Jupyter 的最新版本需要被告知要监听哪些 IP 地址。 您需要在配置文件中:

c.NotebookApp.ip = '0.0.0.0'

即使有了这个更改和密码,我还是更愿意将 Jupyter 放在 Singularity 容器中,因为可以通过 Web 访问它的人可以在 VM 上运行任何 Python 代码。 有关执行此操作的方法,请参阅: https : //bitbucket.org/account/user/stfcsciml/projects/JSV

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM