Thứ tư, 26/08/2020 | 00:00 GMT+7

Cách thiết lập môi trường JupyterLab trên Ubuntu 18.04

JupyterLab là một giao diện user có nhiều tính năng giúp user , đặc biệt là trong các lĩnh vực Khoa học dữ liệu và AI, dễ dàng thực hiện các việc của họ. Môi trường JupyterLab cung cấp thiết kế lại tập trung vào năng suất của Notebook Jupyter . Nó giới thiệu các công cụ như trình xem HTML và trình xem CSV tích hợp cùng với các tính năng hợp nhất một số tính năng riêng biệt của Notebook Jupyter trên cùng một màn hình.

Trong hướng dẫn này, bạn sẽ cài đặt và cài đặt JupyterLab trên server Ubuntu 18.04 của bạn . Bạn cũng sẽ cấu hình server của bạn để có thể kết nối từ xa với version JupyterLab từ bất kỳ trình duyệt web nào, một cách an toàn, sử dụng domain .

Yêu cầu

Để hoàn thành hướng dẫn này, bạn cần:

  • Server Ubuntu 18.04 có account user không phải root có quyền sudo bằng Hướng dẫn Cài đặt Server Ban đầu này.
  • Bản cài đặt Phân phối Anaconda Python trên server của bạn. Bạn có thể sử dụng hướng dẫn Cách cài đặt Phân phối Python Anaconda trên Ubuntu 18.04 .
  • Tên domain hoặc domain phụ đã đăng ký nơi bạn có quyền truy cập để chỉnh sửa bản ghi DNS. Hướng dẫn này sẽ sử dụng your_domain xuyên suốt. Bạn có thể mua domain trên Namecheap , nhận domain miễn phí tại Freenom hoặc đăng ký domain mới với bất kỳ công ty đăng ký domain nào bạn chọn.
  • Các bản ghi DNS sau được cài đặt cho domain của bạn:
    • Một bản ghi với your_domain trỏ đến địa chỉ IP công cộng của server của bạn.
    • Một bản ghi A với www. your_domain trỏ đến địa chỉ IP công cộng của server của bạn. Tài liệu Cách tạo, Chỉnh sửa và Xóa Bản ghi DNS này có thể giúp bạn cài đặt các bản ghi này.

Bước 1 - Cài đặt password của bạn

Trong bước này, bạn sẽ cài đặt password khi cài đặt JupyterLab. Điều quan trọng là phải có password vì version của bạn có thể truy cập .

Đầu tiên, hãy đảm bảo môi trường Anaconda của bạn đã được kích hoạt. Theo hướng dẫn yêu cầu , môi trường được gọi là base .

Để kích hoạt môi trường, hãy sử dụng lệnh sau:

  • conda activate base

Dấu nhắc của bạn sẽ thay đổi trong terminal để phản ánh base môi trường Anaconda mặc định:

  • sammy@your_server:~$

Tất cả các lệnh trong tương lai trong hướng dẫn này sẽ được chạy trong môi trường base .

Với môi trường Anaconda của bạn được kích hoạt, bạn đã sẵn sàng cài đặt password cho JupyterLab trên server của bạn .

Đầu tiên, hãy tạo một file cấu hình cho Jupyter:

  • jupyter notebook --generate-config

Bạn sẽ nhận được kết quả sau:

Output
Writing default config to: /home/sammy/.jupyter/jupyter_notebook_config.py

Cả JupyterLab và Jupyter Notebook đều chia sẻ cùng một file cấu hình.

Bây giờ, hãy sử dụng lệnh sau để đặt password để truy cập từ xa version JupyterLab của bạn:

  • jupyter notebook password

Jupyter sẽ nhắc bạn cung cấp password bạn chọn:

Output
Enter password: Verify password: [NotebookPasswordApp] Wrote hashed password to /home/sammy/.jupyter/jupyter_notebook_config.json

