Table of Contents
Введение
Веб-приложение с открытым исходным кодом, Jupyter Notebook, позволяет создавать и обмениваться интерактивными кодом, визуализациями и многим другим. Этот инструмент можно использовать с несколькими языками программирования, включая Python, Julia, R, Haskell и Ruby. Он часто используется для работы с данными, статистическими моделями и машинным обучением.
Из этого обучающего руководства вы узнаете, как выполнить настройку Jupyter Notebook для запуска на сервере с Ubuntu 18.04, а также научитесь подключаться к блокноту и использовать его. Блокноты Jupyter (или просто блокноты) — это документы, генерируемые приложением Jupyter Notebook, которые содержат компьютерный код и форматированные текстовые элементы (параграф, цитаты, изображения, ссылки и т.д.), которые помогают отображать и делиться воспроизводимые разработки.
К концу этого руководства вы сможете запускать код Python 3 с помощью Jupyter Notebook, запущенном на удаленном сервере.
Предварительные требования
Для прохождения этого обучающего модуля вам потребуется новый экземпляр сервера Ubuntu 18.04 с базовым брандмауэром и пользователем с привилегиями sudo и без привилегий root. Чтобы узнать, как настроить такой сервер, воспользуйтесь нашим руководством по начальной настройке сервера.
Шаг 1 — Настройка Python
Для начала процесса настройки мы установим зависимости, которые нам потребуется для нашей среды программирования Python, из репозиториев Ubuntu. В Ubuntu 18.04 уже предустановлена версия Python 3.6. Для установки дополнительных компонентов мы немного позднее используем диспетчер пакетов Python pip.
Сначала нам нужно обновить локальный индекс пакетов apt, а затем загрузить и установить пакеты:
sudo apt update
Затем установите pip и заголовочные файлы Python, которые используются определенными зависимостями Jupyter:
sudo apt install python3-pip python3-dev
Теперь мы можем перейти к настройке виртуальной среды Python, куда мы будем устанавливать Jupyter.
Шаг 2 — Создание виртуальной среды Python для Jupyter
Теперь, когда у нас есть Python 3, а заголовочные файлы и pip готовы к запуску, мы можем создать виртуальную среду Python для управления нашими проектами. Мы установим Jupyter в эту виртуальную среду.
Для этого нам потребуется доступ к virtualenv, который мы можем установить с помощью pip.
Обновите pip и установите пакет с помощью следующей команды:
sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv
Флаг -H гарантирует, что политика безопасности устанавливает переменную среды home в домашнюю директорию пользователя.
После установки virtualenv мы можем начать формирование нашей среды. Создайте каталог для файлов нашего проекта и перейдите в этот каталог. Мы назовем ее my_project_dir, но вы должны использовать имя, которое понятно вам и согласуется с тем, над чем вы работаете.
mkdir ~/<^>my_project_dir<^>
cd ~/<^>my_project_dir<^>
В директории проекта мы создадим виртуальную среду Python. Для целей данного руководства мы назовем ее my_project_env, но вы должны использовать название, соответствующее вашему проекту.
virtualenv <^>my_project_env<^>
Эта команда создаст каталог <^>my_project_env<^> в каталоге <^>my_project_dir<^>. В этот каталог будут установлены локальная версия Python и локальная версия pip. Мы можем использовать ее для установки и настройки изолированной среды Python для Jupyter.
Перед созданием Jupyter нам потребуется активировать виртуальную среду. Для этого можно использовать следующую команду:
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.
pip install jupyter
В данный момент вы успешно установили все программное обеспечение, необходимое для запуска Jupyter. Теперь мы можем запустить сервер Notebook.
Шаг 4 — Запуск Jupyter Notebook
Теперь у вас есть все, что нужно для запуска Jupyter Notebook! Для его запуска воспользуйтесь следующей командой:
jupyter notebook
Журнал активности Jupyter Notebook будет выведен в командной строке. При запуске Jupyter Notebook будет использоваться порт с конкретным номером. Первый Notebook, который вы будете запускать, обычно использует порт <^>8888<^>. Чтобы проверить, какой номер порта использует Jupyter, см. вывод команды, которую вы использовали для запуска:
[secondary_label 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 для подтверждения. В результате будет отображен следующий вывод:
[secondary_label 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, которую необходимо ввести в новом окне локальной командной строки:
[environment local]
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<^>, команда будет выглядеть следующим образом:
[environment local]
ssh -L <^>8888<^>:localhost:<^>8888<^> <^>sammy<^>@<^>203.0.113.0<^>
Если после запуска команды ssh -L не появится ошибок, вы можете перейти в среду программирования и запустить Jupyter Notebook:
jupyter notebook
Вы получите вывод с URL-адресом. В веб-браузере на локальном компьютере откройте веб-интерфейс Jupyter Notebook с URL-адресом, который начинается с http://localhost:8888. Убедитесь, что номер маркера включен, либо введите строку с номером маркера при запросе в http://localhost:8888.
Создание туннелей SSH с использованием Windows и PuTTY
Если вы используете Windows, вы можете создать туннель SSH с помощью Putty.
Введите URL-адрес сервера или IP-адрес в качестве имени хоста, как показано ниже:
Далее нажмите 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 в выпадающем меню в верхнем правом углу:
В результате откроется 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.
Если вы хотите узнать больше, ознакомьтесь с нашей серией статей Визуализация временных рядов и прогнозирование.