我知道你們會(huì)用 Jupyter notebook 但你會(huì)配置 Jupyter 服務(wù)嗎?

任何學(xué)習(xí) Python 的同學(xué)都知道 Jupyter notebook (以前叫 Ipython notebook)這個(gè)強(qiáng)大的工具。當(dāng)我們需要進(jìn)行一些實(shí)驗(yàn)性的演示編碼時(shí),它提供了超級(jí)便利。第一次用過(guò)后我便喜歡上它,成為手頭不可或缺的工具庫(kù)成員。通常我們會(huì)這樣來(lái)使用它:

  1. 在各臺(tái)機(jī)器上啟動(dòng) jupyter-notebook,登陸不同設(shè)備再重復(fù)這個(gè)過(guò)程
  2. 在遠(yuǎn)程服務(wù)器上安裝設(shè)置 jupyter 然后啟動(dòng) jupyter-notebook(通常在命令行或者 tmux 會(huì)話里),下次登陸再重復(fù)這個(gè)過(guò)程
  3. 或者在 Docker 鏡像里重復(fù)上一步
  4. 使用 Azure Notebooks
  5. 將它設(shè)置成服務(wù)器后臺(tái)服務(wù),需要你對(duì)系統(tǒng)有管理員權(quán)限

我習(xí)慣將 notebooks 集中放置,這樣便于管理,同時(shí)可以方便地在各個(gè)設(shè)備上使用,本文將討論在 Windows 10 環(huán)境下使用 Hyper-V 虛擬機(jī)按第5個(gè)方式安裝配置 Jupyter 服務(wù), Hyper-V 提供了虛擬機(jī)自動(dòng)后臺(tái)啟動(dòng),很方便我們?cè)?Linux 服務(wù)器環(huán)境下的實(shí)驗(yàn)和學(xué)習(xí)。下面將按照相關(guān)步驟完成 Jupyter 服務(wù)的安裝和配置。

系統(tǒng)環(huán)境:

  • Centos7 系統(tǒng)并有 sudoer 權(quán)限
  • Python3 最新版(3.7.2)

開(kāi)啟 Hyper-V 并創(chuàng)建 Centos7 虛擬機(jī)

步驟:

  • 開(kāi)啟 Hyper-V
  • 安裝 Centos7 虛擬機(jī)
  • 配置好虛擬機(jī)的靜態(tài) IP 地址

怎樣開(kāi)啟 Hyper-V 和安裝 Centos7 虛擬機(jī),同時(shí)配置好虛擬機(jī)的靜態(tài) IP 地址。這里就不再詳述,網(wǎng)上教程一大把,大家可以自行谷歌。

使用 Pyenv 管理多版本 Python

Centos7 自帶的 Python3 版本比較舊,學(xué)習(xí)和實(shí)驗(yàn)自然選最新的版本了,pyenv 這個(gè)工具滿足了我們這個(gè)需求。

首先安裝 Python 的依賴(lài)包,Pyenv 編譯 Python 時(shí)需要用到:

sudo yum -y groupinstall "Development tools"

sudo yum -y install  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel  gdbm-devel  xz-devel libffi-devel uuid-devel libuuid-devel tcl-devel

安裝和配置 Pyenv

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

如果使用 zsh 改成以下命令:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshenv
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshenv
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshenv

最后執(zhí)行:

exec "$SHELL"

?  ~ pyenv help
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme

這樣我們的 Pyenv 環(huán)境就安裝好了。下面就是安裝最新版的 Python3:

?  ~ pyenv install -v 3.7.2

?  ~ pyenv rehash

?  ~ pyenv versions
* system
  3.7.2 (set by /home/musan/.pyenv/version)

?  ~ pyenv global 3.7.2

?  ~ pyenv versions
  system
* 3.7.2 (set by /home/musan/.pyenv/version)

?  ~ python -V
Python 3.7.2
?  ~ pip -V
pip 18.1 from /home/musan/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pip (python 3.7)
?  ~

現(xiàn)在我們的 Python 3.7.2 環(huán)境安裝好了,剩下的就是 pip 安裝需要的包:notebook。不熟悉 pyenv 的同學(xué)請(qǐng)自行補(bǔ)課。

配置 jupyter-notebook 服務(wù)器

創(chuàng)建工作目錄

mkdir notebooks

創(chuàng)建的 /home/musan/notebooks 這個(gè)目錄用來(lái)放置所有的 notebooks 文檔。
下面創(chuàng)建登陸密碼:

 ~ python
Python 3.7.2 (default, Dec 26 2018, 15:30:15)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from notebook.auth import passwd
>>> passwd()
Enter password:
Verify password:
'sha1:8ba6ed3ed711:8b9253b89af83513c9fe61bae8fbf2f3cd027a30'
>>>

下面準(zhǔn)備好 jupyter 啟動(dòng)的配置文件

jupyter notebook --generate-config

這個(gè)命令會(huì)在我們的工作目錄創(chuàng)建一個(gè) ~/.jupyter/jupyter_notebook_config.py 配置文件,我們根據(jù)需要修改以下配置項(xiàng):

c.NotebookApp.port = 8888
c.NotebookApp.ip = '0.0.0.0'  # 這里使用默認(rèn)的 8888
c.NotebookApp.password = 'sha1:8ba6ed3ed711:8b9253b89af83513c9fe61bae8fbf2f3cd027a30'  # 這個(gè)就是我們上面生成的密碼
c.NotebookApp.notebook_dir = '/home/musan/notebooks'

將 jupyter-notebook 加入服務(wù)列表

準(zhǔn)備好 Python 環(huán)境后,接著安裝好相應(yīng)的 jupyter 包,我們就可以開(kāi)始愉快的玩耍了。但是我是一個(gè)很懶的人,我想要 jupyter notebook 自動(dòng)跟隨系統(tǒng)啟動(dòng)運(yùn)行。

sudo vi /usr/lib/systemd/system/jupyter.service

接下來(lái)準(zhǔn)備

[Unit]
Description=Juyper-NoteBook

[Service]
Tpye=simple
PIDFile=/var/run/jupyter.pid
ExecStart=/home/musan/.pyenv/shims/jupyter-notebook --no-browser
WorkingDirectory=/home/musan/notebooks
User=musan
Group=musan

[Install]
WantedBy=multi-user.target%

配置 centos 防火墻端口,讓我們可以遠(yuǎn)程訪問(wèn)服務(wù)器

sudo chmod 644 /usr/lib/systemd/system/jupyter.service

sudo firewall-cmd --zone=public --add-port=8888/tcp --permanent  # 端口根據(jù)你上面的配置文件里的端口號(hào),這里使用默認(rèn)的 8888
sudo firewall-cmd --reload

將 jupyter-notebook 加入系統(tǒng)服務(wù)列表并啟動(dòng)后臺(tái)服務(wù)

sudo systemctl daemon-reload
sudo systemctl enable jupyter
sudo systemctl start jupyter
jupyter.png

總結(jié)

到此,Jupyter 服務(wù)已經(jīng)配置好了,它將跟隨系統(tǒng)一起后臺(tái)啟動(dòng),所有的 notebook 文檔都規(guī)整在統(tǒng)一的文件夾里,強(qiáng)迫癥減輕了不少 :)。本文主要介紹了 centos7 下使用最新版的 Python 方法,如何配置自定義服務(wù)的幾個(gè)步驟和要點(diǎn),介紹了 systemd 系統(tǒng)管理 xxxx.service 配置文件的創(chuàng)建,舉一反三,今后再也不用去重復(fù)手動(dòng)啟動(dòng)后臺(tái)程序了。

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容