在生產(chǎn)環(huán)境中想對webman程序進(jìn)程開啟自啟、掛了自動重啟,所以使用supervisord進(jìn)行管理,但是在supervisodr配置中,使用php webman.phar start -d
后臺啟動時,supervisor報錯,似乎不支持,改成php webman.phar start
,則正常守護webman.phar進(jìn)程。
如果在生產(chǎn)環(huán)境中對webman.phar使用debug模式,是否會有安全隱患?
supervisor配置:
[program:webman-program]
process_name=webman-program
directory=/data/programs
command= /usr/local/bin/php8 webman.phar start # 正常
# command= /usr/local/bin/php8 webman.phar start -d # 報錯
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile=/var/log/supervisor/webman-program.log
supervisor中command配置debug運行時,正確啟動,啟動日志信息:
Workerman[webman.phar] start in DEBUG mode
------------------------------------------- WORKERMAN -------------------------------------------
Workerman version:4.1.9 PHP version:8.0.28 Event-Loop:\Workerman\Events\Event
-------------------------------------------- WORKERS --------------------------------------------
proto user worker listen processes status
tcp www-data webman-program http://0.0.0.0:8887 10 [OK]
tcp www-data monitor none 1 [OK]
tcp www-data rpc text://0.0.0.0:8888 20 [OK]
tcp www-data nlp-sync-task text://127.0.0.1:8889 10 [OK]
-------------------------------------------------------------------------------------------------
Press Ctrl+C to stop. Start success.
supervisor中command配置DAEMON運行時,錯誤啟動,啟動日志信息:
Workerman[webman.phar] start in DAEMON mode
如果使用外部程序做守護進(jìn)程需要使用debug模式啟動。
debug方式與daemon方式的區(qū)別在于是否開啟守護進(jìn)程及文件更新自動reload。
正式環(huán)境需要在代碼完全更新后再執(zhí)行reload。
把 config/process.php 里 monitor.options.enable_file_monitor 設(shè)置為false,不監(jiān)控文件更新自動reload。避免發(fā)版本文件更新一半時自動reload文件加載不全導(dǎo)致報錯。
其它沒有沒有什么問題。
我怎么沒找到這個文件跟參數(shù):monitor.options.enable_file_monitor,我用集群的方式分別部署register,gateway,worker,然后想用supervisor來控制進(jìn)程,不知道會不會出現(xiàn)未知問題,用php start.php start/stop/restart經(jīng)常會出現(xiàn)進(jìn)程沒退出
可能你的webman骨架版本比較老。如果用了supervisor來守護進(jìn)程,php start.php stop 后supervisor可能會重新拉起,導(dǎo)致進(jìn)程還在
也可能是業(yè)務(wù)用了 pnctl_fork popen exec 之類的函數(shù),創(chuàng)建了新進(jìn)程沒關(guān)閉導(dǎo)致的