Linux 系統啟動時自動運行 miniSIPServer

 (原文:請點擊

在以前的 Debian 系統,我們可以更新 rc.local 文件讓系統啟動時自動運行 miniSIPServer。不過目前的各版本 Debian 已經遷移到 systemd 方式進行管理,因此需要改用其他方式來實現。

首先能採用的方式是保留 rc.local,此時我們需要指示 systemd 激活“rc-local.service”,默認情況下沒有激活這個 service ,採用以下命令激活即可:

sudo systemctl enable rc-local

這種方式不是一個理想的方式,只能算權宜之計。因為要啟動 miniSIPServer, 我們可能不得不更改 rc-local.service,這有可能影響到其他通過同樣方式啟動的應用程序。

更合理、更好的方式當然是定義獨立的 minisipserver.service,由 systemd 單獨管理。實際上,這樣也是相當簡單。我們以樹莓派(Raspberry Pi)系統為例,指示 Pi 在系統啟動時以 “pi”用戶身份啟動 miniSIPServer 命令行程序。

我們在目錄“/lib/systemd/system”下創建“minisipserver.service”文件,內容如下:

[Unit]
Description=miniSIPServer
After=network.target mariadb.service
Requires=network.target mariadb.service

[Service]
Type=simple
GuesMainPID=no
User=pi
KillMode=process
ExecStart=/opt/sipserver/minisipserver-cli

[Install]
WantedBy=multi-user.target

然後使用以下命令激活:

sudo systemctl enable minisipserver

一旦激活了“minisipserver.service”,系統啟動或者重啟時,將自動運行 miniSIPServer 命令行程序。 

上述文件有兩個重要的節段:[Unit] 和[Service],我們再進一步解釋其中的內容。

Unit

點擊此處了解 systemd 關於 Unit 節段的詳細信息。  

我們關心“After=”和“Requires=”兩個參數。因為 miniSIPServer 是網絡應用程序,因此必然要求網絡要首先準備好,網絡沒準備好之前不應該啟動 miniSIPServer。在我們的環境中,miniSIPServer 同時也連接了 mariadb/mysql 數據庫,因此也要求在啟動之前必須準備好數據庫系統。如果您的 miniSIPServer 並沒有連接數據庫,可以從上述兩個參數中刪除“mariadb.service”的內容。

Service

點擊此處了解 systemd 關於 Service 節段的詳細信息。  

我們關心“User=”和“ExecStart=”兩個參數。 “User=” 指示 systemd 以哪位用戶的身份(包括權限)去運行當前業務、啟動指定的程序。樹莓派系統默認的用戶是“pi”,因此我們將其也設置為“pi”即可,在您自己的 Linux 系統,您可以指定為自己實際的相關用戶。 miniSIPServer 默認安裝在“/opt/sipserver”目錄下,命令行程序為“minisipserver-cli”,因此設置“ExecStart=”參數指示 systemd 在啟動時找到、並運行該程序。

 

留言

此網誌的熱門文章

miniSIPServer 新 web 界面

在 Debian 12 (bookworm) 系統中運行 miniSIPServer

外線的 RequestURI 參數