JupyterLab là môi trường phát triển dựa trên web thế hệ tiếp theo dành cho Project Jupyter. Project Jupyter được phát triển với mục tiêu phát triển mã nguồn mở, tiêu chuẩn mở và dịch vụ cho điện toán tương tác trên nhiều ngôn ngữ lập trình. JupyterLab cung cấp giao diện linh hoạt cho phép các nhà phát triển làm việc với các tài liệu và hoạt động như sổ tay Jupyter, trình soạn thảo văn bản, thiết bị đầu cuối và các thành phần tùy chỉnh theo cách linh hoạt, tích hợp và có thể mở rộng. JupyterLab là thế hệ tiếp theo của Jupyter Notebook và được cho là sẽ thay thế nó trong tương lai. Nó hỗ trợ hơn 40 ngôn ngữ lập trình, bao gồm R, Python, Scala và Julia.
Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt và cấu hình JupyterLab trên máy chủ Rocky Linux 9.
[*]
Cài đặt các gói tiện ích cơ bản. Một số trong số chúng có thể đã được cài đặt.
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Nó sẽ hiển thị đầu ra sau.
Wiki.js cần các cổng HTTP và HTTPS để hoạt động. Mở chúng ra.
Tải lại tường lửa để áp dụng các thay đổi.
Tạo và mở tệp
Dán mã sau vào nó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cài đặt máy chủ Nginx.
Xác minh cài đặt.
Bật và khởi động máy chủ Nginx.
Kiểm tra trạng thái của máy chủ.
Cài đặt gói PIP quản lý.
Tạo thư mục cho JupyterLab.
Chuyển sang thư mục mới tạo thư mục.
Thiết lập một môi trường ảo có tên là
Kích hoạt môi trường.
Nâng cấp trình quản lý gói Pip.
Cài đặt JupyterLab.
Tạo băm mật khẩu. Thay thế
Lệnh trên sẽ tạo ra một hàm băm mật khẩu dài. Nó sử dụng hàm băm mật khẩu Argon2. Ghi lại băm.
Tạo tệp cấu hình JupyterLab.
Lệnh trên sẽ tạo tệp cấu hình với các giá trị mặc định và lưu tệp đó vào thư mục
Mở tệp để chỉnh sửa.
Tìm các biến sau, bỏ chú thích và thay đổi giá trị của chúng như bên dưới. Thay thế
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Mở cổng 8888 trong tường lửa.
Chạy máy chủ JupyterLab. Tham số
Lệnh trên sẽ tạo một máy chủ JupyterLab trên cổng mặc định 8888 mà chúng tôi đã mở. Khởi chạy URL
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22415%22%20height=%22158%22%3E%3C/svg%3E
Nhập mật khẩu của bạn và nhấp vào nút Đăng nhập để mở giao diện JupyterLab.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22455%22%3E%3C/svg%3E
Bây giờ quyền truy cập đã được xác nhận, hãy nhấn Ctrl + C để dừng máy chủ và nhập
Tạo tệp dịch vụ mới cho JupyterLab.
Dán mã sau vào nó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Thay thế
Khởi tạo JupyterLab dịch vụ.
Bật và khởi động dịch vụ JupyterLab.
Kiểm tra trạng thái của dịch vụ.
Để cài đặt Certbot, chúng ta sẽ sử dụng trình cài đặt gói Snapd. Snapd luôn mang theo phiên bản ổn định mới nhất của Certbot và bạn nên sử dụng phiên bản đó.
Công cụ Snapd yêu cầu kho lưu trữ Epel để hoạt động.
Chúng ta sẽ sử dụng Snapd để cài đặt Certbot. Cài đặt Snapd.
Bật và khởi động dịch vụ Snap.
Tạo các liên kết cần thiết cho Snapd tới làm việc.
Đảm bảo rằng phiên bản snapd của bạn được cập nhật.
Cài đặt Certbot.
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến
Tạo chứng chỉ SSL.
Lệnh trên sẽ tải xuống chứng chỉ vào
Tạo chứng chỉ nhóm Diffie-Hellman.
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Dán mã sau vào Tệp
Cấu hình trên sẽ chuyển hướng tất cả các yêu cầu HTTP sang HTTPS và sẽ đóng vai trò là proxy cho dịch vụ JupyterLab để phục vụ dịch vụ đó thông qua tên miền của bạn.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Mở tệp
Thêm dòng sau vào trước dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Xác minh cấu hình Nginx của bạn.
Nếu bạn không thấy lỗi nào, điều đó có nghĩa là bạn có thể tiếp tục. Tải lại máy chủ Nginx.
Bây giờ bạn có thể truy cập JupyterLab bằng cách truy cập URL
Hướng dẫn này sẽ hướng dẫn bạn cách cài đặt và cấu hình JupyterLab trên máy chủ Rocky Linux 9.
Điều kiện tiên quyết
-
Máy chủ chạy Rocky Linux 9.
-
Người dùng không phải root có quyền sudo.
-
Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ của bạn. Đối với mục đích của chúng tôi, chúng tôi sẽ sử dụngjupyterlab.example.com
làm tên miền.
-
SELinux đã bị vô hiệu hóa.
-
Đảm bảo mọi thứ đều đã cập nhật.
Mã:
$ sudo dnf update
Cài đặt các gói tiện ích cơ bản. Một số trong số chúng có thể đã được cài đặt.
Mã:
$ sudo dnf install wget curl nano unzip yum-utils -y
Bước 1 - Cấu hình Tường lửa
Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent
Mã:
$ sudo firewall-cmd --reload
Bước 2 - Cài đặt Nginx
Rocky Linux 9 đi kèm với phiên bản Nginx cũ hơn. Bạn cần tải xuống kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.Tạo và mở tệp
/etc/yum.repos.d/nginx.repo
để tạo kho lưu trữ Nginx chính thức.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Mã:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Cài đặt máy chủ Nginx.
Mã:
$ sudo dnf install nginx -y
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Mã:
$ sudo systemctl enable nginx --now
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2022-12-13 06:07:05 UTC; 31s ago Docs: http://nginx.org/en/docs/ Process: 146475 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 146476 (nginx) Tasks: 2 (limit: 5911) Memory: 1.9M CPU: 15ms CGroup: /system.slice/nginx.service ??146476 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??146477 "nginx: worker process"
Bước 3 - Cài đặt JupyterLab
Trước tiên, hãy kiểm tra phiên bản python.
Mã:
$ python -V
Python 3.9.14
Mã:
$ sudo dnf install python3-pip
Mã:
$ mkdir jupyterlab
Mã:
$ cd ~/jupyterlab
jupyterlab_env
.
Mã:
$ python3 -m venv --system-site-packages jupyterlab_env
Mã:
$ source jupyterlab_env/bin/activate
Mã:
(jupyterlab_env) $ pip install --upgrade pip
Mã:
(jupyterlab_env) $ pip install jupyterlab
Bước 4 - Cấu hình JupyterLab
Theo mặc định, JupyterLab tạo một mã thông báo mới mỗi khi bạn khởi động để cấp quyền truy cập vào giao diện. Chúng ta hãy thay thế nó bằng xác thực mật khẩu.Tạo băm mật khẩu. Thay thế
YOUR_PASSWORD
bằng mật khẩu mạnh mà bạn chọn.
Mã:
(jupyterlab_env) $ python3 -c "from jupyter_server.auth import passwd; print(passwd('YOUR_PASSWORD'))"
Tạo tệp cấu hình JupyterLab.
Mã:
(jupyterlab_env) $ jupyter lab --generate-config
~/.jupyter
.Mở tệp để chỉnh sửa.
Mã:
(jupyterlab_env) $ nano ~/.jupyter/jupyter_lab_config.py
PASSWORD_HASH
bằng hàm băm được tạo ở trên.
Mã:
c.ServerApp.allow_remote_access = True
c.ServerApp.password = 'PASSWORD_HASH'
Mở cổng 8888 trong tường lửa.
Mã:
$ sudo firewall-cmd --add-port=8888/tcp --permanent
$ sudo firewall-cmd --reload
--ip 0.0.0.0
cho phép lắng nghe bất kỳ địa chỉ IP nào chứ không chỉ localhost.
Mã:
$ jupyter lab --ip 0.0.0.0
http://:8888/
trong trình duyệt của bạn và bạn sẽ thấy màn hình sau.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22415%22%20height=%22158%22%3E%3C/svg%3E
Nhập mật khẩu của bạn và nhấp vào nút Đăng nhập để mở giao diện JupyterLab.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22455%22%3E%3C/svg%3E
Bây giờ quyền truy cập đã được xác nhận, hãy nhấn Ctrl + C để dừng máy chủ và nhập
y
khi được nhắc dừng.Bước 5 - Tạo dịch vụ JupyterLab tệp
Thoát khỏi môi trường ảo.
Mã:
(jupyterlab_env) $ deactivate
Mã:
$ sudo nano /lib/systemd/system/jupyterlab.service
Mã:
[Unit]
Description=JupyterLab Server
[Service]
User=USER
Group=USER
Type=simple
WorkingDirectory=/home/USER/jupyterlab
ExecStart=/home/USER/jupyterlab/jupyterlab_env/bin/jupyter-lab --config=/home/USER/.jupyter/jupyter_lab_config.py
StandardOutput=null
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Thay thế
USER
bằng người dùng hiện đang đăng nhập vào hệ thống của bạn.Khởi tạo JupyterLab dịch vụ.
Mã:
$ sudo systemctl daemon-reload
Mã:
$ sudo systemctl enable jupyterlab --now
Mã:
$ sudo systemctl status jupyterlab
? jupyterlab.service - JupyterLab Server Loaded: loaded (/usr/lib/systemd/system/jupyterlab.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2022-12-13 11:45:26 UTC; 5s ago Main PID: 151675 (jupyter-lab) Tasks: 1 (limit: 5911) Memory: 59.0M CPU: 1.943s CGroup: /system.slice/jupyterlab.service ??151675 /home/navjot/jupyterlab/jupyterlab_env/bin/python3 /home/navjot/jupyterlab/jupyterlab_env/bin/jupyter-lab --config=/home/navjot/.jupyter/jupyter_lab_config.py
Dec 13 11:45:26 jupyter.example.com systemd[1]: Started JupyterLab Server.
Bước 6 - Cài đặt SSL
Trước khi tiếp tục, chúng ta cần cài đặt công cụ Certbot và chứng chỉ SSL cho tên miền của mình.Để cài đặt Certbot, chúng ta sẽ sử dụng trình cài đặt gói Snapd. Snapd luôn mang theo phiên bản ổn định mới nhất của Certbot và bạn nên sử dụng phiên bản đó.
Công cụ Snapd yêu cầu kho lưu trữ Epel để hoạt động.
Mã:
$ sudo dnf install epel-release -y
Mã:
$ sudo dnf install snapd -y
Mã:
$ sudo systemctl enable snapd.socket --now
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Mã:
$ sudo snap install core
$ sudo snap refresh core
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d jupyterlab.example.com
/etc/letsencrypt/live/jupyterlab.example.com
thư mục trên máy chủ của bạn.Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo certbot renew --dry-run
Bước 7 - Cấu hình Nginx
Tạo và mở tệp/etc/nginx/conf.d/jupyterlab.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/jupyterlab.conf
jupyterlab.conf
. Thay thế tất cả các trường hợp của jupyterlab.example.com
bằng tên miền của bạn.
Mã:
## enforce HTTPS
server { listen 80; listen [::]:80; server_name jupyterlab.example.com; return 301 https://$server_name$request_uri;
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name jupyterlab.example.com; access_log /var/log/nginx/jupyterlab.access.log; error_log /var/log/nginx/jupyterlab.error.log; client_max_body_size 20m; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/jupyterlab.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/jupyterlab.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/jupyterlab.example.com/chain.pem; ssl_session_timeout 1d; # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). ssl_protocols TLSv1.2 TLSv1.3; # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header X-Early-Data $tls1_3_early_data; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_set_header X-Scheme $scheme; proxy_buffering off; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8888; }
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default "";
}
map $http_upgrade $connection_upgrade { default upgrade; '' close;
}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Mở tệp
/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
Xác minh cấu hình Nginx của bạn.
Mã:
$ sudo nginx -t
Mã:
$ sudo systemctl reload nginx
https://jupyterlab.example.com
trong trình duyệt của bạn.