Установка 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 не открывается в браузере, запускаем другую консоль на компьютере с приложением и выполняем команду:
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 — мы должны увидеть страницу авторизации.