Centos 7 Systemd PHP啟動腳本

Centos 7 Systemd PHP啟動腳本

我有一個 PHP 腳本,我正在嘗試為其建立服務。我已經創建了該服務,但無法啟動它。奇怪的是,完全相同的服務單元在我相同設定的另一台伺服器上工作。 PHP 腳本設定為使用 -d 開關以守護程式方式運作。該命令本身工作得很好,但不能透過 systemd 工作。

這就是我得到的

● serverio.service - Socket Server Service
   Loaded: loaded (/etc/systemd/system/multi-user.target.wants/serverio.service)
   Active: inactive (dead) since Wed 2017-01-18 23:41:49 UTC; 2s ago
  Process: 22921 ExecStop=/usr/bin/php /opt/sockets/server.php stop (code=exited, status=0/SUCCESS)
  Process: 22917 ExecStart=/usr/bin/php /opt/sockets/server.php start -d (code=exited, status=0/SUCCESS)
 Main PID: 22917 (code=exited, status=0/SUCCESS)

Jan 18 23:41:49 hostname systemd[1]: Started SocketIO Server Service.
Jan 18 23:41:49 hostname systemd[1]: Starting SocketIO Server Service...

這是我的服務文件。

[Unit]
Description=SocketIO Server Service

[Service]
Type=simple
PIDFile=/opt/sockets/phpio.pid
ExecStart=/usr/bin/php /opt/sockets/server.php start -d
ExecStop=/usr/bin/php /opt/sockets/server.php stop

[Install]
WantedBy=multi-user.target

知道如何讓它發揮作用嗎?

答案1

如果兩台伺服器上的所有設定都相同,請查看套接字權限

答案2

使用系統守護程式自己的程式是一種反模式。建議刪除守護程式選項。

然後,由於您沒有進行守護進程,因此您不需要該PidFile=選項。

另外,您不需要包含Type=simple,因為該simple類型是預設類型。

最後,您可能不需要該ExecStop=線路,因為systemd它將停止為您服務。搜尋ExecStop=inman systemd.service以檢查其行為方式的詳細信息,或嘗試一下。

關於為什麼服務在你的服務上運作:兩台伺服器之間肯定存在一些環境差異。如果systemd單元檔案相同,則問題一定出在其他地方。檢查您的服務在嘗試啟動時產生的日誌。

相關內容