使用systemd管理swoole服務

Systemd 是 Linux 系統中新一代的初始化系統(init),它主要的設計目標是克服 sysvinit 固有的缺點,提高系統的啓動速度。很多新的Linux發行版已經使用Systemd取代了init,作爲初始守護進程。

Swoole的服務器程序可以編寫一段service腳本,交由systemd進行管理。實現故障重啓、開機自啓動等功能。

編寫Service腳本

Systemd的Service配置在/etc/systemd/system/目錄中,可以創建一個echo.service文件,實際項目應當改爲對應的名稱。編輯此文件,添加下列內容:

[Unit]
Description=Echo Http Server
After=network.target
After=syslog.target

[Service]
Type=simple
LimitNOFILE=65535
ExecStart=/usr/bin/php /opt/servers/echo/server.php
ExecReload=/bin/kill -USR1 $MAINPID
Restart=always

[Install]
WantedBy=multi-user.target graphical.target
  • After 指令約定了啓動的順序,必須在networksyslog啓動後才啓動echo服務
  • Service中填寫了應用程序的路徑信息,請修改爲實際項目對應的路徑
  • Restart=always 表示如果進程掛掉會自動拉起
  • WantedBy 約定了在哪些環境下啓動,multi-user.target graphical.target表示在圖形界面和命令行環境都會啓動

編寫完成後需要reload守護進程使其生效

sudo systemctl --system daemon-reload

程序代碼

$http = new swoole_http_server("0.0.0.0", 9501);

$http->on('request', function ($request, $response) {
    $response->header("Content-Type", "text/html; charset=utf-8");
    $response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");
});

$http->start();

管理服務

#啓動服務
sudo systemctl start echo.service
#reload服務
sudo systemctl reload echo.service
#關閉服務
sudo systemctl stop echo.service

查看服務狀態

sudo systemctl status echo.service

echo.serviceç¶æ

 

轉載:https://wiki.swoole.com/wiki/page/699.html

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章