前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在Apache反向代理的Linode上安装Jupyter Notebook Server

在Apache反向代理的Linode上安装Jupyter Notebook Server

作者头像
双愚
发布2018-09-12 16:28:19
2.6K0
发布2018-09-12 16:28:19
举报

介绍

Jupyter Notebook是一个交互式增强型shell,可以在Web浏览器中运行。Notebook在数据科学家中很受欢迎,支持图形的在线渲染,导出为各种格式,以及用于数学符号的LaTeX。本指南旨在在Linode上配置一个公共Jupyter Notebook服务器,该服务器将使用Apache作为反向代理,便于远程访问您的计算需求。

准备

因为本指南是为运行Ubuntu 16.04的Linodes编写的,所以你应该:

  1. 熟悉我们的入门指南并通过SSH登录您的服务器。
  2. 安装了Apache 2.4.18 或者更高版本。

安装Anaconda Package Manager

Anaconda是一个包管理器,内置支持虚拟环境。它配备了Jupyter笔记本的每个安装,并由Jupyter的官方文档推荐。

  1. SSH进入您的Linode并安装最新版本的Anaconda。以下示例使用Python 3.6下载Anaconda的版本(但也可以使用Python 2.7): wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh
  2. 运行安装脚本: bash ~/Anaconda3-4.4.0-Linux-x86_64.sh
  3. 按照终端中的提示,接受条款,并允许安装程序创建PATH .bashrc
  4. 重新加载新的.bashrc更改: exec bash

创建自签名证书

官方文档建议生成自签名SSL证书,以防止从浏览器中在Notebook中发送未加密的密码。这一点尤为重要,因为Jupyter笔记本可以运行bash脚本。如果您有域名,请考虑使用Certbot而不是自签名证书。

  1. 创建有效期为365天的自签名证书: openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem 这个命令将创建一个mykey.keymycert.pem
  2. 将文件限制为仅由所有者读取: chmod 400 mykey.key chmod 400 mycert.pem

配置Jupyter Notebook

  1. 生成新的配置文件。这将创建一个~/.jupyter目录: jupyter notebook --generate-config
  2. 为笔记本创建密码: jupyter notebook password
  3. 从新创建的jupyter_notebook_config.json文件中复制密码。
  4. 取消注释配置文件中的以下行: c.NotebookApp.allow_origin = '*' c.NotebookApp.base_url = '/jupyter' c.NotebookApp.certfile = '/absolute/path/to/mycert.pem' c.NotebookApp.ip = 'localhost' c.NotebookApp.keyfile = '/absolute/path/to/mykey.key' c.NotebookApp.open_browser = False c.NotebookApp.password = 'paste_hashed_password_here' c.NotebookApp.trust_xheaders = True

配置Apache反向代理

  • 安装Apache 2.4: sudo apt install apache2
  • 启用a2enmod: sudo a2enmod 将出现一个提示,其中包含Apache的mod列表: Your choices are: access_compat actions alias allowmethods asis auth_basic auth_digest auth_form authn_anon authn_core authn_dbd authn_dbm authn_file authn_socache authnz_fcgi authnz_ldap authz_core authz_dbd authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex buffer cache cache_disk cache_socache cgi cgid charset_lite data dav dav_fs dav_lock dbd deflate dialup dir dump_io echo env expires ext_filter file_cache filter headers heartbeat heartmonitor ident include info lbmethod_bybusyness lbmethod_byrequests lbmethod_bytraffic lbmethod_heartbeat ldap log_debug log_forensic lua macro mime mime_magic mpm_event mpm_prefork mpm_worker negotiation proxy proxy_ajp proxy_balancer proxy_connect proxy_express proxy_fcgi proxy_fdpass proxy_ftp proxy_html proxy_http proxy_scgi proxy_wstunnel ratelimit reflector remoteip reqtimeout request rewrite sed session session_cookie session_crypto session_dbd setenvif slotmem_plain slotmem_shm socache_dbm socache_memcache socache_shmcb speling ssl status substitute suexec unique_id userdir usertrack vhost_alias xml2enc Which module(s) do you want to enable (wildcards ok)?
  • 启用mod_proxymod_proxy_httpmod_proxy_wstunnelmod_ssl,和mod_headers: proxy proxy_http proxy_https proxy_wstunnel ssl headers
  • 导航到该/etc/apache2/sites-available目录。复制默认配置文件,然后在virtualhost上添加指令: sudo cp 000-default.conf jupyter.conf
  • 注释DocumentRoot以允许https://your-domain-name/重定向为https://your-domain-name/jupyter。该<Location>指令连接websocket以允许默认内核运行: /etc/apache2/sites-available/jupyter.conf
代码语言:javascript
复制
<VirtualHost *:443>
    ServerAdmin webmaster@localhost
#   DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}.error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLCertificateFile /absolute/path/to/mycert.pem
    SSLCertificateKeyFile /absolute/path/to/mykey.key
    SSLProxyEngine On
    SSLProxyVerify none
    SSLProxyCheckPeerCN off
    SSLProxyCheckPeerName off
    SSLProxyCheckPeerExpire off

    ServerName localhost
    ProxyPreserveHost On
    ProxyRequests Off
    LogLevel debug

    ProxyPass /jupyter https://localhost:8888/jupyter
    ProxyPassReverse /jupyter https://localhost:8888/jupyter
    RequestHeader set Origin "https://localhost:8888"
    Redirect permanent / https://your-domain-name/jupyter

    <Location "/jupyter/api/kernels">
        ProxyPass wss://localhost:8888/jupyter/api/kernels
        ProxyPassReverse wss://localhost:8888/jupyter/api/kernels
    </Location>

</VirtualHost>

注意: 只要它的Jupyter Notebook 的配置文件中定义的基本URL路径相匹配的URL/jupyter路径可以有任何名称。

  • 启用新创建的配置: sudo a2ensite jupyter.conf
  • 重启Apache服务器: sudo service apache2 restart
  • 启动Jupyter笔记本: jupyter notebook

运行Jupyter Notebook

  1. 在本地计算机,导航到https://your-domain-name/哪里your-domain-name是你的Linode或您所选择的域名的IP地址。如果使用自签名证书,则浏览器可能要求您确认安全例外:
OpenSSL浏览器错误
OpenSSL浏览器错误
  1. 如果Apache配置正确,Jupyter会提示您登录:
Jupyter登录页面
Jupyter登录页面
  1. 使用Python内核创建一个新笔记本:
Jupyter Python内核
Jupyter Python内核
  1. Notebook已准备好运行Python代码或将来添加的其他内核:
Jupyter笔记本代码
Jupyter笔记本代码

请注意,此设置仅适用于单用户; 同一笔记本电脑上的同时用户可能会导致不可预测的结果。对于多用户服务器,请考虑使用JupyterHub

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

更多教程请前往腾讯云+社区学习更多知识。


参考文献:Install a Jupyter Notebook Server on a Linode Behind an Apache Reverse Proxy

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 安装Anaconda Package Manager
  • 创建自签名证书
  • 配置Jupyter Notebook
  • 配置Apache反向代理
  • 运行Jupyter Notebook
  • 更多信息
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档