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

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

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

我習(xí)慣將 notebooks 集中放置栅盲,這樣便于管理,同時(shí)可以方便地在各個(gè)設(shè)備上使用废恋,本文將討論在 Windows 10 環(huán)境下使用 Hyper-V 虛擬機(jī)按第5個(gè)方式安裝配置 Jupyter 服務(wù)谈秫, Hyper-V 提供了虛擬機(jī)自動后臺啟動,很方便我們在 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)

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

步驟:

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

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

使用 Pyenv 管理多版本 Python

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

首先安裝 Python 的依賴包拇囊,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é)請自行補(bǔ)課路捧。

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

創(chuàng)建工作目錄

mkdir notebooks

創(chuàng)建的 /home/musan/notebooks 這個(gè)目錄用來放置所有的 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 啟動的配置文件

jupyter notebook --generate-config

這個(gè)命令會在我們的工作目錄創(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 包,我們就可以開始愉快的玩耍了尝江。但是我是一個(gè)很懶的人涉波,我想要 jupyter notebook 自動跟隨系統(tǒng)啟動運(yùn)行。

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

接下來準(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ù)器

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

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

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

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

總結(jié)

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

參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扫俺,一起剝皮案震驚了整個(gè)濱河市苍苞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌狼纬,老刑警劉巖羹呵,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疗琉,居然都是意外死亡冈欢,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門盈简,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凑耻,“玉大人犯戏,你說我怎么就攤上這事∪埃” “怎么了先匪?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長弃衍。 經(jīng)常有香客問我呀非,道長,這世上最難降的妖魔是什么镜盯? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任岸裙,我火速辦了婚禮,結(jié)果婚禮上速缆,老公的妹妹穿的比我還像新娘降允。我一直安慰自己,他們只是感情好艺糜,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布剧董。 她就那樣靜靜地躺著,像睡著了一般破停。 火紅的嫁衣襯著肌膚如雪翅楼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天真慢,我揣著相機(jī)與錄音毅臊,去河邊找鬼。 笑死黑界,一個(gè)胖子當(dāng)著我的面吹牛管嬉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播朗鸠,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蚯撩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了童社?” 一聲冷哼從身側(cè)響起求厕,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤著隆,失蹤者是張志新(化名)和其女友劉穎扰楼,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體美浦,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弦赖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浦辨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹬竖。...
    茶點(diǎn)故事閱讀 40,615評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出币厕,到底是詐尸還是另有隱情列另,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布旦装,位于F島的核電站页衙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏阴绢。R本人自食惡果不足惜店乐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呻袭。 院中可真熱鬧眨八,春花似錦、人聲如沸左电。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽篓足。三九已至伏穆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纷纫,已是汗流浹背枕扫。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辱魁,地道東北人烟瞧。 一個(gè)月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像染簇,于是被迫代替她去往敵國和親参滴。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容