Cách cài đặt Jupyter Notebook với Nginx Proxy trên Debian 12

theanh

Administrator
Nhân viên
Jupyter là một ứng dụng web miễn phí và mã nguồn mở dành cho khoa học dữ liệu và điện toán tương tác. Jupyter hỗ trợ mọi ngôn ngữ lập trình và cung cấp nhiều phần mềm, chẳng hạn như JupyetrLab, cung cấp môi trường chỉnh sửa nhiều sổ tay có nhiều tính năng và có nhiều tab, Notebook là một công cụ biên soạn sổ tay nhẹ và đơn giản, Qtconsole và nhiều phần mềm khác.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt Jupyter và cấu hình Jupyter Notebook trên máy chủ Debian 12. Bạn cũng sẽ bảo mật Jupyter Notebook bằng mật khẩu và chạy Jupyter Notebook như một dịch vụ systemd. Cuối cùng, bạn sẽ cài đặt và cấu hình Nginx làm proxy ngược để cài đặt Jupyter Notebook.

Điều kiện tiên quyết​

Trước khi bắt đầu, hãy đảm bảo bạn có những thứ sau:
  • Máy chủ Debian 12
  • Người dùng không phải root có quyền quản trị viên
  • Tên miền trỏ đến địa chỉ IP của máy chủ

Cài đặt các gói Python​

Trước khi cài đặt Jupyter, bạn phải cài đặt Python, trình quản lý gói Pip Python, venv để tạo môi trường ảo Python và git. Trong phần này, bạn sẽ cài đặt các gói đó bằng trình quản lý gói APT.

Để bắt đầu, hãy chạy lệnh bên dưới để cập nhật chỉ mục gói Debian của bạn.
Mã:
sudo apt update

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22190%22%3E%3C/svg%3E


Bây giờ hãy cài đặt Python và các gói phụ thuộc như Pip, venv và Python Dev. Nhập 'Y' để xác nhận cài đặt.
Mã:
sudo apt install python3 python3-pip python3-dev python3-venv git

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22314%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy chạy lệnh 'pip3' bên dưới để nâng cấp Pip của bạn phiên bản.
Mã:
pip3 install --break-system-package --upgrade pip
Bây giờ hãy kiểm tra phiên bản Python và Pip bằng lệnh bên dưới.
Mã:
python3 --version
pip3 --version
Bạn có thể thấy bên dưới rằng Python 3.11 và Pip 24.3 đã được cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22683%22%20height=%22155%22%3E%3C/svg%3E

Thiết lập Môi trường ảo Python​

Sau khi bạn đã cài đặt Python và các phụ thuộc khác, bạn sẽ tạo một môi trường ảo Python mới cho cài đặt Jupyter. Với điều này, cài đặt Jupyter của bạn sẽ được cô lập trong môi trường ảo. Ngoài ra, bạn cần một người dùng Linux chuyên dụng, vì vậy hãy đảm bảo rằng bạn đã chuẩn bị sẵn người dùng của mình.

Đăng nhập vào người dùng của bạn bằng lệnh bên dưới.
Mã:
su - username
Chạy lệnh 'python3' bên dưới để tạo Môi trường ảo Python mới 'venv'. Thao tác này sẽ cài đặt Python và Pip trong môi trường ảo của bạn, tách biệt với hệ thống của bạn.
Mã:
python3 -m venv venv
Kích hoạt môi trường ảo Python 'venv'. Sau khi kích hoạt, dấu nhắc shell của bạn sẽ trở thành '(venv) username@host ...'.
Mã:
source venv/bin/activate

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22595%22%20height=%22195%22%3E%3C/svg%3E


Nếu bạn muốn hủy kích hoạt 'venv', hãy thực hiện lệnh 'deactivate' bên dưới.
Mã:
deactivate

Cài đặt Jupyter​

Bây giờ bạn đã tạo và kích hoạt môi trường ảo Python, bạn có thể bắt đầu cài đặt Jupyter thông qua trình quản lý gói Python Pip.

Để cài đặt Jupyter, hãy chạy lệnh 'pip3' bên dưới.
Mã:
pip3 install jupyter
Bạn có thể xem bên dưới quá trình cài đặt Jupyter trong môi trường ảo.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22609%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy kiểm tra phiên bản Jupyter bằng lệnh sau lệnh.
Mã:
jupyter --version
Trong đầu ra sau, bạn có thể thấy phiên bản của từng thành phần Jupyter được cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22462%22%20height=%22402%22%3E%3C/svg%3E

Bật xác thực trong Jupyter Notebook​

Sau khi cài đặt Jupyter, bạn sẽ cấu hình cài đặt Jupyter Notebook bằng cách bật xác thực mật khẩu.

Trước tiên, hãy chạy lệnh bên dưới để tạo cấu hình cho Jupyter Notebook. Lệnh này sẽ tạo cấu hình mới cho '~/.jupyter/jupyter_notebook_config.py'.
Mã:
jupyter notebook --geenrate-config
Bây giờ hãy thiết lập mật khẩu cho Jupyter Notebook bằng lệnh bên dưới. Nhập mật khẩu khi được nhắc và lặp lại.
Mã:
jupyter notebook password
Cuối cùng, thực hiện lệnh 'deactivate' để đăng xuất khỏi môi trường ảo 'venv'.
Mã:
deactivate

Chạy Jupyter Notebook dưới dạng Systemd Dịch vụ​

Trong phần này, bạn sẽ tạo một dịch vụ systemd mới sẽ chạy Jupyter Notebook. Với điều này, Jupyter Notebook sẽ chạy ở chế độ nền như một dịch vụ systemd và bạn có thể dễ dàng quản lý nó bằng tiện ích 'systemctl'.

Tạo một tệp dịch vụ systemd mới '/etc/systemd/system/jupyter.service' bằng trình chỉnh sửa 'nano' sau.
Mã:
sudo nano /etc/systemd/system/jupyter.service
Chèn cấu hình bên dưới để chạy Jupyter Notebook như một systemd dịch vụ.
Mã:
[Unit]
Description=Jupyter Notebook

[Service]
Type=simple
PIDFile=/run/jupyter.pid
ExecStart=/home/alice/venv/bin/jupyter-notebook --config=/home/alice/.jupyter/jupyter_notebook_config.py --allow-root
User=root
Group=root
WorkingDirectory=/home/alice/venv
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
Lưu tệp và thoát khỏi trình chỉnh sửa.

Bây giờ hãy chạy lệnh 'systemctl' bên dưới để khởi động lại trình quản lý systemd và áp dụng các thay đổi của bạn.
Mã:
sudo systemctl daemon-reload

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22620%22%20height=%22132%22%3E%3C/svg%3E


Cuối cùng, hãy khởi động và kích hoạt dịch vụ 'jupyter' bằng lệnh bên dưới.
Mã:
sudo systemctl enable --now jupyter
sudo systemctl status jupyter
Trong kết quả đầu ra sau, bạn có thể thấy dịch vụ 'jupyter' đang chạy trên hệ thống của bạn.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22193%22%3E%3C/svg%3E

Cho phép truy cập từ xa vào Jupyter Notebook​

Trong phần này, bạn sẽ bật quyền truy cập từ xa vào Jupyter. Bạn phải thực hiện thao tác này nếu muốn thiết lập proxy ngược trước cài đặt Jupyter của mình.

Đăng nhập vào tài khoản người dùng của bạn và mở cấu hình Jupyter '~/.jupyter/jupyter_notebook_config.py' bằng trình soạn thảo 'nano' sau.
Mã:
su - username
nano ~/.jupyter/jupyter_notebook_config.py
Để bật quyền truy cập từ xa, hãy bỏ ghi chú tùy chọn 'c.ServerApp.allow_remote_access' và thay đổi giá trị thành 'Đúng'.
Mã:
c.ServerApp.allow_remote_access = True
Lưu và thoát tệp khi hoàn tất.

Tiếp theo, chạy lệnh 'systemctl' bên dưới để khởi động lại dịch vụ 'jupyter' và áp dụng các thay đổi của bạn. Với lệnh này, mã thông báo mới sẽ được tạo và có thể tìm thấy trong tệp nhật ký.
Mã:
sudo systemctl restart jupyter
Cuối cùng, hãy kiểm tra trạng thái dịch vụ 'jupyter' bằng lệnh sau.
Mã:
sudo systemctl status jupyter
Xem phần cuối của tin nhắn và sao chép mã thông báo đã tạo cho JupyterNotebook.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22173%22%3E%3C/svg%3E

Thiết lập Nginx làm proxy ngược​

Bây giờ Jupyter Notebook đang chạy như một dịch vụ, bước tiếp theo là cài đặt Nginx và cấu hình nó làm proxy ngược cho Jupyter Notebook. Bằng cách này, bạn có thể dễ dàng bảo mật Jupyter Notebook bằng HTTPS.

Cài đặt gói 'nginx' bằng lệnh 'apt' bên dưới.
Mã:
sudo apt install nginx -y

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22305%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy tạo một Cấu hình khối máy chủ Nginx '/etc/nginx/sites-available/jupyter' với trình chỉnh sửa 'nano' sau.
Mã:
sudo nano /etc/nginx/sites-available/jupyter
Chèn cấu hình bên dưới để thiết lập Nginx làm proxy ngược cho Jupyter Notebook. Đảm bảo thay đổi tham số 'server_name' bằng tên miền của bạn.
Mã:
server {
listen 80;
server_name lab.howtoforge.local;

access_log /var/log/nginx/howtoforge.local.access.log;
error_log /var/log/nginx/howtoforge.local.error.log;

location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
Lưu tệp và thoát khỏi trình chỉnh sửa.

Tiếp theo, chạy lệnh bên dưới để kích hoạt khối máy chủ 'jupyter' và xác minh cấu hình Nginx của bạn.
Mã:
sudo ln -s /etc/nginx/sites-available/jupyter /etc/nginx/sites-enabled/
sudo nginx -t
Nếu bạn có cài đặt Nginx phù hợp, bạn sẽ thấy đầu ra như 'cú pháp là ok - kiểm tra là thành công'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22187%22%3E%3C/svg%3E


Cuối cùng, hãy chạy lệnh 'systemctl' bên dưới để khởi động lại máy chủ web Nginx và kiểm tra trạng thái Nginx của bạn.
Mã:
sudo systemctl restart nginx
sudo systemctl status nginx
Nếu Nginx đang chạy, bạn có thể thấy đầu ra như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22252%22%3E%3C/svg%3E

Truy cập Jupyter Notebook​

Mở trình duyệt web của bạn và truy cập tên miền cài đặt Jupyter Notebook của bạn như http://lab.howtoforge.local/. Nếu cài đặt thành công, bạn sẽ được nhắc xác thực mật khẩu Jupyter.

Nhập mật khẩu của bạn và nhấp vào 'Đăng nhập'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22182%22%3E%3C/svg%3E


Bây giờ bạn sẽ thấy bảng điều khiển Jupyter Notebook như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22273%22%3E%3C/svg%3E



data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22196%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng! Bạn đã hoàn tất cài đặt Jupyter Notebook trên máy chủ Debian 12. Bạn đã cài đặt Jupyter Notebook và bảo mật bằng xác thực. Bạn cũng đã cấu hình Nginx làm proxy ngược cho Jupyter Notebook. Đối với bước tiếp theo, bạn muốn thêm chứng chỉ SSL để bảo mật Jupyter Notebook và cài đặt một số tiện ích mở rộng để mở rộng chức năng Jupyter Notebook.
 
Back
Bên trên