JupyterLab يك رابط كاربري كاملاً غني از ويژگي هاي مختلف است كه انجام وظايف را به خصوص در زمينه علوم داده ها و هوش مصنوعي براي كاربران آسان مي كند. محيط هاي JupyterLab طراحي مجدد Jupyter Notebook را با محوريت بهره وري ارائه مي دهد. اين برنامه ابزاري مانند يك نمايشگر HTML داخلي و بيننده CSV را به همراه ويژگي هايي ارائه مي دهد كه چندين ويژگي مجزا از Jupyter Notebook را در همان صفحه جمع مي كند.
در اين آموزش ، JupyterLab را روي سرور مجازي Ubuntu 18.04 خود نصب و تنظيم مي كنيد. همچنين مي توانيد سرور خود را پيكربندي كنيد تا بتواند از راه دور با هر نامي از مرورگر وب به طور ايمن و با استفاده از يك نام دامنه به نمونه JupyterLab متصل شود.
پيش نيازها
براي تكميل اين آموزش ، به موارد زير نياز داريد:
- سرور مجازي Ubuntu 18.04 با يك حساب كاربري غير ريشه با امتيازات sudo با استفاده از راهنماي ستاپ اوليه سرور.
- نصب توزيع پايتون Anaconda روي سرور مجازيتان. مي توانيد از آموزش نحوه نصب توزيع پايتون Anaconda در اوبونتو 18.04 استفاده كنيد.
- يك نام دامنه يا زير دامنه ثبت شده كه در آن به ويرايش ركورد DNS دسترسي داريد. در سراسر اين آموزش از your_domain استفاده خواهد كرد. مي توانيد دامنه ها را در Namecheap خريداري كنيد ، يك دامنه رايگان در Freenom دريافت كنيد ، يا يك دامنه جديد را با هر نوع ثبت دلخواه خود ثبت كنيد.
- سوابق DNS زير براي دامنه شما تنظيم شده باشد:
o يك ركورد A با your_domain كه آدرس IP عمومي سرور مجازي شما را نشان مي دهد.
O ركورد A با www.your_domain كه آدرس IP عمومي سرور مجازي شما را نشان مي دهد. مقاله نحوه ايجاد ، ويرايش و حذف اسناد ركوردهاي DNS مي تواند در تنظيم اين ركوردها به شما كمك كند.
مرحله 1 – تنظيم گذرواژه
در اين مرحله يك رمز عبور را روي نصب JupyterLab خود تنظيم خواهيد كرد. داشتن گذرواژه مهم است زيرا نمونه شما در دسترس عموم خواهد بود.
ابتدا مطمئن شويد كه محيط Anaconda شما فعال شده است. طبق آموزش پيش نياز محيط، base ناميده مي شود.
براي فعال كردن محيط ، از دستور زير استفاده كنيد:
- $ conda activate base
اعلان شما در ترمينال تغيير خواهد كرد تا پايه محيط پيش فرض Anaconda را منعكس كند:
(base) sammy@your_server:~$
كليه دستورات آينده در اين آموزش در محيط baseاجرا مي شود.
با فعال شدن محيط Anaconda ، مي توانيد يك رمز ورود براي JupyterLab را در سرور مجازي خود تنظيم كنيد.
ابتدا ، اجازه دهيد يك فايلbase پيكربندي براي Jupyter ايجاد كنيم:
- $ jupyter notebook –generate-config
خروجي زير را دريافت خواهيد كرد:
OutputWriting default config to: /home/sammy/.jupyter/jupyter_notebook_config.py
هم JupyterLab و Jupyter Notebookيك فايل پيكربندي مشترك را دارند.
- $ jupyter notebook password
اكنون ، از دستور زير براي تنظيم گذرواژه براي دسترسي به نمونه JupyterLab خود از راه دور استفاده كنيد:
OutputEnter password:Verify password:[NotebookPasswordApp] Wrote hashed password to /home/sammy/.jupyter/jupyter_notebook_config.json
Jupyter به شما اعلاني نشان مي خواهد كه رمز عبور مورد نظر خود را ارائه دهيد:
Jupyter رمز عبور را با فرمت hashed در /home/sammy/.jupyter/jupyter_notebook_config.json ذخيره مي كند. در آينده به اين مقدار نياز خواهيد داشت.
در آخر ، براي مشاهده گذرواژه hashed ، از دستور cat در فايل توليد شده توسط دستور قبلي استفاده كنيد:
- $ cat /home/sammy/.jupyter/jupyter_notebook_config.json
خروجي مشابه با موارد زير را دريافت خواهيد كرد:
/home/sammy/.jupyter/jupyter_notebook_config.json
{
“NotebookApp”: {
“password”: “sha1:your_hashed_password”
}
}
مقدار را در كليد رمز عبور JSON كپي كنيد و به طور موقت آن را ذخيره كنيد.
براي مثال JupyterLab يك گذرواژه تنظيم كرده ايد. در مرحله بعد يك گواهي Let’s Encrypt براي سرور مجازي خود ايجاد خواهيد كرد.
مرحله 2 – پيكربندي Let’s Encrypt
در اين مرحله ، يك گواهي Let’s Encrypt براي دامنه خود ايجاد خواهيد كرد. با دسترسي به محيط JupyterLab از مرورگر ، داده هاي شما را ايمن مي كند.
ابتدا Certbot را روي سرور مجازي خود نصب خواهيد كرد. با اضافه كردن مخزن آن به منابع apt شروع كنيد:
- $ sudo add-apt-repository ppa:certbot/certbot
پس از اجراي دستور ، از شما خواسته مي شود تا ENTER را فشار دهيد تا 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/certbotPress [ENTER] to continue or Ctrl-c to cancel adding it.
براي ادامه افزودن PPA ، ENTER را فشار دهيد.
پس از پايان اجراي فرمان ، منابع را با استفاده از دستور apt update ريفرش كنيد:
- $ sudo apt update
سپس ، Certbot را نصب خواهيد كرد:
- $ sudo apt install certbot
قبل از شروع به كار Certbot براي توليد گواهينامه ها براي مثال شما ، اجازه دسترسي به پورت: 80 و پورت: 443 سرور مجازي خود را مي دهيد تا Certbot بتواند از اين پورت ها براي تأييد نام دامنه شما استفاده كند. پورت: 80 براي درخواست هاي http به سرور مجازي بررسي مي شود در حالي كه پورت 443 براي درخواست هاي https استفاده مي شود. Certbot ابتدا يك درخواست http را ايجاد مي كند و پس از دريافت گواهينامه ها براي سرور مجازي شما ، يك درخواست https را ايجاد مي كند كه از طريق پورت از طريق پورت: 443 براي گوش دادن به پورت 80 پروكسي مي شود. با اين كار نصب گواه
ينامه ها با موفقيت تأييد خواهد شد.
ابتدا اجازه دسترسي به پورت 80: را بدهيد:
- $ sudo ufw allow 80
خروجي زير را دريافت خواهيد كرد:
OutputRule addedRule added (v6)
سپس ، اجازه دسترسي به پورت: 443:
- $ sudo ufw allow 443
Output
Rule added
Rule added (v6)
در آخر ، Certbot را اجرا كنيد تا با استفاده از دستور زير ، گواهينامه هايي را براي مثال خود توليد كنيد:
- $ sudo certbot certonly –standalone
پرچم standalone ، certbot را براي اجراي يك سرور مجازي موقت براي مدت زمان بررسي تأييد مي كند.
ايميل شما را درخواست مي كند:
OutputSaving debug log to /var/log/letsencrypt/letsencrypt.logPlugins selected: Authenticator standalone, Installer NoneEnter email address (used for urgent renewal and security notices) (Enter ‘c’ tocancel): your_email
يك ايميل فعال را وارد كنيد و ENTER را فشار دهيد.
در مرحله بعد ، از شما خواسته خواهد شد تا شرايط سرويس هاي Certbot و Let’s Encrypt t را مرور و تاييد كنيد. شرايط را مطالعه كنيد اگر قبول كرديد ، A را تايپ كنيد و ENTER را فشار دهيد:
Output- – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – -Please read the Terms of Service athttps://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You mustagree in order to register with the ACME server athttps://acme-v02.api.letsencrypt.org/directory- – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – -(A)gree/(C)ancel: A
اكنون از شما خواسته مي شود كه ايميل خود را با بنياد الكترونيكي Frontier به اشتراك بگذاريد. پاسخ خود را تايپ كنيد و ENTER را فشار دهيد:
Output- – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – -Would you be willing to share your email address with the Electronic FrontierFoundation, a founding partner of the Let’s Encrypt project and the non-profitorganization that develops Certbot? We’d like to send you email about our workencrypting the web, EFF news, campaigns, and ways to support digital freedom.- – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – -(Y)es/(N)o: Y/N
در آخر ، از شما خواسته مي شود نام دامنه خود را وارد كنيد. نام دامنه خود را بدون هيچ گونه مشخصات پروتكل وارد كنيد:
OutputPlease enter in your domain name(s) (comma and/or space separated) (Enter ‘c’to cancel): your_domainObtaining a new certificatePerforming the following challenges:http-01 challenge for your_domainWaiting 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 تأييد دامنه را انجام خواهد داد و گواهي و كليد براي دامنه شما را ايجاد ميكند و آنها در / etc / letsencrypt / live / your_domain ذخيره ميكند.
اكنون كه گواهي Let’s Encrypt خود را تنظيم كرده ايد ، فايل پيكربندي JupyterLab خود را به روز خواهيد كرد.
مرحله 3 – پيكربندي JupyterLab
در اين مرحله ، پيكربندي JupyterLab را ويرايش مي كنيد تا مطمئن شويد كه از گواهي Let’s Encrypt كه در مرحله 2 ايجاد كرده ايد استفاده مي كند. همچنين مي توانيد با استفاده از رمز عبور تنظيم شده در مرحله 1 ، آن را در دسترس قرار دهيد.
ابتدا بايد پيكربندي JupyterLab را در /home/sammy/.jupyter/jupyter_notebook_config.py ويرايش كنيد:
- $ nano /home/sammy/.jupyter/jupyter_notebook_config.py
اكنون به خطي كه مقدار c.NotebookApp.certfile را تعريف مي كند برويد و به شرح زير آن را به روز كنيد:
/home/sammy/.jupyter/jupyter_notebook_config.py
…
## The full path to an SSL/TLS certificate file.
c.NotebookApp.certfile = ‘/etc/letsencrypt/live/your_domain/fullchain.pem’
…
سپس ، متغير c.NotebookApp.keyfile را پيدا كنيد و آن را مطابق زير تغيير دهيد:
/home/sammy/.jupyter/jupyter_notebook_config.py
…
## 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 و c.NotebookApp.keyfile به گواهي SSLاشاره مي كنند كه وقتي سعي مي كنيد از راه دور با استفاده از پروتكل https به سرور مجازي خود دسترسي پيدا كنيد ، ارائه مي شود.
در مرحله بعد ، به خط تعريف متغير c.NotebookApp.ip برويد و به شرح زير به روز كنيد:
/home/sammy/.jupyter/jupyter_notebook_config.py
…
## The IP address the notebook server will listen on.
c.NotebookApp.ip = ‘*’
…
c.NotebookApp.ip IP هايي را تعريف مي كند كه مي توانند به سرور مجازي شما دسترسي پيدا كنند. آن را روي * wildcard قرار داده ايد تا از هر رايانه اي كه براي دسترسي به JupyterLab لازم داريد دسترسي داشته باشيد.
سپس ، پيكربندي c.NotebookApp.open_browser را پيدا كنيد و به شرح زير آن را به روز كنيد:
/home/sammy/.jupyter/jupyter_notebook_config.py
…
## 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
…
به طور پيش فرض ، JupyterLab سعي مي كند به طور خودكار بخش مرورگر را شروع كند. از آنجا كه در سرور مجازي راه دور مرورگر نداريم ، لازم است آن را خاموش كنيد تا از خطاها جلوگيري شود.
در مرحله بعد ، به متغير c.NotebookApp.password برويد و آن را به شرح زير تغيير دهيد:
/home/sammy/.jupyter/jupyter_notebook_config.py
…
## 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 از اين پيكربندي پسورد رمزگذاري شده براي بررسي رمز عبور وارد شده جهت دسترسي به مرورگر شما استفاده مي كند.
در آخر ، بيشتر فايل را بررسي كنيد و ورودي c.NotebookApp.port را به روز كنيد:
/home/sammy/.jupyter/jupyter_notebook_config.py
…
## The port the notebook server will listen on.
c.NotebookApp.port = 9000
…
c.NotebookApp.port براي دسترسي به زمان اجراي JupyterLab يك پورت ثابت تعيين مي كند. به اين ترتيب ، مي توانيد فقط از يك فايروال ufw به يك پورت دسترسي داشته باشيد.
پس از اتمام كار ، فايل را ذخيره كنيد و خارج شويد.
سرانجام ، اجازه عبور در پورت 9000 را بدهيد:
- $ sudo ufw allow 9000
خروجي زير را دريافت خواهيد كرد:
OutputRule addedRule added (v6)
اكنون كه پيكربندي خود را تنظيم كرده ايد ، JupyterLab را اجرا خواهيد كرد.
مرحله 4 – اجراي JupyterLab
در اين مرحله ، يك مثال آزمايشي از نمونه JupyterLab را انجام مي دهيد.
ابتدا دايركتوري فعلي خود را به ديركتوري هوم كاربر تغيير دهيد:
- $ cd ~
اكنون مجوزهاي دسترسي فايل هاي گواهينامه را اصلاح كنيد تا JupyterLab بتواند به آنها دسترسي پيدا كند. مجوزهاي پوشه / etc / letsencrypt را به موارد زير تغيير دهيد:
- $ sudo chmod 750 -R /etc/letsencrypt
- $ sudo chown sammy:sammy -R /etc/letsencrypt
سپس ، به مثال JupyterLab خود مراجعه كنيد تا از دستور زير استفاده كنيد:
- jupyter lab
اين دستور چندين پارامتر پيكربندي را مي پذيرد. با اين حال ، از آنجا كه ما قبلاً اين تغييرات را در فايل پيكربندي ايجاد كرده ايم ، نيازي به ارائه صريح آنها در اينجا نداريم. شما مي توانيد آنها را به عنوان آرگومان هايي براي اين دستور براي غلبه بر مقادير موجود در فايل پيكربندي ارائه دهيد.
اكنون مي توانيد به https: // your_domain: 9000 برويد تا صفحه ورود به سيستم JupyterLab را دريافت كنيد.
اگر با گذرواژه اي كه براي مرحله دوم 2 براي JupyterLab تنظيم كرده ايد وارد شويد ، رابط JupyterLab به شما ارائه مي شود.
در آخر ، دوبار CTRL + C را فشار دهيد تا سرور مجازي JupyterLab متوقف شود.
در مرحله بعد ، يك سرويس سيستمي را تنظيم مي كنيد تا سرور مجازي JupyterLab بطور مداوم در پس زمينه اجرا شود.
مرحله ششم – تنظيم يك سرويس سيستمي
در اين مرحله ، شما يك سرويس سيستمي ايجاد خواهيد كرد كه به JupyterLab اجازه مي دهد تا حتي در هنگام خروج از پنجره ترمينال ، عملكرد خود را ادامه دهد. مي توانيد اطلاعات بيشتر در مورد خدمات سيستمي و واحدهاي موجود در اين راهنما را در مورد ملزومات systemd مطالعه كنيد.
در ابتدا ، بايد با استفاده از دستور زير ، يك فايل .service ايجاد كنيد:
- $ sudo nano /etc/systemd/system/jupyterlab.service
محتواي زير را به فايل /etc/systemd/system/jupyterlab.service اضافه كنيد:
/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
پس از انجام كار ويرايشگر را ذخيره كرده و از آن خارج شويد.
فايل سرويس به صورت خودكار خود را در سيستم به عنوان يك Daemon ثبت مي كند. اما به طور پيش فرض اجرا نمي شود.
براي شروع سرويس از دستور systemctl استفاده كنيد:
- $ sudo systemctl start jupyterlab
اين كار سرور مجازي JupyterLab را در پس زمينه شروع مي كند. مي توانيد با استفاده از دستور زير سرور مجازي را بررسي كنيد:
- $ sudo systemctl status jupyterlab
خروجي زير را دريافت خواهيد كرد:
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/
Q را فشار دهيد تا از خروجي وضعيت سرويس خارج شويد.
اكنون مي توانيد به https: // your_domain: 9000 در هر مرورگر مورد نظر خود برويد ، رمز عبوري را كه در مرحله 2 تنظيم كرده ايد تهيه كنيد و به محيط JupyterLab كه روي سرور مجازي خود كار مي كند دسترسي پيدا كنيد.
مرحله 7 – پيكربندي تجديد گواهي Let’s Encrypt
در اين مرحله آخر ، گواهينامه هاي SSL خود را كه توسط Let’s Encrypt تهيه شده است پيكربندي مي كنيد تا هر 90 روز يكبار به طور خودكار تمديد شود و سپس سرور مجازي را مجدداً ريستارت كنيد تا گواهي هاي جديد لود شود.
در حالي كه Certbot از تجديد گواهينامه هاي نصب شما مراقبت مي كند ، به طور خودكار سرور مجازي مجدداً راه اندازي نمي شود. براي پيكربندي سرور مجازي براي راه اندازي مجدد با گواهينامه هاي جديد ، بايد يك پيكربندي جديد براي تنظيمات Certbot براي سرور مجازي خود تهيه كنيد.
بايد فايل /etc/letsencrypt/renewal/your_domain.conf را ويرايش كرده و يك فايل تازه را به انتهاي فايل پيكربندي اضافه كنيد.
ابتدا از دستور زير براي باز كردن فايل /etc/letsencrypt/renewal/your_domain.conf در ويرايشگر استفاده كنيد:
- $ sudo nano /etc/letsencrypt/renewal/your_domain.conf
سپس در انتهاي اين فايل موارد زير را اضافه كنيد
/etc/letsencrypt/renewal/your_domain.conf
…
renew_hook = systemctl reload jupyterlab
فايل را ذخيره كنيد و از آن خارج شويد.
در آخر ، دور جديدي از روند تجديد را اجرا كنيد تا صحت اعتبار فايل پيكربندي شما تاييد شود:
- $ sudo certbot renew –dry-run
اگر اين دستور بدون خطا اجرا شود ، تجديد Certbot شما با موفقيت تنظيم شده است و هنگامي كه گواهي نزديك به تاريخ انقضا است ، سرور مجازي خود را به طور خودكار تمديد و ريستارت مي كنيد.
نتيجه
در اين مقاله ، شما يك محيط JupyterLab را بر روي سرور مجازي خود تنظيم كرده و آن را از راه دور در دسترس قرار داده ايد. اكنون مي توانيد از هر مرورگري به پروژه هاي يادگيري ماشين يا علوم داده خود دسترسي داشته باشيد و مطمئن باشيد كه تمام تبادلات با رمزگذاري SSL در محل اتفاق مي افتد. در كنار آن ، محيط شما داراي تمام مزاياي سرور مجازيهاي مبتني بر ابر ميباشد.
نحوه استفاده از Traefik به عنوان پروكسي معكوس براي كانتينرهاي Docker در اوبونتو 20.04
نحوه نصب و ايمن سازي Redis در Centos7
چگونه مي توان محيط JupyterLab را در اوبونتو 18.04 تنظيم كرد
نحوه نصب Webmin در Ubuntu 20.04
نحوه بازنويسي آدرس هاي اينترنتي با mod_rewrite براي Apache در اوبونتو 20.04
نحوه مديريت چندين سرور با دستورات Ad Hoc Ansible
چگونه مي توان REST API را با Prisma و PostgreSQL ساخت
نحوه ميزباني وب سايت با استفاده از Cloudflare و Nginx در اوبونتو 18.04
نحوه استفاده از Traefik به عنوان پروكسي معكوس براي كانتينرهاي Docker در Ubuntu 18.04
خريد vps – خريد سرور مجازي – خريد سرور – سرور هلند – فروش vps – سرور مجازي آمريكا – خريدvps – سرور مجازي هلند – فروش سرور مجازي – سرور آمريكا – vps – سرور مجازي انگليس – سرور مجازي آلمان – سرور مجازي كانادا – خريد vps آمريكا – خريد وي پي اس – سرور – خريد سرور مجازي هلند – vps خريد – سرور مجازي فرانسه – سرور مجازي هلند – خريد vps آمريكا – خريد سرور مجازي ارزان هلند – vps – خريد vps هلند – خريد سرور مجازي آمريكا – خريد vps فرانسه – تست vps – سرور مجازي تست – سرور مجازي ويندوز – ارزانترين vps – خريد وي پي اس – vps ارزان –