راهاندازی نت بوک ژوپیتر با پایتون ۳ روی دبیان ۹ – از صفر تا صد


سرویس نتبوک ژوپیتر یک پوسته دستوری (command shell) برای محاسبات تعاملی است و به عنوان یک اپلیکیشن وب محسوب میشود. این ابزار به همراه چندین زبان میتواند مورد استفاده قرار گیرد که شامل پایتون (Python)، جولیا (Julia)، زبان R، هسکل (Haskell) و روبی (Ruby) است. از این سرویس به طور عمده برای کار کردن با دادهها، مدلسازی آماری و یادگیری ماشین استفاده میشود.
در این راهنما مراحل راهاندازی نتبوک ژوپیتر برای اجرا روی سرور دبیان 9 آموزش داده میشود. همچنین روش اتصال و استفاده از این نتبوک بررسی خواهد شد. نتبوکهای ژوپیتر (که به اختصار نتبوک مینامیم) اسنادی هستند که توسط اپلیکیشن نتبوک ژوپیتر تولید میشوند و شامل کد رایانهای و همچنین متن قالببندی شده (پاراگراف، معادلات، شکلها، لینکها و غیره) میشوند و به منظور کمک به ارائه و اشتراک تحقیقات با قابلیت بازتولید مورد استفاده قرار میگیرند.
در پایان این آموزش شما قادر خواهید بود کد پایتون 3 را با استفاده از نتبوک ژوپیتر که روی یک سرور ریموت فعال است، اجرا کنید.
پیشنیازها
برای استفاده از این راهنما میبایست یک سرور جدید دبیان 9 با یک فایروال فعال و کاربر غیر root با دسترسیهای sudo داشته باشید.
گام 1 – نصب Pip و هدرهای پایتون
برای آغاز فرایند ابتدا آیتمهایی را که نیاز داریم از ریپازیتوریهای دبیان دانلود و نصب میکنیم. از نرمافزار مدیریت بسته پایتون (pip) برای نصب اجزای دیگر در ادامه استفاده خواهیم کرد.
ابتدا باید ایندکس بسته apt محلی را بهروزرسانی کنیم و سپس بستهها را دانلود کنیم:
sudo apt update
سپس فایلهای pip و هدرهای پایتون را نصب میکنیم که از سوی برخی وابستگیهای نتبوک ژوپیتر مورد نیاز هستند:
sudo apt install python3-pip python3-dev
پایتون 3.5 از پیش روی دبیان 9 نصب شده است. اینک میتوانیم محیط مجازی پایتون را راهاندازی کنیم چون نتبوک ژوپیتر داخل این محیط اجرا میشود.
گام 2 – ایجاد یک محیط مجازی پایتون برای ژوپیتر
اینک که پایتون 3، فایلهای هدر آن و pip آماده هستند، میتوانیم یک محیط مجازی پایتون برای مدیریت آسانتر فرایند ایجاد کنیم. سپس ژوپیتر را در این محیط مجازی نصب خواهیم کرد.
برای این کار باید ابتدا به دستور virtualenv دسترسی داشته باشیم. میتوانیم با استفاده از pip در پایتون آن را نصب کنیم. pip را بهروزرسانی کرده و این بسته را با استفاده از دستور زیر نصب میکنیم:
sudo -H pip3 install --upgrade pip sudo -H pip3 install virtualenv
وقتی virtualenv نصب شد میتوانیم شروع به قالببندی این محیط بکنیم. یک دایرکتوری برای فایلهای پروژه خود ایجاد کرده و به داخل آن میرویم:
mkdir ~/myprojectdir cd ~/myprojectdir
درون دایرکتوری پروژه با تایپ کردن دستور زیر، یک محیط مجازی پایتون ایجاد میکنیم:
virtualenv myprojectenv
بدین ترتیب یک دایرکتوری به نام myprojectenv درون دایرکتوری myprojectdir ایجاد میشود. درون این دایرکتوری نسخهای محلی از پایتون و نسخهای محلی از pip نصب میکنیم. میتوانیم از این موارد برای پیکربندی یک محیط ایزوله شده برای ژوپیتر استفاده کنیم. پیش از آن که ژوپیتر را نصب کنیم باید محیط مجازی را فعال کنیم. این کار از طریق وارد کردن دستور زیر ممکن است:
source myprojectenv/bin/activate
در این لحظه خط اعلان شما باید نشان دهد که اینک درون محیط مجازی پایتون هستید. این پیام چیزی شبیه زیر است:
(myprojectenv)user@host:~/myprojectdir
اینک آمادگی نصب ژوپیتر روی این محیط مجازی را داریم.
گام 3 – نصب ژوپیتر
درون محیط مجازی فعال، ژوپیتر را به کمک نسخه محلی pip نصب میکنیم. توجه کنید که وقتی محیط مجازی فعال شده است، یعنی خط اعلان با (myprojectenv) آغاز میشود، میتوانید حتی در صورتی که از پایتون 3 استفاده میکنید، به جای pip3 از pip استفاده کنید، چون این کپی از محیط مجازی، صرف نظر از نسخه پایتون همواره از ابزاری که pip نام دارد استفاده میکند.
pip install jupyter
در این نقطه همه نرمافزارهای مورد نیازمان برای اجرای ژوپیتر را با موفقیت نصب کردیم و اینک میتوانیم سرور نتبوک را آغاز کنیم.
گام 4 – اجرای نتبوک ژوپیتر
اینک همه چیز برای اجرای ژوپیتر مهیا شده است و برای اجرا کردن آن کافی است دستور زیر را وارد کنید:
jupyter notebook
یک گزارش از فعالیتهای نتبوک ژوپیتر در ترمینال نمایش مییابد. زمانی که نتبوک ژوپیتر را اجرا کنید، بر روی یک پورت خاص فعال میشود. نخستین نتبوکی که فعال میکنید، معمولاً از پورت 8888 استفاده میکند. برای بررسی این که نتبوک از چه پورتی استفاده میکند، میتوانید به خروجی دستوری که آن را آغاز کرده است مراجعه کنید:
[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret [I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/myprojectdir [I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at: [I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72 [I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser. [C 21:23:21.361 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
اگر نتبوک ژوپیتر را روی یک رایانه با دبیان محلی نصب کردهاید (و نه یک نسخه از ماشین مجازی) میتوانید به URL نمایش یافته مراجعه کنید تا به نتبوک ژوپیتر متصل شوید. اگر نتبوک ژوپیتر را به صورت یک ماشین مجازی اجرا کردهاید، باید همان طور که در بخش قبلی توصیف کردیم، از طریق تونل SSH به سرور وصل شوید.
در این لحظه میتوانید اتصال SSH را باز نگه دارید تا نتبوک ژوپیتر فعال بماند یا این که از اپلیکیشن خارج شوید و تونل SSH را مجدداً اجرا کنید. برای این که کار راحتتر شود، در این لحظه سرور ژوپیتر را متوقف میکنیم. زمانی که مجدداً از طریق SSH به سرور وصل شویم، آن را اجرا خواهیم کرد. برای متوقف کردن پروسه یک نتبوک ژوپیتر کافی است دکمههای CTRL+C را زده، در ادامه Y را وارد کرده و اینتر را بزنید. خروجی زیر را مشاهده خواهید کرد:
[C 21:28:28.512 NotebookApp] Shutdown confirmed [I 21:28:28.512 NotebookApp] Shutting down 0 kernels
اینک یک تونل SSH ایجاد میکنیم تا بتوانیم به نتبوک دسترسی داشته باشیم.
گام 5 – اتصال به سرور از طریق تونل SSH
در این بخش در مورد شیوه اتصال به رابط وب ژوپیتر نتبوک از طریق تونلینگ SSH توضیح میدهیم. از آنجا که نتبوک ژوپیتر بر روی پورت خاصی روی سرور فعال میشود (مانند 8888، یا 8889 و غیره)، با استفاده از تونل SSH میتوانیم به صورت امنی به پورت سرور وصل شویم.
در دو مرحله بعدی شیوه ایجاد یک تونل SSH از الف) مک یا لینوکس و ب) از ویندوز را توضیح میدهیم. بسته به این که از چه رایانه محلی استفاده میکنید، به بخش مربوطه مراجعه کنید.
الف) ایجاد تونل SSH با یک سیستم مک یا لینوکس
اگر از یک رایانه مک یا لینوکس استفاده میکنید، مراحل زیر برای ایجاد تونل SSH مشابه مراحل استفاده از SSH برای ورود به سرور ریموت است؛ به جز این که پارامترهای دیگری در دستور ssh ذکر میشوند. در این بخش پارامترهای مورد نیاز در دستور ssh برای ایجاد موفقیتآمیز تونل SSH معرفی شدهاند.
تونل بندی SSH با اجرای دستور SSH زیر در یک پنجره از ترمینال محلی میسر است:
ssh -L 8888:localhost:8888 your_server_username@your_server_ip
این دستور SSH یک اتصال SSH باز میکند؛ اما پارامتر L- تعیین میکند که پورت مشخص شده روی کلاینت (میزبان) باید به میزبان و پورت ذکر شده روی سرور ریموت (سرور) فوروارد شود. این بدان معنی است که هر چه روی پورت دوم (مثلاً 8888) در سرور اجرا شود، در پورت اول (مثلاً 8888) در رایانه محلی ظاهر میشود. همچنین میتوانید پورت 8888 را به یکی از موارد دلخواه خود تغییر دهید تا از تعارض با پورتی که ممکن است قبلاً مورد استفاده قرار گرفته باشد جلوگیری کنید. server_username همان نام کاربری شما (مثلاً Sammy) روی سرور است که ایجاد کردهاید و your_server_ip آدرس IP سرور شما است. برای نمونه برای نام کاربری Sammy و آدرس سرور 1.2.3.4 دستور فوق به صورت زیر درمیآید:
ssh -L 8888:localhost:8888 sammy@203.0.113.0
اگر پس از اجرای دستور SSH–L خطایی مشاهده نشد، میتوانید به محیط برنامهنویسی بازگردید و نتبوک ژوپیتر را اجرا کنید.
jupyter notebook
خروجی را در یک URL دریافت خواهید کرد. از یک مرورگر وب روی ماشین محلی استفاده کرده و رابط وب نتبوک ژوپیتر را با استفاده از URL که با آدرس http://localhost:8888 آغاز میشود باز کنید. اطمینان حاصل کنید که شماره توکن نیز در آدرس قرار دارد یا این که رشته شماره توکن را به همراه دستور http://localhost:8888 در اعلان وارد کنید.
ب) تونل بندی SSH با استفاده از ویندوز و Putty
اگر از ویندوز استفاده میکنید، میتوانید با استفاده از نرمافزار Putty یک تونل SSH ایجاد کنید. ابتدا URL یا آیپی سرور را به عنوان hostname در بخشی که در تصویر زیر نمایش یافته است، وارد کنید:
سپس بر روی SSH در انتهای پنل سمت چپ کلیک کنید تا منوی مربوطه باز شود. سپس روی Tunnels کلیک کنید. شماره پورت محلی که میخواهید برای دسترسی به ژوپیتر در رایانه محلی استفاده کنید را وارد نمایید. میتوانید شماره 8000 با بزرگتر را انتخاب کنید تا از تداخل با پورتهای سرویسهای دیگر اجتناب کنید و مقصد را به صورت localhost:8888 تعیین کنید. 8888: شماره پورتی است که نتبوک ژوپیتر روی آن اجرا میشود. اینک بر روی دکمه Add کلیک کنید تا پورتها در بخش Forwarded ports نمایش یابند:
در نهایت دکمه Open را بزنید تا از طریق SSH و تونل پورتهای دلخواه به سرور وصل شوید. در یک مرورگر به آدرس http://localhost:8000 بروید (یا هر پورتی که انتخاب کردید) تا به نتبوک ژوپیتر که روی سرور اجرا میشود وصل شوید. اطمینان حاصل کنید که شماره توکن نیز گنجانده شده است یا این که رشته شماره توکن را در خط اعلان وارد کنید http://localhost:8000.
گام 6 – استفاده از نتبوک ژوپیتر
در این بخش مفاهیم مقدماتی استفاده از نتبوک ژوپیتر را معرفی میکنیم. اگر در حال حاضر نتبوک ژوپیتر روی سرور اجرا نشده است، میتوانید آن را با دستور jupyter notebook آغاز کنید.
سپس با استفاده از مرورگر وب میتوانید به آن وصل شوید. نتبوک ژوپیتر ابزار بسیار قدرتمندی است و ویژگیهای زیادی دارد. در این بخش مواردی از ویژگیهای ابتدایی برای شروع به کار با آن را بیان میکنیم. نتبوک ژوپیتر همه فایلها و پوشههای موجود در دایرکتوری که در آن اجرا شده است را نشان میدهد، بنابراین زمانی که روی یک پروژه کار میکنید، اطمینان حاصل کنید که آن را از دایرکتوری پروژهاش آغاز میکنید. برای ایجاد یک فایل نتبوک جدید در بخش فوقانی و راست در منوی بازشدنی به مسیر New > Python 3 بروید:
نوشتن معادلات
بدین ترتیب یک نتبوک جدید باز میشود. سپس میتوانید کد پایتون را در سلول مربوطه اجرا کنید یا سلول را برای نشانهگذاری تغییر دهید. برای نمونه با کلیک روی Cell > Cell Type > Markdown در منوی ناوبری فوقانی، نخستین سلول را برای پذیرش متن Markdown تغییر میدهیم. سپس میتوانیم یادداشتهایی را با استفاده از زبان نشانهگذاری و حتی وارد کردن معادلههای LaTex و قرار دادن آنها بین نمادهای $ $ در آن درج کنیم. برای مثال، اطلاعات زیر را پس از تغییر دادن آن به Markdown در سلول مربوطه وارد کنید:
# Simple Equation Let us now implement the following equation: $ $ y = x^2$ $ where $x = 2$
برای این که markdown را به قالب rich text تبدیل کنید دکمههای CTRL+ENTER را بزنید تا به نتیجه زیر برسید:
میتوانید از سلولهای markdown برای ایجاد یادداشتهای مختلف و مستندسازی کد خود استفاده کنید. برای نمونه معادله سادهای را پیادهسازی میکنیم و نتیجه را نمایش میدهیم. بر روی سلول فوقانی کلیک کنید و سپس دکمههای ALT+ENTER را بزنید تا یک سلول زیر آن اضافه شود. کد زیر را در سلول جدیدی وارد کنید:
x = 2 y = x**2 print(y)
برای تبدیل کد دکمههای CTRL+ENTER را بزنید. نتایج زیر به دست میآیند:
اینک شما میتوانید ماژولهایی را ایمپورت کرده و از نتبوک به همان صورتی استفاده کنید که از هر محیط توسعه دیگر پایتون بهره میگیرید.
نتیجهگیری
شما با مطالعه این راهنما امکان نوشتن کدهای پایتونی را یافتهاید که قابلیت بازتولید دارند و از یادداشتهای markdown برای مستندسازی آن با استفاده از نتبوک ژوپیتر استفاده میکنید. برای این که راهنمای سریعی از درون نتبوک دریافت کنید میتوانید از منوی ناوبری فوقانی به مسیر Help > User Interface Tour مراجعه کرده و موارد جدیدی را یاد بگیرید.
اگر این نوشته مورد توجه شما قرار گرفته است، پیشنهاد میکنیم موارد زیر را نیز ملاحظه کنید:
- آموزش مقدمه ای در رابطه با یادگیری ماشین با پایتون (Python)
- یادگیری ماشین (Machine Learning) با پایتون (Python)
- مجموعه آموزشهای برنامهنویسی
- آموزش تکمیلی برنامه نویسی پایتون
- Q-Learning و یادگیری تقویتی — خودآموز سریع و جامع
- پردازش زبان طبیعی (NLP) — راهنمای جامع درک و پردازش متن
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
==