Swoole實驗室:5-使用Systemctl管理Swoole服務
Swoole實驗室:5-使用Systemctl管理Swoole服務
2018年10月17日 20:19 helloweba.net 作者:月光光 標籤:PHP ofollow,noindex" target="_blank">Swoole
我們把Swoole主服務程式做成系統服務後,這個服務一般是在後臺執行的,如我們之前的郵件服務和聊天服務,我們希望把這些服務新增到系統環境中,可以隨機器自啟動,可以管理swoole服務的啟動、停止和重啟服務。
前言
我們在之前的Swoole實驗室中的幾個例子中,如果要啟動swoole服務,需要手動執行程式碼如: php chatServer.php
,這樣就啟動了聊天服務端。那如果我們要停止Swoole服務呢?我們可以使用 kill -9 <pid>
, pid對應的是swoole服務的主程序。這樣操作起來比較麻煩,而且可能導致swoole子程序殺不掉的情況。
我們需要一個可以用來管理swoole服務狀態的工具或指令碼,幸運的是,在CentOS7上我們可以使用Systemctl來輕鬆管理Swoole服務。
Systemctl配置說明
CentOS7的服務systemctl指令碼存放在:/usr/lib/systemd/,服務又分為系統服務(system)和使用者服務(user),需要開機不登陸就能執行的程式,存在系統服務裡,即:/usr/lib/systemd/system目錄下。
CentOS7的每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install],結構和說明可以參照以下:
[Unit]部分主要是對這個服務的說明,內容包括Description和After,Description 用於描述服務,After用於描述服務類別 [Service]部分是服務的關鍵,是服務的一些具體執行引數的設定. Type=forking 是後臺執行的形式, User=users 是設定服務執行的使用者, Group=users 是設定服務執行的使用者組, PIDFile為存放PID的檔案路徑, ExecStart為服務的具體執行命令, ExecReload為重啟命令, ExecStop為停止命令, PrivateTmp=True表示給服務分配獨立的臨時空間 [Install]部分是服務安裝的相關設定,可設定為多使用者的
注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯!
配置Swoole服務
有了Systemctl,我們可以輕鬆配置我們的Swoole服務,下面以Swoole聊天服務為例:
首先在/usr/lib/systemd/system/目錄下,新建檔案swoolechat.service,並加入以下程式碼:
[Unit] Description=Swoole Chat Server After=network.target syslog.target [Service] Type=forking LimitNOFILE=65535 ExecStart=/usr/local/php/bin/php /home/web/swoole/public/chatServer.php ExecReload=/bin/kill -USR1 $MAINPID Restart=always [Install] WantedBy=multi-user.target graphical.target
然後儲存好檔案,並使用如下命令重新載入所有的[Unit]檔案,確保我們新增進去的service能被系統載入並生效。
systemctldaemon-reload
驗證
現在我們來驗證服務,首先啟動swoole服務:
systemctl start swoolechat.service
然後使用以下命令檢視swoole服務是否正常:
systemctl status swoolechat.service
如果看到如下圖綠色的 active (running)
字樣,那麼恭喜你服務啟動成功了。

netstat -lntp
停止、重啟swoole服務:
systemctl stop|restart swoolechat.service
現在你就可以設定開機啟動swoole服務了:
systemctl enable swoolechat.service
綜上,我們可以使用命令輕鬆管理Swoole服務了。
宣告: 本文為原創文章,helloweba.net和作者擁有版權,如需轉載,請註明來源於helloweba.net並保留原文連結:https://www.helloweba.net/php/587.html