Tutorial

Установка, запуск и подключение к Jupyter Notebook на удаленном сервере

UbuntuPythonUbuntu 18.04

Автор выбрал Apache Software Foundation для получения пожертвования в размере $100 в рамках программы Write for DOnations.

Введение

Jupyter Notebook — интерактивное веб-приложение с открытым исходным кодом, позвоялющее писать и запускать программный код более чем на 40 языках программирования, включая Python, R, Julia и Scala. Jupyter Notebook — это продукт Project Jupyter, очень полезный для итеративного программирования, поскольку он позволяет написать небольшой фрагмент кода, запустить его и вывести результат.

Jupyter Notebook позволяет создавать документы в форме блокнота, обычно называемые «блокнотами». Блокноты, создаваемые Jupyter Notebook, представляют собой доступные для публикации и воспроизведения исследовательские документы, содержащие элементы расширенного текста, уравнения, код и результаты исполнения (рисунки, таблицы, интерактивные графики). Блокноты можно экспортировать в файлы кода, документы HTML или PDF, а также использовать для создания интерактивных слайд-шоу или веб-страниц.

Эта статья расскажет вам о том, как установить и настроить приложение Jupyter Notebook на веб-сервере Ubuntu 18.04 и подключиться к нему с локального компьютера. Также мы покажем, как использовать Jupyter Notebook для запуска примера кода на Python.

Предварительные требования

Для данного обучающего руководства вам потребуется следующее:

Кроме того, если на вашем локальном компьютере используется Windows, вам нужно будет установить PuTTY для создания туннеля SSH для подключения к серверу. Для загрузки и установки PuTTY следуйте указаниям обучающего модуля Создание ключей SSH с помощью PuTTY в Windows.

Шаг 1 — Установка Jupyter Notebook

Поскольку блокноты используются для записи, запуска и просмотра результатов выполнения небольших фрагментов программного кода, предварительно нужно настроить поддержку языка программирования. Jupyter Notebook использует ядро с привязкой к языкам, компьютерную программу, которая запускает и проводит внутренний анализ кода. В Jupyter Notebook имеется много ядер для разных языков, по умолчанию используется IPython. В этом обучающем модуле вы научитесь настраивать Jupyter Notebook для запуска кода Python через ядро IPython.

Если вы выполнили обучающие модули, указанные в разделе «Предварительные требования», у вас должны быть установлены Python 3, pip и виртуальная среда. Приведенные в этом руководстве примеры следуют указаниям по конвенции обучающего модуля Python 3, где виртуальной среде присваивается имя my_env, но вы можете использовать любое другое имя.

Начнем с активации виртуальной среды:

  • source my_env/bin/activate

После этого в вашей командной строке будет отображаться имя вашей среды в качестве префикса.

Теперь вы находитесь в виртуальной среде и можете начать установку Jupyter Notebook:

  • python3 -m pip install jupyter

Если установка выполнена успешна, вы увидите примерно следующий результат:

Output
. . . Successfully installed MarkupSafe-1.0 Send2Trash-1.5.0 backcall-0.1.0 bleach-2.1.3 decorator-4.3.0 entrypoints-0.2.3 html5lib-1.0.1 ipykernel-4.8.2 ipython-6.4.0 ipython-genutils-0.2.0 ipywidgets-7.2.1 jedi-0.12.0 jinja2-2.10 jsonschema-2.6.0 jupyter-1.0.0 jupyter-client-5.2.3 jupyter-console-5.2.0 jupyter-core-4.4.0 mistune-0.8.3 nbconvert-5.3.1 nbformat-4.4.0 notebook-5.5.0 pandocfilters-1.4.2 parso-0.2.0 pexpect-4.5.0 pickleshare-0.7.4 prompt-toolkit-1.0.15 ptyprocess-0.5.2 pygments-2.2.0 python-dateutil-2.7.3 pyzmq-17.0.0 qtconsole-4.3.1 simplegeneric-0.8.1 six-1.11.0 terminado-0.8.1 testpath-0.3.1 tornado-5.0.2

Установка Jupyter Notebook на ваш сервер завершена. Теперь мы перейдем к запуску приложения.

Шаг 2 — Запуск Jupyter Notebook

Jupyter Notebook необходимо запускать с VPS, чтобы вы могли подключаться к нему с локального компьютера, используя туннель SSH и свой любимый браузер.

Чтобы запустить сервер Jupyter Notebook, введите следующую команду:

  • jupyter notebook

После запуска команды вы увидите примерно следующий результат:

