[Linux] 使用Systemctl啟動服務Service
現在要把開發好的程式,在Linux系統上自動啟動,可以透過Systemctl來管理,剛好最近的工作需要用到,就來邊紀錄使用過程,順便給需要的人作參考。
首先我們先查查一下Systemctl是什麼東西,在鳥哥的Linux私房菜第十七章很詳細地介紹系統服務,先來了解一下。 看過鳥哥很詳細的地介紹後,知道了整個來龍去脈,以下開始利用一個簡單的範例來做看看。
1. 準備好要執行的程式
利用一個簡單的websocket server的範例程式,我是用Python的套件SimpleWebSocketServer提供的範例程式,再用pyinstaller打包成一個執行檔 (pyinstaller打包教學),來當作我們服務的主程式。
2. 將範例程式放到/opt
大家可能會問為什麼要把執行的檔案放到/opt呢?因為這裡頭是我們一般應用程式所放的路徑,避免像放到/usr/bin之類的資料夾與系統程式有所衝突,我把剛剛產生的執行檔放到 /opt/websocket_servet/bin。
3. 製作service檔,並放至/lib/systemd/system/
製作一個websocket_server.service檔案,內容如下:
[Unit]
Description=Simple Websocket Server
Documentation=https://github.com/dpallot/simple-websocket-server
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/opt/websocket_server/bin/websocket_server #主程式執行的位置
Restart=on-failure #程式死掉自動重新啟動
[Install]
WantedBy=multi-user.target
4. Systemctl啟動服務
systemctl daemon-reload // 重新載入設定檔
systemctl enable websocket_server // 下次開機就會自動啟動websocket_server
systemctl restart websocket_server // 啟動websocket_server
5. Systemctl停止服務
systemctl stop websocket_server // 停止websocket_server
systemctl disable websocket_server // 下次開機就不會啟動websocket_server
rm -f /lib/systemd/system/websocket_server.service //刪除設定檔會更乾淨
以上就是建立service的步驟,接下來我們把這些步驟寫成script,幫我們把檔案放到正確的位置,並且開啟服務或是關閉,以便於之後的管理維護,先檢視一下剛剛所用到的檔案如下:
執行檔:bin/websocket_server
服務設定檔: websocket_server.service
啟動安裝: post_install.sh
關閉解除: post_remove.sh
現在來交代一下post_install.sh跟post_remove.sh
post_install.sh:
cp -rf ../websocket_server /opt/
cp -f websocket_server.service /lib/systemd/system/
systemctl daemon-reload
systemctl enable websocket_server
systemctl restart websocket_server
post_remove.sh:
systemctl stop websocket_server
systemctl disable websocket_server
rm -f /lib/systemd/system/websocket_server.service
rm -rf /opt/websocket_server
接下來就簡單了,馬上來驗證和測試了,準備收工:
sudo ./post_install.sh //搬檔案到正確位置並啟動服務
sudo systemctl status websocket_server //檢查服務是否正確啟動
成功的結果如下:
sudo ./post_remove.sh //停止服務並刪除檔案
sudo systemctl status websocket_server
成功的結果如下:
首先我們先查查一下Systemctl是什麼東西,在鳥哥的Linux私房菜第十七章很詳細地介紹系統服務,先來了解一下。 看過鳥哥很詳細的地介紹後,知道了整個來龍去脈,以下開始利用一個簡單的範例來做看看。
1. 準備好要執行的程式
利用一個簡單的websocket server的範例程式,我是用Python的套件SimpleWebSocketServer提供的範例程式,再用pyinstaller打包成一個執行檔 (pyinstaller打包教學),來當作我們服務的主程式。
2. 將範例程式放到/opt
大家可能會問為什麼要把執行的檔案放到/opt呢?因為這裡頭是我們一般應用程式所放的路徑,避免像放到/usr/bin之類的資料夾與系統程式有所衝突,我把剛剛產生的執行檔放到 /opt/websocket_servet/bin。
3. 製作service檔,並放至/lib/systemd/system/
製作一個websocket_server.service檔案,內容如下:
[Unit]
Description=Simple Websocket Server
Documentation=https://github.com/dpallot/simple-websocket-server
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/opt/websocket_server/bin/websocket_server #主程式執行的位置
Restart=on-failure #程式死掉自動重新啟動
[Install]
WantedBy=multi-user.target
4. Systemctl啟動服務
systemctl daemon-reload // 重新載入設定檔
systemctl enable websocket_server // 下次開機就會自動啟動websocket_server
systemctl restart websocket_server // 啟動websocket_server
5. Systemctl停止服務
systemctl stop websocket_server // 停止websocket_server
systemctl disable websocket_server // 下次開機就不會啟動websocket_server
rm -f /lib/systemd/system/websocket_server.service //刪除設定檔會更乾淨
以上就是建立service的步驟,接下來我們把這些步驟寫成script,幫我們把檔案放到正確的位置,並且開啟服務或是關閉,以便於之後的管理維護,先檢視一下剛剛所用到的檔案如下:
執行檔:bin/websocket_server
服務設定檔: websocket_server.service
啟動安裝: post_install.sh
關閉解除: post_remove.sh
現在來交代一下post_install.sh跟post_remove.sh
post_install.sh:
cp -rf ../websocket_server /opt/
cp -f websocket_server.service /lib/systemd/system/
systemctl daemon-reload
systemctl enable websocket_server
systemctl restart websocket_server
post_remove.sh:
systemctl stop websocket_server
systemctl disable websocket_server
rm -f /lib/systemd/system/websocket_server.service
rm -rf /opt/websocket_server
接下來就簡單了,馬上來驗證和測試了,準備收工:
sudo ./post_install.sh //搬檔案到正確位置並啟動服務
sudo systemctl status websocket_server //檢查服務是否正確啟動
成功的結果如下:
sudo ./post_remove.sh //停止服務並刪除檔案
sudo systemctl status websocket_server
成功的結果如下:
受教了~~~讚
回覆刪除