Jupyter Notebook là một shell tương tác, nâng cao có thể chạy trong trình duyệt web. Notebook phổ biến trong số các nhà khoa học dữ liệu và hỗ trợ kết xuất trực tuyến các hình ảnh, xuất sang nhiều định dạng khác nhau và LaTeX để ghi chú toán học. Hướng dẫn này nhằm mục đích cấu hình trên Linode một máy chủ Jupyter Notebook công khai sẽ tạo điều kiện truy cập từ xa vào nhu cầu tính toán của bạn bằng cách sử dụng Apache làm proxy ngược.

Ghi chú: Jupyter Notebook đang được thay thế bằng JupyterLab , giải pháp thế hệ tiếp theo bao gồm Notebooks. Trước khi tiếp tục, hãy cân nhắc xem JupyterLab có phù hợp hơn với nhu cầu của bạn không.

Trước khi bạn bắt đầu

Vì hướng dẫn này được viết cho Linodes chạy Ubuntu 16.04, bạn nên:

  1. Nếu bạn chưa thực hiện, hãy tạo một tài khoản Linode và Compute Instance. Xem hướng dẫn Bắt đầu với Linode và Tạo Compute Instance của chúng tôi .
  2. Làm theo hướng dẫn Thiết lập và Bảo mật Phiên bản Compute của chúng tôi để cập nhật hệ thống của bạn. Bạn cũng có thể muốn đặt múi giờ, cấu hình tên máy chủ, tạo tài khoản người dùng giới hạn và tăng cường quyền truy cập SSH.

Cài đặt Anaconda Package Manager

Anaconda là trình quản lý gói có hỗ trợ tích hợp cho môi trường ảo. Nó đi kèm với mỗi lần cài đặt Jupyter Notebook và được khuyến nghị bởi tài liệu chính thức của Jupyter.

1.SSH vào Linode của bạn và cài đặt phiên bản mới nhất của Anaconda. Ví dụ bên dưới tải xuống phiên bản Anaconda với Python 3.6 (nhưng Python 2.7 cũng khả dụng):

wget https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh

2.Chạy tập lệnh cài đặt:

bash ~/Anaconda3-4.4.0-Linux-x86_64.sh

3.Làm theo lời nhắc trong thiết bị đầu cuối, chấp nhận các điều khoản và cho phép trình cài đặt tạo PATH trong .bashrc.

4.Tải lại những thay đổi mới .bashrcbằng:

exec bash

Tạo chứng chỉ tự ký

Tài liệu chính thức khuyến nghị tạo chứng chỉ SSL tự ký để ngăn chặn việc gửi mật khẩu chưa mã hóa trong Notebook từ trình duyệt. Điều này đặc biệt quan trọng vì Jupyter Notebook có thể chạy các tập lệnh bash. Nếu bạn có tên miền, hãy cân nhắc sử dụng Certbot thay vì chứng chỉ tự ký.

1.Tạo chứng chỉ tự ký có hiệu lực trong 365 ngày:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem

Lệnh này sẽ tạo ra mykey.keyvà mycert.pem.

2.Hạn chế các tập tin chỉ được phép đọc bởi chủ sở hữu:

chmod 400 mykey.key
chmod 400 mycert.pem

Cấu hình Jupyter Notebook

1.Tạo một tệp cấu hình mới. Thao tác này sẽ tạo một ~/.jupyterthư mục:

jupyter notebook --generate-config

2.Tạo mật khẩu cho sổ tay:

jupyter notebook password

3.Sao chép mật khẩu từ jupyter_notebook_config.jsontập tin vừa tạo.

4.Bỏ chú thích các dòng sau trong tệp cấu hình:

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

Cấu hình Apache Reverse Proxy

1.Cài đặt Apache 2.4:

sudo apt install apache2

2.Bật a2enmod:

sudo a2enmod

Một lời nhắc sẽ xuất hiện với danh sách các bản mod cho Apache:

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 spelling ssl status substitute suexec unique_id userdir usertrack vhost_alias xml2enc

Which module(s) do you want to enable (wildcards ok)?

3.Bật mod_proxymod_proxy_httpmod_proxy_wstunnelmod_ssl, và mod_headers:

proxy proxy_http proxy_https proxy_wstunnel ssl headers

4.Điều hướng đến /etc/apache2/sites-availablethư mục. Sao chép tệp cấu hình mặc định rồi thêm lệnh vào virtualhost:

sudo cp 000-default.conf jupyter.conf

5.Bình luận ra DocumentRootđể cho phép https://your-domain-name/chuyển hướng như https://your-domain-name/jupyter<Location>Chỉ thị kết nối websocket để cho phép kernel mặc định chạy:

<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>

Ghi chú: Đường /jupyterdẫn url có thể có bất kỳ tên nào miễn là nó khớp với đường dẫn url cơ sở được xác định trong tệp cấu hình sổ ghi chép Jupyter.

6.Kích hoạt cấu hình mới được tạo:

sudo a2ensite jupyter.conf

7.Khởi động lại máy chủ Apache:

sudo service apache2 restart

8.Khởi động Jupyter Notebook:

jupyter notebook

Chạy Jupyter Notebook

  1. Trên máy cục bộ của bạn, hãy điều hướng đến https://your-domain-name/nơi your-domain-namecó địa chỉ IP của Linode hoặc tên miền bạn đã chọn. Nếu sử dụng chứng chỉ tự ký, trình duyệt của bạn có thể yêu cầu bạn xác nhận ngoại lệ bảo mật:OpenSSL Browser Error
  2. Nếu Apache được cấu hình đúng, Jupyter sẽ nhắc bạn đăng nhập:Jupyter Login Page
  3. Tạo một sổ ghi chép mới bằng cách sử dụng hạt nhân Python:Hạt nhân Python Jupyter
  4. Notebook đã sẵn sàng để chạy mã Python hoặc các hạt nhân bổ sung được thêm vào trong tương lai:Jupyter Notebook Code

Lưu ý thiết lập này chỉ dành cho một người dùng; nhiều người dùng cùng lúc trên cùng một Notebook có thể gây ra kết quả không thể đoán trước. Đối với máy chủ nhiều người dùng, hãy cân nhắc sử dụng JupyterHub thay thế.

Thông tin thêm

Bạn có thể muốn tham khảo các nguồn sau để biết thêm thông tin về chủ đề này. Mặc dù chúng tôi cung cấp với hy vọng rằng chúng sẽ hữu ích, nhưng xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc tính kịp thời của các tài liệu được lưu trữ bên ngoài.

Nguồn : https://www.linode.com/docs/guides/install-a-jupyter-notebook-server-on-a-linode-behind-an-apache-reverse-proxy/