VPS作業記録8
今回は、nginxの設定します!
設定の目標は、
・静的なファイルをちゃっちゃと返す
・/jupyterにアクセスしたら、jupyterにアクセスできる
・/djangoにアクセスしたら、gunicornで動いているdjangoにアクセスできる(保留)
・/jupyterと/djangoのところに、Basic認証をつけたい
あたりかなと思います。
お供には、nginx実践入門です。
amzn.to
Jupyter
公式ドキュメント:Jupyter Documentation — Jupyter Documentation 4.1.0 documentation
参考1:Jupyter notebookをリモートサーバで実行する - Qiita
まずは、jupyterのインストールから、
# pip install jupyter
で終了。
とりあえず、
$ jupyter notebook
して、
$ wget localhost:8888
して、できあがったindex.htmlを覗いてみると、なんか動いてるっぽい。
jupyterの設定します。
Running a notebook server — Jupyter Notebook 5.0.0.dev documentation
$ jupyter notebook --generate-config
~/.jupyterにconfigのファイルができあがるので、そこでいろいろ設定していきます。
基本はコメントアウト外して、そこをちょろっと書き換える。
c.NotebookApp.port = 8888
c.NotebookApp.open_browser = False
c.NotebookApp.base_url = '/jupyter/'
c.NotebookApp.base_project_url = '/jupyter/'
c.NotebookApp.webapp_settings = {'static_url_prefix':'/jupyter/static/'}とかにしておく。
で、
$ cd ~ $ mkdir jupyter $ cd jupyter $ nohup jupyter notebook &
とかして、とりあえず、起動させっぱなしにする。
つづいて、nginxの設定。
前回までの設定は、
...
省略
...
http {
...
省略
...
server {
listen 80 default_server;
root /data/html;
error_page 404 /404.html
}
}だったので、これに、locationを加える。
...
省略
...
http {
...
省略
...
server {
listen 80 default_server;
root /data/html;
error_page 404 /404.html
location /jupyter/ {
proxy_pass http://127.0.0.1:8888;
}
}
}これで、nginxをリロードする。
んで、ブラウザで、自分のIPアドレス/jupyter/にアクセスして、jupyter notebookか起動していることを無事確認。
ということで、前回してみたかったBasic認証をつけます。
nginx実践入門だと、1ページぐらいにさらっと書いてあるだけですが、
nginxでBasic認証をする - Qiitaも合わせて読めば、手順までわかります。
「承認領域名」は、わりと任意についていい名前のようです(たぶん)。
/etc/nginxに.htpasswdファイルを生成しておく。
# yum install httpd-tools してからの # cd /etc/nginx # htpasswd -c .htpasswd hoge
.htpasswdは、ファイル名なので、できたかどうかは、ls -aで確認できる。hogeはユーザー名(なので、実際は変更しておく)。
で、さらにnginxの設定ファイルをさらに書き換える。
...
省略
...
http {
...
省略
...
server {
listen 80 default_server;
root /data/html;
error_page 404 /404.html
location /jupyter/ {
auth_basic "jupyter notebook";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:8888;
}
}
}こんな感じ。
あとは、djangoとGunicornへのリバースプロキシとしての設定もかいておきたいところですが、
まだ、djangoとかの準備ができてないので、今日は、ここまで。
追記
jupyterのページにはアクセスできることは確認してたけど、
カーネルを起動するところまでは確認してませんでした。
カーネルが立ち上がらないことが判明・・・なぜ・・・。
ダメだったので、ここ(proxy - How to configure IPython behind nginx in a subpath? - Stack Overflow)を参考にproxy_header_setを変えます。
けど、いまいち、なにしてるんだか、よくわかってなくて、サーバーの設定って難しい・・・。
...
省略
...
http {
...
省略
...
server {
listen 80 default_server;
root /data/html;
error_page 404 /404.html
location /jupyter/ {
auth_basic "jupyter notebook";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Origin "";
proxy_pass http://127.0.0.1:8888;
}
}
}一応、これで、iPythonがちゃんと動くところまで確認できました。