Обзор развертывания 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-сертификатов.
Процесс установки приложения¶
Установка выполняется в несколько этапов: создание системного пользователя, настройка виртуального окружения и установка зависимостей.
- Создается системная группа
jupyterс идентификатором2841. - Создается системный пользователь
jupyterс идентификатором2841, который добавляется в группуjupyter. - Устанавливаются пакеты через менеджер пакетов
apt:python3,python3-pip,jupyter,python3-virtualenv. - Создается виртуальное окружение в директории
/opt/data/jupyterс использованием интерпретатораpython3. - Внутри виртуального окружения устанавливаются следующие пакеты через
pip: notebookvoilavirtualenvjupyter-server- Генерируется конфигурационный файл Jupyter Notebook командой
/opt/data/jupyter/bin/jupyter notebook --generate-config -y. - Настраивается параметр
c.ServerApp.allow_originв файле/root/.jupyter/jupyter_notebook_config.pyсо значением*. - Генерируется пароль для доступа к интерфейсу 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.
Запуск контейнеров выполняется командой:
Команда выполняется из директории/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 секунд.
Команды управления сервисом: - Запуск и включение в автозагрузку:
- Остановка сервиса: - Перезапуск сервиса: