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
指令約定了啓動的順序,必須在network
和syslog
啓動後才啓動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
轉載:https://wiki.swoole.com/wiki/page/699.html