Jupyter Notebook をLANの外から使うためのApacheの設定

April 5, 2019 – 3:16 pm

ひと月前にAnacondaパッケージをServer上にインストール(「CentOS7.6上にAnacondaでTensorFlow をインストール」)し、Pythonデータ解析環境を整備。そこで、Jupyter Notebookの使用を試してみた。

このJupyter、ローカルなLAN環境下では問題なく動作したが、LANの外部からアクセスするには、ApacheのProxy設定を整える必要があった。Google上でこれを可能とする情報を調べてみたところ、外部からプロキシー経由でアクセスする方法についての記述を見つけることができ、動作環境を整えることができた。

以下、Apacheのconfiguration file(/etc/httpd/conf.d/vhost.conf)の関連部についてメモしておいた。

/etc/httpd/conf.d/vhost.conf関連部

<VirtualHost *:80>
     ServerName jupyter.yamasnet.com
     RewriteEngine On
     RewriteCond %{HTTPS} off
     RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>

<VirtualHost *:443>
     ServerName jupyter.yamasnet.com
     ServerAdmin webmaster@yamasnet.com
     DocumentRoot /var/www/jupyter

     ProxyRequests Off
     ProxyPreserveHost On

     <Proxy http://localhost:8888/>
         Require all granted
     </Proxy>

     <Location />
        ProxyPass http://Localhost:8888/
        ProxyPassReverse http://localhost:8888/
     </Location>

     <Location /terminals/websocket/>
        ProxyPass ws://localhost:8888/terminals/websocket/
        ProxyPassReverse ws://localhost:8888/terminals/websocket/
    </Location>

    <LocationMatch /(api/kernels/[^/]+/channels.*)>
        ProxyPass ws://localhost:8888/$1
        ProxyPassReverse ws://localhost:8888/$1
    </LocationMatch>

     SSLEngine on
     SSLHonorCipherOrder on
     Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
     SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2
     SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
     SSLCertificateFile /etc/letsencrypt/live/jupyter.yamasnet.com/cert.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/jupyter.yamasnet.com/privkey.pem
     SSLCertificateChainFile /etc/letsencrypt/live/jupyter.yamasnet.com/chain.pem

     Protocols h2 http/1.1

</VirtualHost>

Jupyter Notebook上の設定

Configuration fileの生成:

(base) [tsflow@localhost ~]$ jupyter notebook --generate-config

ディレクトリ .jupyterが生成される。このディレクトリ内のjupyter_notebook_config.pyを修正

(base) [tsflow@localhost ~]$ cd .jupyter
jupyter_notebook_config.py  migrated
(base) [tsflow@localhost .jupyter]$ vi jupyter_notebook_config.py

82行目のコメントを解除し、Remoteからのアクセスを可能にする

#c.NotebookApp.allow_remote_access = False
c.NotebookApp.allow_remote_access = True

  
参考にしたサイト

  1. ApacheのReverseProxyを使ってJupyterを公開する
  2. Deploying behind a reverse proxy

  
 


Post a Comment