Tutorial

Настройка Jupyter Notebook с помощью Python 3 в Ubuntu 20.04 и подключение через туннель SSH

Published on June 11, 2020
Русский
Настройка Jupyter Notebook с помощью Python 3 в Ubuntu 20.04 и подключение через туннель SSH

Введение

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

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

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

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

Для прохождения этого обучающего модуля вам потребуется новый экземпляр сервера Ubuntu 20.04 с базовым брандмауэром и пользователем с привилегиями sudo и без привилегий root. Чтобы узнать, как настроить такой сервер, воспользуйтесь нашим руководством по начальной настройке сервера.

Шаг 1 — Настройка Python

Для начала процесса настройки мы установим зависимости, которые нам потребуется для нашей среды программирования Python, из репозиториев Ubuntu. В Ubuntu 20.04 предустанавлен Python 3. Немного позднее мы используем диспетчер пакетов Python pip для установки дополнительных компонентов.

Сначала нам нужно обновить локальный индекс пакетов apt, а затем загрузить и установить пакеты:

  1. sudo apt update

Затем установите pip и заголовочные файлы Python, которые используются определенными зависимостями Jupyter:

  1. sudo apt install python3-pip python3-dev

Теперь мы можем перейти к настройке виртуальной среды Python, куда мы будем устанавливать Jupyter.

Шаг 2 — Создание виртуальной среды Python для Jupyter

Теперь, когда у нас есть Python 3, а заголовочные файлы и pip готовы к запуску, мы можем создать виртуальную среду Python для управления нашими проектами. Мы установим Jupyter в эту виртуальную среду.

Для этого нам потребуется доступ к virtualenv, который мы можем установить с помощью pip.

Обновите pip и установите пакет с помощью следующей команды:

  1. sudo -H pip3 install --upgrade pip
  2. sudo -H pip3 install virtualenv

Флаг -H гарантирует, что политика безопасности устанавливает переменную среды home в домашнюю директорию пользователя.

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

  1. mkdir ~/my_project_dir
  2. cd ~/my_project_dir

В директории проекта мы создадим виртуальную среду Python. Для целей данного руководства мы назовем ее my_project_env, но вы должны использовать название, соответствующее вашему проекту.

  1. virtualenv my_project_env

Эта команда создаст каталог my_project_env в каталоге my_project_dir. В этот каталог будут установлены локальная версия Python и локальная версия pip. Мы можем использовать ее для установки и настройки изолированной среды Python для Jupyter.

Перед созданием Jupyter нам потребуется активировать виртуальную среду. Для этого можно использовать следующую команду:

  1. source my_project_env/bin/activate

Командная строка изменится, показывая, что теперь вы работаете в виртуальной среде Python. Командная строка теперь будет выглядеть примерно так: (my_project_env)user@host:~/my_project_dir$.

Вы готовы к выполнению установки Jupyter в виртуальную среду.

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

При запущенной виртуальной среде установите Jupyter с помощью локального экземпляра pip.

Примечание: если виртуальная среда активна (когда перед командной строкой стоит (my_project_env)), необходимо использовать pip вместо pip3, даже если вы используете Python 3. Копия инструмента в виртуальной среде всегда имеет имя pip вне зависимости от версии Python.

  1. pip install jupyter

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

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

Теперь у вас есть все, что нужно для запуска Jupyter Notebook! Для его запуска воспользуйтесь следующей командой:

  1. jupyter notebook

Журнал активности Jupyter Notebook будет выведен в командной строке. При запуске Jupyter Notebook будет использоваться порт с конкретным номером. Первый Notebook, который вы будете запускать, обычно использует порт 8888. Чтобы проверить, какой номер порта использует Jupyter, см. вывод команды, которую вы использовали для запуска:

Output
[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret [I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir [I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at: [I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72 [I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser. [C 21:23:21.361 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

Если вы запускаете Jupyter Notebook на локальном компьютере (а не на сервере), вы можете перейти к отображаемому URL-адресу для подключения к Jupyter Notebook. Если вы запускаете Jupyter Notebook на сервере, вам нужно будет подключаться к серверу с помощью туннеля SSH, как указано в следующем разделе.

В данный момент вы можете сохранить соединение SSH открытым и поддерживать Jupyter Notebook в рабочем состоянии, или закрыть приложение и снова запустить его после настройки туннеля SSH. Давайте завершим процесс Jupyter Notebook. Мы запустим его снова после настройки туннеля SSH. Чтобы остановить процесс Jupyter Notebook, нажмите CTRL+C, введите Y, а затем ENTER для подтверждения. В результате будет отображен следующий вывод:

Output
[C 21:28:28.512 NotebookApp] Shutdown confirmed [I 21:28:28.512 NotebookApp] Shutting down 0 kernels

Теперь мы настроим туннель SSH, чтобы получить доступ к Notebook.

Шаг 5 — Подключение к серверу с помощью туннеля SSH

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

В следующих двух подразделах описано, как создать туннель SSH в (1) Mac, Linux или (2) Windows. См. подраздел для вашего локального компьютера.

Туннель SSH в Mac или Linux

Если вы используете локальный компьютер под управлением Mac или Linux, процедура создания туннеля SSH будет аналогична процедуре использования SSH для входа на удаленный сервер. Единственное отличие будет заключаться в наличии дополнительных параметров команды ssh. В этом подразделе будут показаны дополнительные параметры, необходимые команде ssh для успешного создания туннеля.

Создание туннелей SSH может быть осуществлено с помощью следующей команды SSH, которую необходимо ввести в новом окне локальной командной строки:

  1. ssh -L 8888:localhost:8888 your_server_username@your_server_ip

Команда ssh открывает соединение SSH, но -L указывает, что данный порт на локальном хосте (клиент) будет отправляться на заданный хост и порт на удаленном конце (сервер). Это значит, что бы ни было запущено на втором порту (например, 8888) на сервере, оно появится на первом порту (например, 8888) на локальном компьютере.

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

server_username — это ваше имя пользователя (например, sammy) на сервере, который вы создали, а your_server_ip — это IP-адрес вашего сервера.

Например, для имени пользователя sammy и адреса сервера 203.0.113.0, команда будет выглядеть следующим образом:

  1. ssh -L 8888:localhost:8888 sammy@203.0.113.0

Если после запуска команды ssh -L не появится ошибок, вы можете перейти в среду программирования и запустить Jupyter Notebook:

  1. jupyter notebook

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

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

Если вы используете Windows, вы можете создать туннель SSH с помощью Putty.

Введите URL-адрес сервера или IP-адрес в качестве имени хоста, как показано ниже:

Задайте имя хоста для туннеля SSH

Далее нажмите SSH в нижней части левой панели, чтобы расширить меню, а затем нажмите Tunnels (Туннели). Введите локальный номер порта, который вы хотите использовать для доступа к Jupyter на локальном компьютере. Выберите 8000 или выше, чтобы избежать использования портов, которые уже используются другими службами, и задайте назначение localhost:8888, где :8888 — номер порта, на котором запущен Jupyter Notebook.

Затем нажмите кнопку Add (Добавить), после чего порты должны появиться в списке Forwarded ports (Перенаправляемые порты):

Список перенаправляемых портов

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

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

В этом разделе описываются основы использования Jupyter Notebook. Если у вас нет запущенного Jupyter Notebook, запустите его с помощью команды jupyter notebook.

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

Чтобы создать новый файл Notebook, выберите New (Новый) > Python 3 в выпадающем меню в верхнем правом углу:

Создание нового блокнота Python 3

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

# First Equation

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

where $x = 2$

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

результат разметки

Вы можете использовать ячейки разметки для заметок и документирования программного кода. Теперь реализуем это уравнение и распечатаем результат. Нажмите на верхнюю ячейку и нажмите клавиши ALT и ENTER одновременно для добавления ячейки под ней. Введите в добавленную ячейку следующий код.

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

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

результаты первого уравнения

Теперь вы можете импортировать модули и использовать Notebook, как и любую другую среду разработки Python!

Заключение

Поздравляем! Теперь вы можете писать воспроизводимый код Python и записи в Markdown с помощью Jupyter Notebook. Для быстрого ознакомления с интерфейсом Jupyter Notebook выберите Help (Справка) > User Interface Tour (Знакомство с пользовательским интерфейсом) в верхнем меню навигации.

Здесь вы можете запустить проект анализа данных и визуализации, ознакомившись со статьей Анализ данных и визуализация с pandas и Jupyter Notebook в Python 3.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.