#python #linux #google-cloud-platform #jupyter-notebook
#python #linux #google-cloud-platform #jupyter-notebook
Вопрос:
Я пытаюсь создать среду обработки данных в облачной платформе Google с помощью Python, Miniconda и Jupyter. Но я сталкиваюсь с ошибкой при попытке получить доступ к jupyter с внешнего IP
Я выполнил эти шаги:
1 — Я получил доступ к странице управления ресурсами (https://console.cloud.google.com/cloud-resource-manager ). Создайте новый проект (test_01)
2 — Я открыл панель мониторинга (https://console.cloud.google.com/home/dashboard ). Я выбрал только что созданный проект (test_01)
3 — В верхнем левом меню выберите «Вычислительный движок» и нажмите «Экземпляры виртуальной машины. Нажмите на кнопку «Создать»
4 — Я заполнил: Назовите экземпляр (the-who), выберите регион (в моем случае — Северная Америка-северо-Восток 1-a), выберите память, хранилище и процессор, выберите загрузочный диск, удаленный доступ SSH, убедитесь, что вы можете получить доступ к виртуальной машине из Интернета, разрешив трафик Http и Https, и нажмите «Создать»
5 — Я открыл облачную оболочку Google. Я нажал кнопку >_
6 — При открытом терминале Ubuntu я ввел пароль для root: sudo passwd
7 — Введите команду для входа в SSH: gcloud compute ssh the-кто
8 — Всегда возникает вопрос о зоне: Вы имели в виду зону [us-east1-c], например: [the-who] (Y / n)? — Поскольку моя зона отличается (Северная Америка-северо-восток1-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 установит scikit-изучит pandas jupyter ipython»
11 — Я проверяю установку: «python —version» и «какой python»
12 — Теперь я хочу настроить свою виртуальную машину так, чтобы разрешить веб-доступ к моим записным книжкам Jupyter. Я вернулся на панель экземпляра и в верхнем левом меню выбрал «Сеть VPC> Правила брандмауэра». Я нажал на ссылку «СОЗДАТЬ ПРАВИЛО БРАНДМАУЭРА» и ввел следующие значения
13 — Имя: jupyter-rule * Исходные диапазоны IP: 0.0.0.0 / 0 * Указанные протоколы и порты: tcp: 8888 * Целевые теги: the-who * и оставьте все остальные переменные со значениями по умолчанию. В результате это правило брандмауэра позволяет всему входящему трафику (всех IP-адресов) достигать порта 8888.
14 — Я вернулся на страницу виртуальной машины (верхнее левое меню> Вычислительный движок> Экземпляры виртуальной машины) и щелкнул по имени виртуальной машины. Я записал внешний IP-адрес виртуальной машины
15 — Возвращаясь к терминалу, я настраиваю jupyter. Я набираю «jupyter notebook —generate-config», чтобы сгенерировать файл конфигурации и сгенерировать пароль «jupyter notebook password»
16 — Теперь отредактируйте файл конфигурации jupyter: vim .jupyter/jupyter_notebook_config.py
17 — В первой строке напишите, а затем сохраните и закройте файл: c.NotebookApp.ip = ‘*’
18 — Приведенная выше команда позволит ноутбуку быть доступным для всех 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
Пожалуйста, кто-нибудь знает, отсутствовали ли какие-либо детали настройки?
Ответ №1:
В последних версиях Jupyter необходимо указать, какие IP-адреса прослушивать. Вам нужно в файле конфигурации:
c.NotebookApp.ip = ‘0.0.0.0’
Даже с этим изменением и паролем я предпочитаю поместить Jupyter в контейнер Singularity, поскольку люди с веб-доступом к нему могут запускать любой код python на виртуальной машине. Рецепт для этого см.:https://bitbucket.org/account/user/stfcsciml/projects/JSV