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

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

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

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

Требования

Кроме того, если ваш локальный компьютер работает под управлением Windows, вам нужно установить на него PuTTY, чтобы в дальнейшем создать SSH-туннель к вашему удаленному серверу. Чтобы скачать и установить PuTTY, следуйте нашему мануалу Вход на сервер через 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

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

. . .
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

После выполнения этой команды вы увидите подобный вывод:

[I 19:46:22.031 NotebookApp] Writing notebook server cookie secret to /home/8host/.local/share/jupyter/runtime/notebook_cookie_secret
[I 19:46:22.365 NotebookApp] Serving notebooks from local directory: /home/8host/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». Этого и следует ожидать, так как приложение работает на удаленном сервере, и вы, вероятно, не устанавливали на него веб-браузер. Далее в этом мануале будет рассказано, как подключиться к Notebook на удаленном сервере с помощью SSH-туннелирования. Мы обсудим это в следующем разделе.

На данный момент нужно выйти из Jupyter Notebook, нажав Ctrl+C, затем y, а затем Enter для подтверждения:

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

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

3: Подключение к серверу по SSH-туннелю

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

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

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

SSH-туннелирование на Mac или Linux

Если вы используете Mac или Linux, вы можете создать туннель с помощью одной команды.

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

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

ssh -L 8000:localhost:8888 8host@your_server_ip

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

source ~/environments/my_env/bin/activate

В среде запустите Jupyter Notebook:

jupyter notebook

Чтобы подключиться к Jupyter Notebook, откройте в браузере на локальном компьютере веб-интерфейс Jupyter Notebook по URL-адресу, который начинается с http://localhost:8000.

SSH-туннелирование в Windows через Putty

В системе Windows SSH-туннель можно создать с помощью Putty.

PuTTY – это открытый SSH-клиент для Windows, который можно использовать для подключения к вашему серверу. После загрузки и установки PuTTY на вашем компьютере Windows откройте программу и введите URL или IP-адрес вашего сервера в поле Host Name (or IP address).

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

Теперь нажмите кнопку Add, после чего порты должны появиться в списке Forwarded ports.

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

source ~/environments/my_env/bin/activate

И запустите Jupyter Notebook:

jupyter notebook

В браузере перейдите по адресу http://localhost:8000  (или укажите порт, который вы выбрали), чтобы подключиться к экземпляру Jupyter Notebook на сервере.

4: Работа с Jupyter Notebook

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

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

В верхнем поле Password or token введите токен, который был показан в выводе после запуска на сервере команды jupyter notebook:

[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/8host
[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 автоматически отобразятся все файлы и папки, хранящиеся в каталоге, из которого он запущен. Создайте новый файл документа, нажав New, а затем «Python 3» в правом верхнем углу панели инструментов Notebook Dashboard.

Это откроет новый документ. Например, чтобы первая ячейка принимала Markdown, кликните Cell > Cell Type > Markdown в верхней панели навигации. Теперь можно делать записи, используя Markdown, и даже включать уравнения, написанные в LaTeX, помещая их между символами $$. Например, в ячейку с поддержкой Markdown введите следующее:

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

Чтобы превратить Markdown в форматированный текст, нажмите сочетание клавиш Ctrl + Enter.

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

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

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

Чтобы запустить код, нажмите Ctrl + Enter. На экране появится результат.

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

Заключение

Теперь вы можете писать воспроизводимый код Python и создавать заметки в Markdown с помощью Jupyter Notebook. Быстрый обзор Jupyter Notebook можно получить прямо из интерфейса, для этого выберите Help > User Interface Tour в верхнем меню навигации.

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

Читайте также:

Tags: , , , , , ,