1.環境を準備します
- セント7.6
- Python 3.7
- Nginx
注:Jupyterデプロイメントは、root以外のユーザー(ここではabcユーザー)の下にあります
2.手順
1.インストール
pip3 install jupyter
インストールが完了したら、最初にテストできます。
jupyter notebook --no-browser
2.構成ファイルを生成します
構成ファイルを生成します。
jupyter-notebook --generate-config
構成ファイルは、デフォルトで、現在のユーザーのホームディレクトリの下の.jupyterディレクトリに生成されます
ここにある私の構成ファイルのアドレス
/home/abc/.jupyter/jupyter_notebook_config.py
注:構成ファイルの生成時にエラーが報告される場合があります。
PermissionError: [Errno 13] Permission denied: '/home/abc/.jupyter'
理由:これは、現在のユーザーが/home/abc/.jupyterを作成するための十分な権限を持っていないためです
解決策:
rootユーザーの下の/ home / abc /の下に新しい.jupyterディレクトリーを作成し、現在のユーザーにこのディレクトリーの操作許可を与える必要があります。
3.Jupyterのデフォルトの作業ディレクトリを作成します
これは次のように設定されます:
/ home / abc / jupyter_dir
mkdir -p /home/abc/jupyter_dir
chown -R abc:abc /home/abc/jupyter_dir/
注:現在のユーザーには、ディレクトリを操作するための権限が必要です
4.構成ファイルを変更します
構成ファイル
vim/home/abc/.jupyter/jupyter_notebook_config.pyを変更します
着替える:
c.NotebookApp.ip = '0.0.0.0' # 注意:不想要其他机器访问,可以设置为127.0.0.1
c.NotebookApp.password = '' # 密码(加salt)
c.NotebookApp.open_browser = False # 启动不打开浏览器
c.NotebookApp.port = 8888 # 对外提供访问的端口
c.NotebookApp.notebook_dir = '/home/abc/jupyter_dir' # 默认工作目录
c.NotebookApp.allow_root = True # 允许root用户执行,root用户下必须
注:パスワードを使用しない場合、デフォルトではトークンを使用してログインします
注:パスワードを指定する場合は、python/IPythonシェルでパスワードを生成する必要があります
from notebook.auth import passwd
passwd()
パスワードを入力すると、saltを含むパスワード文字列が生成され、c.NotebookApp.passwordに入力します。
5.実行
jupyterノートブック
バックグラウンドで実行する(/ tmp / jupyterディレクトリを事前に作成する必要があり、現在のユーザーはこのディレクトリの操作権限を持っています)
nohup jupyter notebook > /tmp/jupyter/jupyter.log 2>&1 &
注:実行中は、次のエラーが発生する可能性があります。
PermissionError: [Errno 13] Permission denied: '/home/abc/.local'
理由:現在のユーザーの権限が不十分です
解決策:/ home / abcの下に新しい.localディレクトリを作成する必要があり、現在のユーザーにはこのディレクトリへの操作権限があります
注:他のマシンがアクセスできない場合は、ファイアウォールに問題がある可能性があります。ファイアウォールを設定するか、ファイアウォールをオフにする必要があります
6.SystemdがJupyterを引き継ぎます
Jupyterの動作をより適切に監視し、障害後に再起動できるようにするには、監視ソフトウェアを使用してJupyterを起動する必要があります。ここでは、システムに付属のSystemdを使用します。
ここにJupyterの起動スクリプトを書いた後、Systemdが起動スクリプトを引き継いでいます。Systemdを使ってJupterを引き継いでみませんか?これは、Jupyterの起動プロセスをログに記録できないためです。
最初に起動スクリプトを記述します:
vim /home/abc/bin/jupyter.sh
#!/bin/bash
/usr/local/python3/bin/jupyter-notebook --no-browser > /tmp/jupyter/jupyter.log 2>&1
そして、スクリプトには実行権限を与える必要があります
chmod +x /home/abc/bin/jupyter.sh
サービスを作成する
vim /usr/lib/systemd/system/jupyter.service
[Unit]
Description=Jupyter-Notebook
[Service]
User=abc
Group=abc
Type=simple
ExecStart=/usr/bin/nohup /home/abc/bin/jupyter.sh &
[Install]
WantedBy=multi-user.target
Restart=on-failure
RestartSec=10
新しいサービスをロードし、jupyterを起動して起動します
systemctl daemon-reload
systemctl enable jupyter
systemctl start jupyter
ここに到達すると、リモートマシンはLinuxのJupyterにアクセスできますが、セキュリティのために、Nginxを前面にぶら下げてから、ドメイン名に移動することをお勧めします。
7. Nginx
参照:https://segmentfault.com/a/1190000016627630
注:JupyterはWebSocketプロトコルを使用するため、NginxはWebSocketをサポートするように構成する必要があります。
新しい
confvim/etc/nginx/conf.d/jupyter.test.com.confを作成します
server {
server_name jupyter.test.com *.jupyter.test.com;
listen 80;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 120s;
proxy_next_upstream error;
}
}
Nginxを更新する
nginx -s reload
外部マシンがホストを設定した後、ブラウザはjupyter.test.comにアクセスできます
9.プラグインをインストールします
一般的なJupyterプラグインをインストールします
pip3 install RISE
pip3 install autopep8
jupyter-nbextension install rise --py --sys-prefix
jupyter-nbextension enable rise --py --sys-prefix
jupyterノートブックをチェックインします。
Hinterland
Nbextensions edit menu item
Split Cells Notebook
Autopep8 # 需要 pip install autopep8
Nbextensions dashboard tab
Snippets
Table of Contents (2)
RISE # 需要 pip install RISE