Перейти к содержанию

Обзор развертывания Jupyter Notebook на сервере

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

Для успешного развертывания приложения необходимо наличие сервера с операционной системой Ubuntu. Требуется доступ к серверу с правами суперпользователя (root) для выполнения команд установки и настройки.

Необходимые системные компоненты и пакеты: - python3 - python3-pip - jupyter - python3-virtualenv - Docker (для развертывания прокси-сервера и получения сертификатов)

Структура файлов и каталогов

Приложение и его конфигурация размещаются в следующих директориях:

  • /opt/data — основная директория для данных приложения, принадлежит пользователю jupyter.
  • /opt/data/jupyter — директория виртуального окружения Python.
  • /root/.jupyter — директория с конфигурационными файлами Jupyter Notebook.
  • /root/nginx — директория для конфигурации Docker Compose прокси-сервера.
  • /data/nginx/nginx-certbot.env — файл переменных окружения для настройки прокси.
  • /data/nginx/user_conf.d — директория для пользовательских конфигураций Nginx.
  • /etc/letsencrypt — точка монтирования для хранения SSL-сертификатов.

Процесс установки приложения

Установка выполняется в несколько этапов: создание системного пользователя, настройка виртуального окружения и установка зависимостей.

  1. Создается системная группа jupyter с идентификатором 2841.
  2. Создается системный пользователь jupyter с идентификатором 2841, который добавляется в группу jupyter.
  3. Устанавливаются пакеты через менеджер пакетов apt: python3, python3-pip, jupyter, python3-virtualenv.
  4. Создается виртуальное окружение в директории /opt/data/jupyter с использованием интерпретатора python3.
  5. Внутри виртуального окружения устанавливаются следующие пакеты через pip:
  6. notebook
  7. voila
  8. virtualenv
  9. jupyter-server
  10. Генерируется конфигурационный файл Jupyter Notebook командой /opt/data/jupyter/bin/jupyter notebook --generate-config -y.
  11. Настраивается параметр c.ServerApp.allow_origin в файле /root/.jupyter/jupyter_notebook_config.py со значением *.
  12. Генерируется пароль для доступа к интерфейсу Jupyter Notebook.

Контейнеры Docker и их запуск

Для обеспечения работы прокси-сервера и получения SSL-сертификатов используется Docker Compose.

Конфигурация контейнеров описана в файле /root/nginx/compose.yml.

Используемый образ контейнера: jonasal/nginx-certbot:latest.

Параметры запуска контейнера nginx: - Режим перезапуска: unless-stopped. - Режим сети: host. - Переменная окружения CERTBOT_EMAIL установлена в значение hkadm@hostkey.com. - Файл переменных окружения: /data/nginx/nginx-certbot.env.

Монтируемые тома: - nginx_secrets (внешний том) монтируется в /etc/letsencrypt. - /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d. - /home монтируется в /home.

Запуск контейнеров выполняется командой:

docker compose up -d
Команда выполняется из директории /root/nginx.

Настройки прав

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

  • Директория /opt/data имеет права 0777, владелец jupyter, группа jupyter.
  • Директория /opt/data/jupyter имеет права 0755, владелец jupyter, группа jupyter.
  • Директория /root/nginx имеет права 0644, владелец root, группа root.
  • Файл /root/nginx/compose.yml имеет права 0644, владелец root, группа root.

Запуск, остановка и обновление

Управление сервисом Jupyter Notebook осуществляется через системный демон systemd.

Файл сервиса расположен по пути: /usr/lib/systemd/system/jupyter-notebook.service.

Параметры сервиса: - Тип: simple. - Рабочая директория: /opt/data. - Команда запуска: /opt/data/jupyter/bin/jupyter-notebook --config=/root/.jupyter/jupyter_server_config.json --allow-root --ip=0.0.0.0 --no-browser --notebook-dir=/opt/data/jupyter/share/jupyter. - Пользователь запуска: root. - Группа запуска: root. - Политика перезапуска: always с интервалом 10 секунд.

Команды управления сервисом: - Запуск и включение в автозагрузку:

systemctl daemon-reload
systemctl start jupyter-notebook
systemctl enable jupyter-notebook
- Остановка сервиса:
systemctl stop jupyter-notebook
- Перезапуск сервиса:
systemctl restart jupyter-notebook

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×