Output
[I 19:46:22.031 NotebookApp] Writing notebook server cookie secret to /home/sammy/.local/share/jupyter/runtime/notebook_cookie_secret [I 19:46:22.365 NotebookApp] Serving notebooks from local directory: /home/sammy/environments [I 19:46:22.365 NotebookApp] 0 active kernels [I 19:46:22.366 NotebookApp] The Jupyter Notebook is running at: [I 19:46:22.366 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675 [I 19:46:22.366 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 19:46:22.366 NotebookApp] No web browser found: could not locate runnable browser. [C 19:46:22.367 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675&tokenExample_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675

Возможно вы заметили в результатах предупреждение No web browser found. Это можно ожидать, поскольку приложение запущено на сервере, а вы вряд ли установили на него браузер. В следующем разделе этого обучающего модуля вы узнаете, как подключиться к Notebook на сервере, используя туннель SSH.

Сейчас закройте Jupyter Notebook. Для этого нажмите CTRL+C, затем y, а затем ENTER для подтверждения:

Output
Shutdown this notebook server (y/[n])? y [C 20:05:47.654 NotebookApp] Shutdown confirmed [I 20:05:47.654 NotebookApp] Shutting down 0 kernels

Затем выйдите из сервера, используя команду exit:

  • exit

Вы только что запустили Jupyter Notebook на своем сервере. Чтобы получить доступ к приложению и начать работать с блокнотами, вам потребуется подключиться к приложению через туннель SSH и браузер на локальном компьютере.

Шаг 3 — Подключение к приложению Jupyter Notebook через туннель SSH

Туннель SSH — простой и быстрый способ подключиться к приложению Jupyter Notebook, запущенному на вашем сервере. Secure Shell (обычно SSH) — это сетевой протокол, позволяющий выполнить защищенное подключение к удаленному серверу по незащищенной сети.

Протокол SSH включает механизм переадресации портов, позволяющий подключаться через туннель к определенным приложениям на определенном порту сервера с определенного порта на локальном компьютере. Мы научимся выполнять безопасную «переадресацию» приложения Jupyter Notebook на вашем сервере (по умолчанию использует порт 8888) на порт вашего локального компьютера.

Предпочтительный метод создания туннеля SSH зависит от операционной системы вашего локального компьютера. Выберите ниже подраздел, больше всего подходящий для вашего компьютера.

Примечание. Приложение Jupyter Notebook можно установить через веб-консоль DigitalOcean, однако подключение к приложению через туннель SSH следует выполнять с помощью терминала или PuTTY.

Создание туннелей SSH в macOS или Linux

Если на вашем локальном компьютере используется Linux или macOS, туннель SSH можно создать, запустив всего одну команду.

ssh — стандартная команда для создания соединения SSH. Когда она используется с директивой -L, вы можете указать перенаправление определенного порта локального хоста (т.е. локального компьютера) на указанный хост и порт удаленного хоста (в данном случае, на ваш сервер). Это означает, что все запускаемое на заданном порту удаленного сервера (8888, порт Jupyter Notebook по умолчанию) будет появляться на заданном порту локального компьютера (8000 в данном примере команды).

Чтобы создать собственный туннель SSH, запустите следующую команду. Вы можете изменить порт 8000 на любой предпочитаемый порт (например, если порт 8000 используется другим процессом). Рекомендуется использовать порт с номером не меньше 8000, поскольку такие номера портов вряд ли используются другими процессами. Обязательно укажите IP-адрес вашего собственного сервера и имя пользователя сервера без привилегий root:

  • ssh -L 8000:localhost:8888 sammy@your_server_ip

Если эта команда не выдаст никаких ошибок, вы войдете на удаленный сервер. Там вы должны активировать виртуальную среду:

  • source ~/environments/my_env/bin/activate

Затем запустите приложение Jupyter Notebook:

  • jupyter notebook

Для подключения к Jupyter Notebook откройте в своем предпочитаемом браузере локальный порт на локальном хосте: http://localhost:8000. После подключения к Jupyter Notebook переходите к шагу 4, чтобы научиться его использовать.

Создание туннелей SSH с использованием Windows и PuTTY

PuTTY — клиент SSH с открытым исходным кодом для Windows, который можно использовать для подключения к вашему серверу. После загрузки и установки PuTTY на ваш компьютер Windows (как описано в обучающем модуле из предварительных требований) откройте программу и введите URL или IP-адрес вашего сервера, как показано здесь:

Введите URL или IP-адрес сервера в Putty

Затем нажмите + SSH внизу левой панели и нажмите Tunnels (Туннели). В этом окне введите порт, который хотите использовать для доступа к Jupyter на локальном компьютере (8000). Рекомендуется использовать порт с номером не меньше 8000, поскольку такие номера портов вряд ли используются другими процессами. Если порт 8000 используется другим процессом, выберите другой неиспользуемый номер порта. Установите адрес назначения localhost:8888, поскольку порт 8888 — это тот порт, на котором работает Jupyter Notebook. Затем нажмите кнопку Add (Добавить), после чего порты должны появиться в поле Forwarded ports (Перенаправляемые порты):

Настройте туннель SSH в Putty

Затем нажмите кнопку Open (Открыть). Ваш компьютер подключится к серверу через SSH и соединит желаемые порты туннелем. Если никаких ошибок не появится, вы можете активировать свою виртуальную среду:

  • source ~/environments/my_env/bin/activate

Затем запустите Jupyter Notebook:

  • jupyter notebook

Затем откройте в предпочитаемом браузере локальный порт, например http://localhost:8000 (или любой выбранный номер порта), чтобы подключиться к экземпляру Jupyter Notebook, запущенному на сервере. После подключения к Jupyter Notebook переходите к шагу 4, чтобы научиться его использовать.

Шаг 4 — Использование Jupyter Notebook

При доступе через браузер Jupyter Notebook предоставляет информационную панель Notebook, которая выступает как обозреватель файлов и дает интерфейс для создания, редактирования и просмотра блокнотов. Эти блокноты следует рассматривать как документы (сохраненные с расширением файла .ipynb), в которых вы заполняете любое количество отдельных ячеек. Каждая ячейка содержит интерактивный текстовый редактор, который можно использовать для запуска кода или записи сгенерированного текста. Кроме того, блокноты позволяют записывать и запускать уравнения, использовать графические элементы (такие как изображения или интерактивные графики), а также их можно экспортировать и публиковать в различных форматах (.ipyb, .pdf, .py). Чтобы проиллюстрировать некоторые из этих функций, мы создадим файл ноутбука из информационной панели Notebook, напишем простую текстовую панель с уравнением и запустим простой код Python 3.

К этому моменту вы должны были подключиться к серверу через туннель SSH и запустить на сервере приложение Jupyter Notebook. После перехода на адрес http://localhost:8000 вы увидите страницу входа в систему:

Экран входа в систему Jupyter Notebook

В поле Password (Пароль) или поле токена сверху введите токен, показываемый в результатах после запуска jupyter notebook на сервере:

Output
[I 20:35:17.004 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret [I 20:35:17.314 NotebookApp] Serving notebooks from local directory: /home/sammy [I 20:35:17.314 NotebookApp] 0 active kernels [I 20:35:17.315 NotebookApp] The Jupyter Notebook is running at: [I 20:35:17.315 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675 [I 20:35:17.315 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 20:35:17.315 NotebookApp] No web browser found: could not locate runnable browser. [C 20:35:17.316 NotebookApp] . . .

Также вы можете скопировать URL с экрана терминала и вставить его в адресную строку браузера.

Jupyter Notebook автоматически покажет все файлы и папки, хранящиеся в каталоге, откуда выполняется запуск. Создайте новый файл блокнота, нажав New (Создать) и выбрав Python 3 в правом верхнем углу информационной панели Notebook:

Создайте новый блокнот Python3

В новом блокноте измените первую ячейку так, чтобы она принимала синтаксис разметки. Для этого нажмите Cell > Cell Type > Markdown (Ячейка > Тип ячейки > Разметка) на панели навигации сверху. Помимо разметки этот тип ячейки также позволяет записывать уравнения в LaTeX. Например, введите в ячейку следующее после ее переключения на разметку:

# Simple Equation

Let us now implement the following equation in Python:
$$ y = x^2$$

where $x = 2$

Чтобы преобразовать разметку в расширенный текстовый формат, нажмите CTRL + ENTER, и получите следующий результат:

Превратите образец уравнения в расширенный текст

Вы можете использовать ячейки разметки для заметок и документирования программного кода.

Теперь выполним простое уравнение и распечатаем результат. Нажмите Insert > Insert Cell Below (Вставка > Вставить ячейку снизу), чтобы вставить ячейку. Введите в новую ячейку следующий код:

x = 2
y = x*x
print(y)

Для запуска кода нажмите CTRL + ENTER и получите следующий результат:

Решение примера уравнения

Это довольно простые примеры того, что можно сделать с Jupyter Notebook. Однако это очень мощное приложение, которое можно использовать для самых разных целей. Отсюда вы можете добавить некоторые библиотеки Python и использовать блокнот, как и в любой другой среде разработки Python.

Заключение

Теперь вы можете писать воспроизводимый код Python и текст, используя приложение Jupyter Notebook на удаленном сервере. Чтобы пройти быстрый обзор Jupyter Notebook, нажмите Help (Справка) в верхней панели навигации и выберите пункт User Interface Tour (Обзор пользовательского интерфейса), как показано здесь:

Поиск обзора Jupyter Notebook

Если вы заинтересовались, вы можете узнать больше о Jupyter Notebook из документации Project Jupyter. Также вы можете использовать полученные в этом обучающем модуле знания, чтобы научиться программировать на Python 3.

0 Comments

Creative Commons License