Установка Jupyter Notebook на CentOS

Обновлено и опубликовано Опубликовано:

Jupyter Notebook — это приложение для создания книг и документов из вычислительного материала (в формате .ipynb). Его установка и запуск должны выполняться от пользователя с правами, отличными от root. В данной инструкции мы будем выполнять часть операций от последнего, остальное — от пользователя jupyter. Руководство подходит для Linux CentOS версий 7 и 8.

Перед установкой можно ознакомиться с приложением онлайн на официальном сайте.

Установка и запуск

От пользователя root устанавливаем необходимые компоненты:

# yum install gcc python3-devel python3-pip kernel-headers

* где:

  • gcc — набор компиляторов для разных языков программирования.
  • python3-devel — средства для разработки Python. Библиотеки и инструменты для создания своих модулей и возможности встраивания Python в другие приложения.
  • python3-pip — инструмент для установки пакетов python.
  • kernel-headers — заголовочные файлы ядра. Необходимы для сборки модулей последнего.

Создаем пользователя, от которого будем запускать Jupyter Notebook:

# useradd jupyter -m

* наш пользователь будет с именем jupyter. Также мы сразу создаем для него домашний каталог.

Создаем правило в брандмауэре для подключения к Jupyter Notebook по сети:

# firewall-cmd --permanent --add-port=8080/tcp

* предполагается, что наш сервис будет запускаться на порту 8080.

Применяем настройки firewalld:

# firewall-cmd --reload

Заходим в систему под созданным пользователем jupyter:

# su - jupyter

Выполним установку питон-приложения jupyter:

$ pip3 install --user jupyter

Проверить корректность установки можно командой:

$ jupyter --version

Мы должны увидеть версию установленного приложения, например:

jupyter core     : 4.7.0
jupyter-notebook : 6.1.5
qtconsole        : 4.7.7
ipython          : 7.16.1
ipykernel        : 5.3.4
jupyter client   : 6.1.7
jupyter lab      : not installed
nbconvert        : 6.0.7
ipywidgets       : 7.5.1
nbformat         : 5.0.8
traitlets        : 4.3.3

* обратите внимание, что в списке есть jupyter lab, который не установлен. При желании, его устанавливаем командой: pip3 install --user jupyterlab.

Создаем конфигурационный файл для Jupyter Notebook:

jupyter notebook --generate-config

Он должен появиться в домашней директории пользователя jupyter:

Writing default config to: /home/jupyter/.jupyter/jupyter_notebook_config.py

Задаем пароль для входа в веб-панель:

$ jupyter notebook password

Дважды вводим пароль — система создаст для него хэш и сохранить в домашней папке пользователя:

Enter password: 
Verify password: 
[NotebookPasswordApp] Wrote hashed password to /home/jupyter/.jupyter/jupyter_notebook_config.json

Запускаем приложение:

$ jupyter notebook --no-browser --ip=0.0.0.0 --port=8080

* в данном примере мы запускаем jupyter notebook на порту 8080 и на всех сетевых интерфейсах.

Открываем браузер и переходим по пути http://<IP-адрес компьютера с jupyter>:8080 — должна открывать страница с формой ввода пароля, который мы создавали ранее — вводим его:

Страница ввода пароля для входа в Jupyter Notebook

Откроется страница Jupyter Notebook:

Стартовая страница Jupyter Notebook

Если jupyter notebook не открывается в браузере, запускаем другую консоль на компьютере с приложением и выполняем команду:

ss -tunlp | grep 8080

Мы должны увидеть что-то на подобие:

tcp    LISTEN   0        128               0.0.0.0:8080           0.0.0.0:*      users:(("jupyter-noteboo",pid=8510,fd=5))

В противном случае проверяем, что у нас запустилось приложение. Но если команда ss -tunlp | grep 8080 показала наличие сервиса, который слушает на порту 8080, еще раз проверяем настройки брандмауэра:

firewall-cmd --list-all

Мы должны увидеть правило:

  ...
  ports: 8080/tcp
  ...

После окончания работы можно выходить из-под пользователя jupyter:

exit

Запуск в качестве сервиса

Мы установили и запустили наше приложение из консоли. Однако, если мы хотим, чтобы Jupyter Notebook запускался как сервис автоматически, создаем юнит в systemd:

vi /etc/systemd/system/jupyter.service

[Unit]
Description=Jupyter Notebook Service
After=network.target

[Service]
User=jupyter
Group=jupyter
Type=simple
WorkingDirectory=/home/jupyter
ExecStart=/home/jupyter/.local/bin/jupyter notebook --no-browser --ip=0.0.0.0 --port=8080
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Перечитываем конфигурацию systemd:

systemctl daemon-reload

Разрешаем автозапуск:

systemctl enable jupyter

Отключаем SELinux:

setenforce 0

sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

Стартуем сервис:

systemctl start jupyter

Проверяем работоспособность:

systemctl status jupyter

Опять открываем браузер и переходим на страницу http://<IP-адрес компьютера с jupyter>:8080 — мы должны увидеть страницу авторизации.

# CentOS # DevOps
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет