Jupyter NotebookをCentOS 7 で構築する
- 目的
- 環境
- インストール
- configファイル作成&編集
- firewalld設定
- ログインパスワードの設定
- 暗号化されたパスワードをconfigに設定
- Jupyter Notebook 起動
- HTTPSアクセスを有効にするための設定
- 参考サイト
目的
最近Pythonで検証することが増えてきたため、即座に検証できる環境を構築しようと思い立ちました。 これから機械学習などのコードを検証していきたいので、足場作りにJupyter Notebookの環境を整備してみることにします。
環境
# cat /etc/centos-release CentOS Linux release 7.3.1611 (Core)
インストール
update
環境は常に最新のものを使いましょう。
$ sudo yum update
必要なものをdownload
$ curl https://repo.continuum.io/archive/Anaconda3-4.3.1-Linux-x86_64.sh -O % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 474M 100 474M 0 0 11.0M 0 0:00:42 0:00:42 --:--:-- 11.2M
$ chmod +x Anaconda3-4.3.1-Linux-x86_64.sh $ ./Anaconda3-4.3.1-Linux-x86_64.sh Welcome to Anaconda3 4.3.1 (by Continuum Analytics, Inc.) In order to continue the installation process, please review the license agreement. Please, press ENTER to continue >>> (Enterを押下) #↓ライセンス条項を承認するか?という質問が出てくるので、yesと入力 Do you approve the license terms? [yes|no] >>> yes #↓Anaconda3を以下の場所にインストールするよ!と出てくる。 #特に問題なければEnter押下 Anaconda3 will now be installed into this location: /home/h3xm9s9/anaconda3 - Press ENTER to confirm the location - Press CTRL-C to abort the installation - Or specify a different location below [/home/h3xm9s9/anaconda3] >>> (Enterを押下) installing: xxxxx ・・・(中略)・・・ Python 3.6.0 :: Continuum Analytics, Inc. creating default environment... installation finished. #Anaconda3のファイルパス?か何かを.bashrcに書き込もうとしてるみたい #特に問題なければyesにします。 Do you wish the installer to prepend the Anaconda3 install location to PATH in your /home/h3xm9s9/.bashrc ? [yes|no] [no] >>> yes Prepending PATH=/home/h3xm9s9/anaconda3/bin to PATH in /home/h3xm9s9/.bashrc A backup will be made to: /home/h3xm9s9/.bashrc-anaconda3.bak For this change to become active, you have to open a new terminal. Thank you for installing Anaconda3! Share your notebooks and packages on Anaconda Cloud! Sign up for free: https://anaconda.org [h3xm9s9 ~]$ ###noにした場合... ###$PATH設定してね!って言われます。 [no] >>> no You may wish to edit your .bashrc or prepend the Anaconda3 install location: $ export PATH=/home/h3xm9s9/anaconda3/bin:$PATH Thank you for installing Anaconda3! Share your notebooks and packages on Anaconda Cloud! Sign up for free: https://anaconda.org
インストールは無事に終了しました。
.bashrcを再読み込み
インストール段階でファイルパスの設定がされていますが、筆者の環境では.bashrcが読み込まれていなかったので 以下を実行しました。
$ source ~/.bashrc
Jupyter Notebook起動!
インストール時にファイルパスを.bashrcに書き込めていれば、起動できるはず。 前項の筆者のように、そもそもsourceされていない場合もありますが。。。 そもそもコマンドが無いと怒られる場合は、インストール時に失敗している or 「$ export PATH=/…」の部分が適用されていないので、なんとか解決してください。 ※特にシェルをbash以外にしている人は要注意です。
configファイル作成&編集
$ mkdir ~/.jupyter $ touch ~/.jupyter/jupyter_noteboook_config.py c = get_config() c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.port = 8888
firewalld設定
「セキュリティは万全?」のセの字を言われる前に設定する。
$ sudo firewall-cmd --add-port=8888/tcp --permanent $ sudo firewall-cmd --reload
ログインパスワードの設定
# iPythonを起動 $ ipython # 暗号化された文字列を生成するためにライブラリ読み込み In [1]: from notebook.auth import passwd # パスワードを入力して暗号化された文字列を生成 In [2]: passwd() Enter password: Verify password: Out[2]: 'sha1:(暗号化された文字列)' # iPythonから抜ける In [3]: Do you really want to exit ([y]/n)? y
iPython実行時に以下のエラーが
ImportError: No module named notebook.auth
おそらくjupyterのインストールがanaconda経由のためでしょう。 pipでjupyterをインストールします。
$ pip install jupyter
特にエラーが出なければ、モジュールが追加されているはずです。 もう一度暗号化文字列生成用のモジュールを読み込んでみましょう。
暗号化されたパスワードをconfigに設定
先ほど生成したパスワードを設定します。
$ vim ~/.jupyter/jupyter_notebook_config.py c.NotebookApp.password = u'sha1:(前項で生成した文字列)' #追記
Jupyter Notebook 起動
$ jupyter notebook
パスワード認証画面が出てきた!
HTTPSアクセスを有効にするための設定
あらかじめ鍵ペア作成と証明書取得は完了しておきます。 作成が完了したら、移動します。
$ mv mycert.pem ~/.jupyter/ $ mv mykey.key ~/.jupyter/
移動ができたら、configに秘密鍵と証明書のパスを追記しておきます。
$ vim ~/.jupyter/jupyter_notebook_config.py c.NotebookApp.certfile = u'${ホームディレクトリへの絶対パス}/.jupyter/mycert.pem' c.NotebookApp.keyfile = u'${ホームディレクトリへの絶対パス}/.jupyter/mykey.key'
デーモン再起動をすれば、作業完了!
参考サイト
CentOS 7のsystemctlコマンドに登録できるみたいですね。 詳しい手順は以下のサイトを参考にすればいいかな。