Jupyter lưu trữ password ở định dạng băm tại /home/ sammy /.jupyter/jupyter_notebook_config.json . Bạn cần giá trị băm này trong tương lai.

Cuối cùng, sử dụng lệnh cat trên file được tạo bởi lệnh trước đó để xem password đã băm:

  • cat /home/sammy/.jupyter/jupyter_notebook_config.json

Bạn sẽ nhận được một kết quả tương tự như sau:

/home/sammy/.jupyter/jupyter_notebook_config.json
{   "NotebookApp": {     "password": "sha1:your_hashed_password"   } } 

Sao chép giá trị trong khóa password của JSON và lưu trữ tạm thời.

Bạn đã cài đặt password cho version JupyterLab của bạn . Trong bước tiếp theo, bạn sẽ tạo certificate Let's Encrypt cho server của bạn .

Bước 2 - Cấu hình Let's Encrypt

Trong bước này, bạn sẽ tạo certificate Let's Encrypt cho domain của bạn . Điều này sẽ bảo mật dữ liệu khi bạn truy cập môi trường JupyterLab từ trình duyệt của bạn .

Đầu tiên, bạn sẽ cài đặt Certbot vào server của bạn . Bắt đầu bằng cách thêm repository của nó vào các nguồn apt:

  • sudo add-apt-repository ppa:certbot/certbot

Khi thực hiện lệnh, bạn cần nhấn ENTER để hoàn tất việc thêm PPA:

Output
This is the PPA for packages prepared by Debian Let's Encrypt Team and backported for Ubuntu. Note: Packages are only provided for currently supported Ubuntu releases. More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot Press [ENTER] to continue or Ctrl-c to cancel adding it.

Nhấn ENTER để tiếp tục thêm PPA.

Khi lệnh đã hoàn tất thực thi, hãy làm mới các nguồn apt bằng apt update :

  • sudo apt update

Tiếp theo, bạn sẽ cài đặt Certbot:

  • sudo apt install certbot

Trước khi có thể bắt đầu chạy Certbot để tạo certificate cho version của bạn , bạn sẽ cho phép truy cập vào cổng :80 và cổng :443 của server , để Certbot có thể sử dụng các cổng này để xác minh domain của bạn. Cổng :80 được kiểm tra các yêu cầu http đến server trong khi cổng :443 được sử dụng cho các yêu cầu https . Certbot sẽ thực hiện một yêu cầu http trước tiên và sau đó sau khi có được certificate cho server của bạn, nó sẽ thực hiện một yêu cầu https , yêu cầu này sẽ được ủy quyền qua cổng :443 để tiến trình lắng nghe tại cổng :80 . Điều này sẽ xác minh sự thành công của cài đặt certificate của bạn.

Đầu tiên, cho phép truy cập vào cổng :80 :

  • sudo ufw allow 80

Bạn sẽ nhận được kết quả sau:

Output
Rule added Rule added (v6)

Tiếp theo, cho phép truy cập vào cổng :443 :

  • sudo ufw allow 443
Output
Rule added Rule added (v6)

Cuối cùng, chạy Certbot để tạo certificate cho version của bạn bằng lệnh sau:

  • sudo certbot certonly --standalone

Cờ standalone hướng dẫn certbot chạy một server tạm thời trong suốt quá trình xác minh.

Nó sẽ nhắc bạn về email của bạn:

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator standalone, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): your_email

Nhập một email đang hoạt động và nhấn ENTER .

Tiếp theo, nó sẽ yêu cầu bạn xem xét và đồng ý với Điều khoản dịch vụ cho Certbot và Let's Encrypt. Xem lại các điều khoản, nhập A nếu bạn chấp nhận và nhấn ENTER :

Output
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A

Như vậy, nó sẽ nhắc bạn chia sẻ email của bạn với Electronic Frontier Foundation. Nhập câu trả lời của bạn và nhấn ENTER :

Output
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y/N

Cuối cùng, bạn cần nhập domain của bạn . Nhập domain của bạn mà không có bất kỳ đặc điểm giao thức nào:

Output
Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): your_domain Obtaining a new certificate Performing the following challenges: http-01 challenge for your_domain Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/your_domain/privkey.pem Your cert will expire on 2020-09-28. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

Certbot sẽ thực hiện xác minh domain và tạo các certificate và khóa cho domain của bạn và lưu trữ chúng tại /etc/letsencrypt/live/ your_domain .

Đến đây bạn đã cài đặt certificate Let's Encrypt, bạn sẽ cập nhật file cấu hình JupyterLab của bạn .

Bước 3 - Cấu hình JupyterLab

Trong bước này, bạn sẽ chỉnh sửa cấu hình JupyterLab đảm bảo rằng nó sử dụng certificate Let's Encrypt mà bạn đã tạo ở Bước 2. Bạn cũng sẽ làm cho nó có thể truy cập bằng password bạn đã cài đặt ở Bước 1.

Trước tiên, bạn cần chỉnh sửa file cấu hình JupyterLab tại /home/ sammy /.jupyter/jupyter_notebook_config.py :

  • nano /home/sammy/.jupyter/jupyter_notebook_config.py

Bây giờ, chuyển đến dòng xác định giá trị cho c.NotebookApp.certfile và cập nhật nó như sau:

/home/sammy/.jupyter/jupyter_notebook_config.py
... ## The full path to an SSL/TLS certificate file. c.NotebookApp.certfile = '/etc/letsencrypt/live/your_domain/fullchain.pem' ... 

Tiếp theo, tìm biến c.NotebookApp.keyfile và đặt nó như hình:

/home/sammy/.jupyter/jupyter_notebook_config.py
... ## The full path to a private key file for usage with SSL/TLS. c.NotebookApp.keyfile = '/etc/letsencrypt/live/your_domain/privkey.pem' ... 

c.NotebookApp.certfilec.NotebookApp.keyfile đề cập đến Chứng chỉ SSL, certificate này sẽ được cung cấp khi bạn cố gắng truy cập server của bạn từ xa bằng giao thức https .

Tiếp theo, chuyển đến dòng xác định biến c.NotebookApp.ip và cập nhật như sau:

/home/sammy/.jupyter/jupyter_notebook_config.py
... ## The IP address the notebook server will listen on. c.NotebookApp.ip = '*' ... 

c.NotebookApp.ip xác định các IP có thể truy cập JupyterLab đang chạy server của bạn. Bạn đặt nó thành ký tự đại diện * để cho phép truy cập từ bất kỳ máy tính nào bạn cần để truy cập vào JupyterLab.

Tiếp theo, tìm cấu hình c.NotebookApp.open_browser và cập nhật nó như sau:

/home/sammy/.jupyter/jupyter_notebook_config.py
... ## Whether to open in a browser after starting. The specific browser used is #  platform dependent and determined by the python standard library `webbrowser` #  module, unless it is overridden using the --browser (NotebookApp.browser) #  configuration option. c.NotebookApp.open_browser = False ... 

Theo mặc định, JupyterLab cố gắng tự động bắt đầu phiên trình duyệt khi nó bắt đầu chạy. Do ta không có trình duyệt trên server từ xa nên cần tắt tính năng này để tránh lỗi.

Tiếp theo, chuyển xuống biến c.NotebookApp.password và thay đổi thành sau:

/home/sammy/.jupyter/jupyter_notebook_config.py
... ## Hashed password to use for web authentication. # #  To generate, type in a python/IPython shell: # #    from notebook.auth import passwd; passwd() # #  The string should be of the form type:salt:hashed-password. c.NotebookApp.password = 'your_hashed_password' ... 

JupyterLab sẽ sử dụng cấu hình password băm này để kiểm tra password bạn nhập để truy cập trong trình duyệt của bạn .

Cuối cùng, chuyển sâu hơn qua file và cập nhật mục nhập của c.NotebookApp.port :

/home/sammy/.jupyter/jupyter_notebook_config.py
... ## The port the notebook server will listen on. c.NotebookApp.port = 9000 ... 

c.NotebookApp.port đặt một cổng cố định để truy cập thời gian chạy JupyterLab của bạn. Bằng cách này, bạn chỉ có thể cho phép truy cập một cổng từ firewall ufw .

Sau khi hoàn tất, hãy lưu và thoát khỏi file .

Cuối cùng, cho phép lưu lượng truy cập trên cổng 9000 :

  • sudo ufw allow 9000

Bạn sẽ nhận được kết quả sau:

Output
Rule added Rule added (v6)

Đến đây bạn đã cài đặt tất cả cấu hình của bạn , bạn sẽ chạy JupyterLab.

Bước 4 - Chạy JupyterLab

Trong bước này, bạn sẽ thực hiện chạy thử nghiệm version JupyterLab.

Trước tiên, hãy thay đổi folder làm việc hiện tại của bạn thành folder chính của user :

  • cd ~

Bây giờ, hãy sửa đổi quyền truy cập của các file certificate để cho phép JupyterLab truy cập chúng. Thay đổi quyền của folder /etc/letsencrypt thành như sau:

  • sudo chmod 750 -R /etc/letsencrypt
  • sudo chown sammy:sammy -R /etc/letsencrypt

Sau đó, gọi version JupyterLab của bạn để bắt đầu sử dụng lệnh sau:

  • jupyter lab

Lệnh này chấp nhận một số tham số cấu hình. Tuy nhiên, vì ta đã thực hiện những thay đổi này trong file cấu hình nên ta không cần cung cấp chúng ở đây một cách rõ ràng. Bạn có thể cung cấp chúng dưới dạng đối số cho lệnh này để overrides các giá trị trong file cấu hình.

Đến đây bạn có thể chuyển đến https:// your_domain :9000 để kiểm tra xem bạn có nhận được màn hình đăng nhập của JupyterLab hay không.

Nếu đăng nhập bằng password bạn đã cài đặt cho JupyterLab ở Bước 2, bạn sẽ thấy giao diện JupyterLab.

Giao diện JupyterLab sau khi đăng nhập

Cuối cùng, nhấn CTRL+C hai lần để dừng server JupyterLab.

Trong bước tiếp theo, bạn sẽ cài đặt một dịch vụ hệ thống để server JupyterLab có thể chạy trong nền liên tục.

Bước 6 - Cài đặt dịch vụ systemd

Trong bước này, bạn sẽ tạo một dịch vụ systemd cho phép JupyterLab tiếp tục chạy ngay cả khi cửa sổ terminal đã thoát. Bạn có thể đọc thêm về các dịch vụ và đơn vị systemd trong hướng dẫn này về các yếu tố cần thiết của systemd .

Trước tiên, bạn sẽ phải tạo một file .service bằng lệnh sau:

  • sudo nano /etc/systemd/system/jupyterlab.service

Thêm nội dung sau vào file /etc/systemd/system/jupyterlab.service :

/etc/systemd/system/jupyterlab.service
[Unit] Description=Jupyter Lab Server  [Service] User=sammy Group=sammy Type=simple WorkingDirectory=/home/sammy/ ExecStart=/home/sammy/anaconda3/bin/jupyter-lab --config=/home/sammy/.jupyter/jupyter_notebook_config.py StandardOutput=null Restart=always RestartSec=10  [Install] WantedBy=multi-user.target 

Lưu và thoát khỏi editor khi bạn đã hoàn tất.

Tệp dịch vụ tự động đăng ký chính nó trong hệ thống dưới dạng daemon. Tuy nhiên, nó không chạy theo mặc định.

Sử dụng lệnh systemctl để bắt đầu dịch vụ:

  • sudo systemctl start jupyterlab

Thao tác này khởi động server JupyterLab ở chế độ nền. Bạn có thể kiểm tra xem server đã khởi động hay chưa bằng cách sử dụng lệnh sau:

  • sudo systemctl status jupyterlab

Bạn sẽ nhận được kết quả sau:

Output
● jupyterlab.service - Jupyter Lab Server Loaded: loaded (/etc/systemd/system/jupyterlab.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2020-04-26 20:58:29 UTC; 5s ago Main PID: 5654 (jupyter-lab) Tasks: 1 (limit: 1152) CGroup: /system.slice/jupyterlab.service └─5654 /home/sammy/anaconda3/bin/python3.7 /home/sammy/anaconda3/bin/jupyter-lab --config=/home/

Nhấn Q để thoát khỏi kết quả trạng thái dịch vụ.

Đến đây bạn có thể truy cập https:// your_domain :9000 trong bất kỳ trình duyệt nào bạn chọn, cung cấp password bạn đã cài đặt ở Bước 2 và truy cập môi trường JupyterLab đang chạy trên server của bạn.

Bước 7 - Cấu hình gia hạn certificate Let's Encrypt của bạn

Trong bước cuối cùng này, bạn sẽ cấu hình certificate SSL của bạn do Let's Encrypt cung cấp để tự động gia hạn khi chúng hết hạn sau mỗi 90 ngày và sau đó khởi động lại server để tải certificate mới.

Trong khi Certbot quan tâm đến việc gia hạn certificate cho cài đặt của bạn, nó không tự động khởi động lại server . Để cấu hình server khởi động lại với các certificate mới, bạn sẽ phải cung cấp renew_hook cho cấu hình Certbot cho server của bạn .

Bạn cần chỉnh sửa file /etc/letsencrypt/renewal/ your_domain .conf và thêm một renew_hook vào cuối file cấu hình.

Đầu tiên, sử dụng lệnh sau để mở file /etc/letsencrypt/renewal/ your_domain .conf trong editor :

  • sudo nano /etc/letsencrypt/renewal/your_domain.conf

Sau đó, ở cuối file này, thêm dòng sau:

/etc/letsencrypt/renewal/your_domain.conf
... renew_hook = systemctl reload jupyterlab 

Lưu và thoát khỏi file .

Cuối cùng, hãy chạy một đoạn ngắn quá trình gia hạn để xác minh file cấu hình của bạn là hợp lệ:

  • sudo certbot renew --dry-run

Nếu lệnh chạy mà không có bất kỳ lỗi nào, gia hạn Certbot của bạn đã được cài đặt thành công và sẽ tự động gia hạn và khởi động lại server của bạn khi certificate gần đến ngày hết hạn.

Kết luận

Trong bài viết này, bạn đã cài đặt môi trường JupyterLab trên server của bạn và làm cho nó có thể truy cập từ xa. Như vậy, bạn có thể truy cập các dự án máy học hoặc khoa học dữ liệu của bạn từ bất kỳ trình duyệt nào và yên tâm rằng tất cả các trao đổi đang diễn ra với mã hóa SSL tại chỗ. Cùng với đó, môi trường của bạn có tất cả các lợi ích của server dựa trên cloud .


Tags:

Các tin liên quan

Cách cài đặt Webmin trên Ubuntu 20.04
2020-08-26
Cách cài đặt Node.js trên Ubuntu 18.04
2020-08-06
Cách cài đặt MongoDB trên Ubuntu 20.04 từ site chính thức của Mongodb
2020-07-31
Cách cấu hình truy cập từ xa cho MongoDB trên Ubuntu 20.04
2020-07-31
Cách bảo mật MongoDB trên Ubuntu 20.04
2020-07-31
Cách thiết lập Mattermost trên Ubuntu 20.04
2020-07-29
Làm thế nào để quản lý OpenSSH trên Ubuntu 18.04
2020-07-28
Cách sử dụng Discord Webhooks để nhận thông báo về trạng thái trang web của bạn trên Ubuntu 18.04
2020-07-27
Cách cài đặt Discourse trên Ubuntu 18.04
2020-07-14
Cách cài đặt Discourse trên Ubuntu 20.04
2020-07-14