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

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

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

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

Необходимые сетевые требования: - Открытый доступ к порту, на котором будет работать веб-интерфейс Jupyter Lab (по умолчанию 8888, если не изменено в конфигурации). - Доступ к портам 80 и 443 для работы прокси-сервера Nginx и получения SSL-сертификатов через Certbot.

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

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

  • /opt/data — основная директория для хранения данных пользователя и виртуального окружения.
  • /opt/data/jupyter — директория виртуального окружения Python для Jupyter Lab.
  • /root/.jupyter — директория конфигурационных файлов Jupyter.
  • /root/nginx — директория для конфигурации Docker Compose прокси-сервера.
  • /data/nginx — внешняя директория для хранения конфигураций Nginx и переменных окружения (указана в файле compose.yml).
  • /home — директория домашних каталогов пользователей, монтируемая в контейнер Nginx.

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

Установка выполняется в два этапа: настройка окружения для Jupyter Lab и развертывание прокси-сервера в контейнере Docker.

Установка компонентов Jupyter Lab

  1. Создается системная группа jupyter с идентификатором 2841.
  2. Создается системный пользователь jupyter с идентификатором 2841, принадлежащий к группе jupyter.
  3. Устанавливаются пакеты системы: python3, python3-pip, jupyter, python3-virtualenv.
  4. Создается виртуальное окружение в директории /opt/data/jupyter с использованием интерпретатора Python 3.
  5. Внутри виртуального окружения устанавливаются пакеты: jupyterlab, jupyter-core, voila, jupyter-server.
  6. Генерируется конфигурационный файл Jupyter Lab.
  7. В конфигурационном файле /root/.jupyter/jupyter_lab_config.py настраивается параметр c.ServerApp.allow_origin со значением *.
  8. Генерируется пароль для доступа к веб-интерфейсу.

Развертывание прокси-сервера

  1. Устанавливается Docker.
  2. Создается директория /root/nginx.
  3. Генерируется файл compose.yml в директории /root/nginx на основе шаблона.
  4. Запускается контейнер Nginx с Certbot через команду docker compose up -d в директории /root/nginx.

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

Прокси-сервер развертывается с использованием Docker Compose. Конфигурация описана в файле /root/nginx/compose.yml.

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

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

Монтируемые тома: - nginx_secrets (внешний том) монтируется в /etc/letsencrypt для хранения SSL-сертификатов. - /data/nginx/user_conf.d монтируется в /etc/nginx/user_conf.d для пользовательских конфигураций Nginx. - /home монтируется в /home внутри контейнера.

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

В качестве прокси-сервера используется контейнер Nginx с поддержкой автоматического получения и обновления SSL-сертификатов через Certbot.

Конфигурация прокси-сервера включает: - Автоматическое управление сертификатами Let's Encrypt. - Поддержку пользовательских конфигураций через монтирование директории /data/nginx/user_conf.d. - Доступ к домашним директориям пользователей через монтирование /home.

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

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

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

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

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

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

Параметры сервиса: - Тип сервиса: simple. - Рабочая директория: /opt/data. - Команда запуска: /opt/data/jupyter/bin/jupyter-lab --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 start jupyterlab - Остановка: systemctl stop jupyterlab - Перезапуск: systemctl restart jupyterlab - Проверка статуса: systemctl status jupyterlab

Для управления контейнером прокси-сервера используются команды Docker Compose в директории /root/nginx: - Запуск: docker compose up -d - Остановка: docker compose down - Перезапуск: docker compose restart

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