JupyterHubは、マルチユーザーで、シングルユーザーJupyter notebook サーバーの複数インスタンスを生成、管理、およびプロキシします。AWS EC2環境で Pyenv + Anacondaを使用して環境を構築した時のメモです。
AWS EC2環境構築
- AWSコンソールにログインし、EC2 Dashboardを選択。[Launch Instance] をクリックします。
- Amazon Linux AMI 2017.03.1 (HVM), SSD Volume Type を選択、[Select]クリック
- t2.micro (Free tier eligible) を選択, [Next: Configure Instance Details]クリック
- [Next: Add Storage]クリック
- [Next: Add Tags]クリック
- [Next: Configure Security Group]クリック
- Create a new security group を選択, [Security group name:] を適当な名前に変更。Add Ruleから SSH, Custom TCP Rule:Port 8000を追加。[Review and Launch]クリック
- [Launch]クリック。Create a new key pairを選択し, [Key pair name] に適当な名前を入れる。[Download Key Pair]をクリックすると pemファイルがダウンロードされるので、ファイル名及びパーミッション(600)を変更する。[Launch Instances]クリック
- [View Instances]クリック
- “Status Check”が “2/2 checks passed”になるまで数分待つ。ステータスが変わったら AWS EC2 の構築は完了です。右下の “Public DNS (IPv4)”は、SSH loginで必要になるのでメモしておく。
Pyenv setup
- ssh -i JUPYTERHUB-key-pair.pem ec2-user@[Public DNS(IPv4)]
$ sudo yum update $ sudo su # yum install gcc gcc-c++ make git openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel # cd /opt # git clone https://github.com/yyuu/pyenv.git pyenv # echo 'export PYENV_ROOT="/opt/pyenv"' >> ~/.bashrc # echo 'if [ -d "${PYENV_ROOT}" ]; then' >> ~/.bashrc # echo ' export PATH=${PYENV_ROOT}/bin:$PATH' >> ~/.bashrc # echo ' eval "$(pyenv init -)"' >> ~/.bashrc # echo 'fi' >> ~/.bashrc # exec $SHELL -l
Anaconda install
# pyenv install anaconda3-4.4.0 # pyenv global anaconda3-4.4.0 # python --version Python 3.6.1 :: Anaconda 4.4.0 (64-bit)
JupyterHub install
# conda install -c conda-forge jupyterhub # conda install notebook
JupyterHub setup
# mkdir /etc/jupyterhub # cd /etc/jupyterhub # jupyterhub --generate-config # vi jupyterhub_config.py #c.Spawner.notebook_dir = '' c.Spawner.notebook_dir = '~/notebook'
Startup setup
# echo jupyterhub -f /etc/jupyterhub/jupyterhub_config.py > jupyterhub.sh # echo su -l root /etc/jupyterhub/jupyterhub.sh \& >>/etc/rc.local
JupyterHub user setup
# adducer testuser # passwd testuser Changing password for user testuser. New password: Retype new password: passwd: all authentication tokens updated successfully. # reboot * ssh -i JUPYTERHUB-key-pair.pem ec2-user@[Public DNS(IPv4)] $ mkdir notebook $ sudo passed ec2-user Changing password for user ec2-user. New password: Retype new password: passwd: all authentication tokens updated successfully. $ sudo su - testuser $ mkdir notebook
Loginして動作確認
- http://[Public DNS(IPv4)]:8000
- notebook画面
セットアップが完了していれば、上記の画面が表示されます。テストユーザは後で削除してください。また、ec2-userの代わりに管理用のユーザを作成して、ec2-userを削除するのが良いでしょう。証明書やドメインの設定は適宜行ってください🙇