虛擬環境上的jupyterhub開機啟動設置


為了讓jupyterhub 開機啟動,或者以服務的方式啟動,折騰了好久。
環境

ubuntu 16.04
anaconda >= 4.5
python35
jupyterhub 0.9.4
node 6.14.4
背景
jupyterhub 安裝在 conda的虛擬環境中 只有進入該虛擬環境中才能執行jupyterhub命令
建立的腳本可以啟動jupyterhub
#!/bin/bash -l
conda activate python35
cd /etc/jupyterhub
jupyterhub -f /etc/jupyterhub/jupyterhub_config.py >> /etc/jupyterhub/jupyter.log
bash 一定要加-l 目的是以login shell 的方式登錄,否則系統可能無法識別conda命令,因為conda4.4后的版本將命令的配置放到了/etc/profile.d/conda.sh中,只有login shell登錄的時候才會執行該文件,系統才會識別到conda命令。大家可能會比較疑惑,為什么用conda activate而不用source activate 這樣是不行的,因為我們要放到開機啟動項或者服務啟動項中,這兩種方法識別到的source 是linux系統的source,就是用來更新文件狀態的那個命令,通常我們更改系統的配置文件比如/etc/profile /etc/bash.bashrc后用source命令更新,所以在開機啟動或者啟動服務的時候bash 將source 識別成這個更新文件的命令,導致出錯

問題
每次啟動的上面的腳本時需要用./name.sh或者 bash name.sh來執行,且當我們關掉自己的命令行時jupyterhub服務也就會關掉,也就是沒辦法后台運行。
解決方案
將上面的腳本文件作為開機啟動項,讓其開機自起(只有重啟機器才會生效)
將上面的腳本作為服務(類似於 ssh server),可以通過service或systemctl等服務管理命令控制(不必重啟機器,靈活,可控)
加入到開機啟動項中
參考鏈接原理比較詳細的鏈接 只要腳本沒問題,即可執行,但問題是腳本一旦有問題,服務就不會被啟動,且我們也不知道出錯在哪。比如說,我們不知道該腳本執行的順序是在加載用戶配置之前還是之后執行,如果在用戶配置PATH等配置之前就執行,那么用戶的某些命令就無法執行比如conda, node configurable-http-proxy這三個命令都和jupyterhub相關,如果我們寫的腳本在加載用戶配置之前就執行,肯定是不行的,所以我們盡量不采用這種方法

寫到服務中
我們的機器是ubuntu 16.04可以中systemctl管理服務

在/etc/systemd/system/下建立一個名為jupyterhub.service的服務配置文件,名字是jupyterhub后綴是.service,名字可以自己隨便命名,該名字就是以后用systemctl 或 service配置的服務名
在jupyterhub.service文件中寫入下面的命令
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
[Unit]
Description=jupyterhub (隨便起個名字)
After=syslog.target network.target (在網絡服務啟動后啟動該腳本)
[Service]
User=root
ExecStart=/etc/jupyterhub/jupyterhub.sh (腳本地址)
[Install]
WantedBy=default.target
上面的配置是系統服務配置文件最簡單的寫法改一下就可以了。

在終端中執行 systemctl start jupyterhub 啟動服務
查看服務運行狀態 systemctl status jupyterhub
通常會出錯
如果提示 node configurable-http-proxy 錯誤,找不到文件等等,那原因就是服務的優先級在系統配置之前,也就是我們配置的node的PATH沒有被識別,所以我最終將node的PATH配置放到了/etc/profile中成功了,之前放到了/etc/bash.bashrc中並不能識別
服務可以成功啟動,執行systemctl enable jupyterhub允許開機自啟動
以上就是走過的坑,希望大家在和我一樣的環境下能避免這些坑。
————————————————
版權聲明:本文為CSDN博主「小豬嘎嘎」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/luoluonuoyasuolong/article/details/88815887


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM