目的
社内で簡単なデータ分析ハンズオン(複数人向け)をやる必要があり、そのための環境構築を目的に実施。
最初はあまり考えずに、Jupyter Notebook環境をEC2(Linux)上に構築し、複数人にログインしてもらってやろうとしたが、5人目からログインできなくなり、EC2サイズを変えてもダメだったので、断念(ちゃんと調べてません)。
なので、JupyterHubを構築する方向に変更。
環境条件
- JupyerHubサーバ
- EC2:t2.micro(構築時はこちらで進めて、利用時はスケールアップ。)
- OS:Red Hat Enterprise Linux 8 (HVM), SSD Volume Type
- Disk:汎用SSD(GP2) 30GB
セキュリティグループの設定等はいい感じに。
構築手順
ec2-userでログイン
# rootユーザにスイッチ
sudo su -
# ソフトウェアの更新
dnf update -y
# wgetのインストール
dnf install -y wget
Python環境構築はminicondaで実施
# minicondaのインストールスクリプトのダウンロード
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# スクリプトを実行するための権限変更
chmod 775 Miniconda3-latest-Linux-x86_64.sh
# インストールスクリプトの実行
bash Miniconda3-latest-Linux-x86_64.sh
いくつか質問があるので、以下で回答。
Enter
yes
/opt/miniconda3
yes
# 環境変数の読み込み
source ~/.bashrc
# 仮想環境の構築
conda create -n py39 python=3.9 anaconda
質問には以下で回答。
y
# py39環境のアクティベート
conda activate py39
# Jupyeter関連の必要なソフトウェアのインストール
conda install -c conda-forge jupyterhub
質問には以下で回答。
y
conda install -c conda-forge notebook
質問には以下で回答。
y
conda install -c conda-forge sudospawner
質問には以下で回答。
y
# jupyterhub用ディレクトリ構築
mkdir /opt/jupyterhub
cd /opt/jupyterhub
# JupyterHub設定ファイルの生成
jupyterhub --generate-config
# 管理者アカウントの作成
useradd jupyter
passwd jupyter
# 管理者アカウント用の作業
su - jupyter
mkdir notebooks
touch notebooks/jupyter
# 利用者アカウントの作成
useradd test
passwd test
# 利用者アカウント用の作業
su - test
mkdir notebooks
touch notebooks/test
# JupyterHub設定ファイルへの追記
vi /opt/jupyterhub/jupyterhub_config.py
追記内容は以下の通り。
jupyterhub_config.py
# 管理者アカウントの登録
c.Authenticator.admin_users = {'jupyter'}
# 利用者アカウントの登録(増やす場合にはここに追記)
c.Authenticator.allowed_users = {'test'}
# 以下パラメータはうまく説明できません笑
c.JupyterHub.confirm_no_ssl = True
c.JupyterHub.spawner_class = 'sudospawner.SudoSpawner'
c.Spawner.notebook_dir = '~/notebooks'
# サービス登録のためのファイル作成
vi /lib/systemd/system/jupyterhub.service
jupyterhub.service
[Unit]
Description=Jupyterhub
[Service]
User=root
Environment="PATH=/opt/miniconda3/envs/py39/bin:/opt/miniconda3/condabin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
ExecStart=/opt/miniconda3/envs/py39/bin/jupyterhub -f /opt/jupyterhub/jupyterhub_config.py
WorkingDirectory=/opt/jupyterhub
[Install]
WantedBy=multi-user.target
# サービスのアクティベート
systemctl enable jupyterhub
# jupyterhubの起動
systemctl start jupyterhub
接続テスト
http://:8000にブラウザからアクセスし、
jupyterとtestのアカウント/パスワードでログインできることを確認。
OS上でユーザを追加し、設定ファイルにも追記することで利用者を量産。