در این آموزش نحوه نصب و راهاندازی Jupyter Notebook را بر روی سرور اوبونتو 24.04 و سرور GPU بررسی خواهیم کرد. در این آموزش این سرویس را پشت یک Reverse Proxy با استفاده از Nginx قرار داده و امنیت آن را با گواهینامه SSL تضمین میکنیم.
اجرای ژوپیتر نوتبوک روی سرورهای ریموت به دانشمندان علم داده و متخصصین یادگیری ماشین اجازه میدهد تا از قدرت سختافزاری سرور استفاده کرده، پروژههای خود را به صورت ایمن مدیریت کنند و کدهای تعاملی خود را با دیگران به اشتراک بگذارند.
پیشنیازهای نصب Jupyter Notebook
قبل از شروع، اطمینان حاصل کنید که موارد زیر را در اختیار دارید:
- یک سرور اختصاصی یا سرور مجازی KVM با سیستمعامل اوبونتو 24.04.
- دسترسی Root یا کاربر با قابلیت Sudo (توصیه میشود برای امنیت بیشتر از کاربر روت مستقیم استفاده نکنید).
- نصب بودن Python 3.7 یا نسخههای بالاتر.
- آشنایی مقدماتی با پروتکل SSH و مدیریت خط فرمان لینوکس.
- یک دامنه که رکورد A آن به آدرس IP سرور شما اشاره کند.
مرحله 1: بهروزرسانی سرور
ابتدا لیست پکیجها را بهروز کرده و نرمافزارهای فعلی را به آخرین نسخه ارتقا دهید:
sudo apt update && sudo apt upgrade -y
توضیح: دستور update لیست مخازن را تازه میکند و upgrade نسخههای جدیدتر برنامههای نصب شده را جایگزین میکند. سوئیچ -y تایید خودکار برای نصب است.
مرحله 2: نصب پایتون و ابزارهای مورد نیاز
ژوپیتر بر پایه پایتون است. اگر پایتون 3 نصب نیست، آن را به همراه مدیریت پکیج pip و ابزارهای توسعه نصب کنید:
sudo apt install python3 python3-pip python3-dev build-essential -y
برای اطمینان از نصب صحیح، نسخهها را چک کنید:
python3 --version pip3 --version
مرحله 3: ایجاد محیط مجازی
برای جلوگیری از تداخل کتابخانههای پروژههای مختلف و سالم نگه داشتن سیستمعامل، همیشه از یک محیط ایزوله استفاده کنید.
نصب ماژول venv:
sudo apt install python3-venv -y
ایجاد محیط مجازی در مسیر دلخواه (مثلا jupyter_env):
python3 -m venv jupyter_env
فعالسازی محیط:
source jupyter_env/bin/activate
پس از فعالسازی، نام محیط را در ابتدای خط فرمان مشاهده خواهید کرد.
مرحله 4: نصب Jupyter Notebook
اکنون که در محیط مجازی هستید، ژوپیتر را نصب کنید:
pip install jupyter
پس از اتمام، با دستور زیر از نصب موفقیتآمیز مطمئن شوید:
jupyter --version
مرحله 5: پیکربندی برای دسترسی از راه دور
بهصورت پیشفرض، ژوپیتر فقط اجازه دسترسی از localhost (داخل خود سرور) را میدهد. برای دسترسی از سیستم شخصی خودتان، باید تنظیمات را تغییر دهید.
تولید فایل پیکربندی:
jupyter notebook --generate-config
این فایل در مسیر ~/.jupyter/jupyter_notebook_config.py ساخته میشود.
تنظیم رمز عبور:
jupyter notebook password
یک رمز عبور وارد کنید. هش این رمز برای امنیت در فایل .json ذخیره میشود.
ویرایش فایل تنظیمات:
nano ~/.jupyter/jupyter_notebook_config.py
خطوط زیر را پیدا کرده، از حالت کامنت خارج کنید (حذف #) و مقادیر را مطابق زیر تغییر دهید:
c.ServerApp.ip = '0.0.0.0' c.ServerApp.port = 8888
نکته: مقدار 0.0.0.0 به ژوپیتر اجازه میدهد به تمامی اینترفیسهای شبکه گوش دهد.
مرحله 6: تنظیم فایروال
اگر از فایروال UFW استفاده میکنید، باید پورتهای مورد نیاز را باز کنید:
sudo ufw allow 8888/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw reload
مرحله 7: اجرای اولیه و تست
برای اجرای سرور ژوپیتر دستور زیر را بزنید:
jupyter notebook
اکنون میتوانید از طریق مرورگر با آدرس http://your_server_ip:8888 وارد شوید.
مرحله 8: دسترسی امن از طریق SSH Tunnel (اختیاری اما توصیه شده)
اگر نمیخواهید پورت 8888 را مستقیما روی اینترنت باز بگذارید، از تانل SSH استفاده کنید. در سیستم محلی خود (کامپیوتر خودتان) دستور زیر را بزنید:
ssh -L 8888:localhost:8888 username@your_server_ip
حالا در مرورگر خود آدرس http://localhost:8888 را باز کنید. ترافیک شما به صورت امن به سرور منتقل میشود.
مرحله 9: تعریف ژوپیتر به عنوان یک سرویس Systemd
برای اینکه ژوپیتر با ریبوت شدن سرور به طور خودکار اجرا شود و در پسزمینه بماند.
ایجاد فایل سرویس:
sudo nano /etc/systemd/system/jupyter.service
محتوای زیر را در آن قرار دهید (بجای username نام کاربری خود را بنویسید):
[Unit] Description=Jupyter Notebook [Service] Type=simple PIDFile=/run/jupyter.pid ExecStart=/home/username/jupyter_env/bin/jupyter-notebook --config=/home/username/.jupyter/jupyter_notebook_config.py User=username Group=username WorkingDirectory=/home/username Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
فعالسازی سرویس:
sudo systemctl daemon-reload sudo systemctl enable jupyter sudo systemctl start jupyter
برای دیدن وضعیت و پیدا کردن Token ورود، از دستور systemctl status jupyter استفاده کنید.
مرحله 10: نصب Nginx و راهاندازی SSL
استفاده از Nginx به عنوان Reverse Proxy باعث میشود بتوانید از دامنه استفاده کنید و امنیت را با HTTPS بالا ببرید.
sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx
پیکربندی Nginx برای ژوپیتر:
یک فایل جدید بسازید: sudo nano /etc/nginx/sites-available/jupyter و تنظیمات زیر را در آن قرار دهید (بجای your_domain_or_IP دامنه خود را بنویسید)
server {
listen 80;
server_name your_domain_or_IP;
location / {
proxy_pass http://localhost:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# پشتیبانی از WebSocket که برای اجرای کدهای ژوپیتر حیاتی است
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
فعالسازی تنظیمات:
sudo ln -s /etc/nginx/sites-available/jupyter /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx
دریافت SSL رایگان از Let’s Encrypt:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your_domain_or_IP
پس از اتمام مراحل Certbot، سایت شما با https:// در دسترس خواهد بود.
مرحله 11: بهینهسازی برای پروژههای یادگیری ماشین
برای استفاده حرفهای، کتابخانههای زیر را در محیط مجازی نصب کنید:
کتابخانههای پایه:
pip install numpy pandas scikit-learn matplotlib seaborn tensorflow torch
پشتیبانی از GPU
اگر سرور شما دارای کارت گرافیک انویدیا است، نسخههای tensorflow-gpu را نصب کرده و درایورهای CUDA را پیکربندی کنید.
افزونههای ژوپیتر برای قابلیتهایی مثل فهرست مطالب و Code Folding:
pip install jupyter_contrib_nbextensions jupyter contrib nbextension install --user jupyter nbextension enable codefolding/main
نکته: همیشه پس از اتمام کار، از طریق رابط وب از Jupyter خارج شوید و در صورت عدم استفاده طولانیمدت، سرویس را متوقف کنید یا دسترسی پورتها را در فایروال محدود نمایید.
جمعبندی
در این مقاله، ما یک محیط کامل برای کار با دادهها بر روی اوبونتو 24.04 ایجاد کردیم. اکنون شما یک سرور Jupyter Notebook دارید که توسط وب سرور Nginx مدیریت میشود و با گواهی SSL محافظت شده است. این زیرساخت قدرتمند به شما اجازه میدهد از هر کجای دنیا به پروژههای سنگین یادگیری ماشین خود دسترسی داشته باشید و از منابع سرور به بهترین شکل استفاده کنید.


