#目的
社内で簡単なデータ分析ハンズオン(複数人向け)をやる必要があり、そのための環境構築を目的に実施。
最初はあまり考えずに、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上でユーザを追加し、設定ファイルにも追記することで利用者を量産。