Обзор развертывания 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 устанавливается следующим образом:
-
Создается выделенный системный пользователь и группа с именем
jupyter(UID/GID:2841). -
Устанавливаются необходимые системные пакеты через
apt: -
python3 -
python3-pip -
jupyter -
python3-virtualenv -
В каталоге
/opt/data/jupyterсоздается виртуальная среда Python. -
Внутри виртуальной среды устанавливаются следующие пакеты Python:
-
notebook -
voila -
virtualenv -
jupyter-server -
Генерируется и модифицируется конфигурация Jupyter для разрешения межсайтовых запросов (
c.ServerApp.allow_origin = '*'). -
Генерируется пароль для интерфейса Jupyter Notebook.
-
Приложение регистрируется как служба 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. Используйте следующие команды для управления службой:
-
Запуск службы:
-
Остановка службы:
-
Перезапуск службы:
-
Включение службы при загрузке:
-
Перезагрузка демона systemd:
Для управления контейнером прокси-сервера Docker перейдите в каталог конфигурации и используйте команды Docker Compose: