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.
- Một bản ghi với
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:
OutputWriting 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:
OutputEnter 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:
{ "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:
OutputThis 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:
OutputRule added Rule added (v6)
Tiếp theo, cho phép truy cập vào cổng :443
:
- sudo ufw allow 443
OutputRule 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:
OutputSaving 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:
OutputPlease 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:
... ## 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:
... ## 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.certfile
và c.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:
... ## 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:
... ## 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:
... ## 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
:
... ## 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:
OutputRule 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.
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
:
[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:
... 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 .
Các tin liên quan
Cách cài đặt Webmin trên Ubuntu 20.042020-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 Server
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