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

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

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

Для развертывания требуется серверная среда на базе Linux со следующими характеристиками:

  • Операционная система: Ubuntu (совместимая с менеджером пакетов apt).

  • Привилегии: Для установки и управления службами требуются права root или привилегии sudo.

  • Домен: Сервер должен быть связан с зоной hostkey.in.

  • Порты:

  • Внутренний порт приложения: 8888

  • Внешний порт HTTPS: 443

FQDN финальной панели

Приложение доступно по следующему формату полностью квалифицированного доменного имени (FQDN):

  • notebook<Server ID>.hostkey.in:443

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

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

  • /opt/data: Корневой каталог для данных Jupyter и виртуальной среды.

  • /opt/data/jupyter: Расположение виртуальной среды Python.

  • /root/.jupyter: Расположение файлов конфигурации Jupyter.

  • /root/nginx: Каталог, содержащий конфигурацию Docker Compose для прокси-сервера.

  • /usr/lib/systemd/system/jupyter-notebook.service: Файл единицы службы systemd.

  • /home: Подключенный том для домашних каталогов пользователей внутри контейнера прокси.

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

Приложение Jupyter Notebook устанавливается следующим образом:

  1. Создается выделенный системный пользователь и группа с именем jupyter (UID/GID: 2841).

  2. Устанавливаются необходимые системные пакеты через apt:

  3. python3

  4. python3-pip

  5. jupyter

  6. python3-virtualenv

  7. В каталоге /opt/data/jupyter создается виртуальная среда Python.

  8. Внутри виртуальной среды устанавливаются следующие пакеты Python:

  9. notebook

  10. voila

  11. virtualenv

  12. jupyter-server

  13. Генерируется и модифицируется конфигурация Jupyter для разрешения межсайтовых запросов (c.ServerApp.allow_origin = '*').

  14. Генерируется пароль для интерфейса Jupyter Notebook.

  15. Приложение регистрируется как служба systemd с именем jupyter-notebook.

Контейнеры Docker и их развертывание

Обратный прокси-сервер и слой завершения SSL развертываются с использованием Docker Compose. Развертывание включает:

  • Образ: jonasal/nginx-certbot:latest

  • Политика перезапуска: unless-stopped

  • Режим сети: host

  • Томы:

  • nginx_secrets: Внешний том, отображенный в /etc/letsencrypt для SSL-сертификатов.

  • /data/nginx/user_conf.d: Отображен в /etc/nginx/user_conf.d для пользовательских конфигураций Nginx.

  • /home: Отображен в /home внутри контейнера.

  • Переменные окружения:

  • CERTBOT_EMAIL: Установлено значение hkadm@hostkey.com.

  • Файл конфигурации: Файл Docker Compose расположен по адресу /root/nginx/compose.yml.

Прокси-серверы

Приложение обслуживается контейнером Nginx, работающим с Certbot для управления SSL:

  • Имя службы: nginx

  • Функция: Обрабатывает HTTPS-трафик на порту 443 и пересылает запросы во внутренний экземпляр Jupyter.

  • SSL: Управляется автоматически через Certbot.

  • Пользовательские домены: Настроены для обслуживания зоны hostkey.in с конкретным префиксом.

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

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

  • /opt/data: Владелец jupyter:jupyter, режим 0777.

  • /opt/data/jupyter: Владелец jupyter:jupyter, режим 0755.

  • /root/nginx: Владелец root:root, режим 0644.

  • /root/nginx/compose.yml: Владелец root:root, режим 0644.

  • Служба Jupyter работает от имени пользователя и группы root в соответствии с определением службы systemd.

Расположение файлов конфигурации и данных

Ключевые файлы конфигурации и данных находятся по следующим адресам:

  • Конфигурация Jupyter: /root/.jupyter/jupyter_server_config.json и /root/.jupyter/jupyter_notebook_config.py.

  • Docker Compose: /root/nginx/compose.yml.

  • Окружение Nginx: /data/nginx/nginx-certbot.env.

  • Каталог данных: /opt/data/jupyter/share/jupyter (рабочий каталог Notebook).

  • Файл PID: /run/jupyterlab.pid.

Доступные порты для подключения

Для работы приложения используются следующие порты:

  • Порт 8888: Внутренний порт, используемый службой Jupyter Notebook.

  • Порт 443: Внешний порт, используемый для безопасного доступа HTTPS через прокси Nginx.

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

Служба Jupyter Notebook управляется через systemd. Используйте следующие команды для управления службой:

  • Запуск службы:

    systemctl start jupyter-notebook
    

  • Остановка службы:

    systemctl stop jupyter-notebook
    

  • Перезапуск службы:

    systemctl restart jupyter-notebook
    

  • Включение службы при загрузке:

    systemctl enable jupyter-notebook
    

  • Перезагрузка демона systemd:

    systemctl daemon-reload
    

Для управления контейнером прокси-сервера Docker перейдите в каталог конфигурации и используйте команды Docker Compose:

cd /root/nginx
docker compose up -d

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