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.py82行目のコメントを解除し、Remoteからのアクセスを可能にする
#c.NotebookApp.allow_remote_access = False c.NotebookApp.allow_remote_access = True
参考にしたサイト: