本文最后更新于 2024-11-28,文章内容可能已经过时,请注意发布时间。

前言

根据官方所说,目前1Panel是不支持该功能的,所以只能够自行在镜像中安装 Supervisor ,在官方论坛中,我貌似找到了临时的解决方法

https://bbs.fit2cloud.com/t/topic/8266/2

根据这里,我们来整理一下具体的操作流程。

一、下载镜像包

在官方给出的回复中,我们可以找到一个github链接

https://github.com/zhengkunwang223/php/blob/main/php8.zip

当然,访问慢的同学我也准备了一个已经下载好的压缩包供大家下载,php8.zip

二、部署并创建环境

第一步:

上传并解压文件

下载后可以把他上传到 /opt/1panel/resource/apps/local 目录,并解压。

第二步:同步应用

第三步:创建运行环境

到了创建运行环境这里,会发现我们上传的镜像在选择框中了,如果没有出现的话仔细核对之前的步骤是否有误

第四步:创建网站

使用我们刚刚制作好的镜像来创建一个php网站

三、配置Supervisor

第一步:进入安装目录

进入应用商城,点击已安装,找到我们刚刚创建的网站,进入安装目录

会看到这个目录

进入 supervisor 目录会看到他的配置文件

第二部:创建配置文件

supervisor.d目录下的文件

里面的配置

[program:lq_queue_worker]
; 命令所在目录,对应你要求的 /www/sites/网站/index/根目录
directory = /www/sites/
; 要执行的命令以laravel为例
command = php artisan queue:work
; 进程的用户,根据实际情况修改,例如 www-data 等,如果不清楚可保持默认或先使用 root(不推荐长期用 root)
user = root
; 进程数量,一般队列工作进程可以根据实际情况设置合适的数量,这里先设为 1
numprocs = 1
; 进程启动的优先级,数字越大优先级越低,这里设为常规的 999
priority = 999
; 是否自动启动,设为 true 则随 supervisord 启动而启动该进程
autostart = true
; 进程意外退出是否自动重启,设为 true 则自动重启
autorestart = true
; 启动进程时等待的秒数,可按需设置
startsecs = 5
; 标准输出日志文件路径,可根据实际修改存放位置和文件名
stdout_logfile = /var/log/supervisor/lq_queue_work.log
; 标准错误输出日志文件路径,可与标准输出设置为同一个,便于查看错误信息
stderr_logfile = /var/log/supervisor/lq_queue_work.log
; 进程运行的环境变量,可以在这里添加特定的环境变量设置(如果有需要),例如数据库连接相关等,示例如下(如果不需要可不添加)
; environment=DB_CONNECTION=mysql,DB_HOST=127.0.0.1,DB_PORT=3306,DB_DATABASE=your_database,DB_USERNAME=your_username,DB_PASSWORD=your_password

第四步:重载配置

进入容器,使用这两个命令来重载配置

supervisorctl reread
supervisorctl update

然后查看状态,running就是正在运行

supervisorctl status

第四步,查看日志

启动成功后,来到log目录来查看我们的日志是否有正常记录

进入log后可以看到我们的进程是已经记录日志的

查看一下日志,在这里我们之前没有修改执行命令的路径,所以报错了,后面的可以看到,进程是正常执行了

supervisor: couldn't chdir to /www/lq: ENOENT
supervisor: child process was not spawned
supervisor: couldn't chdir to /www/lq: ENOENT
supervisor: child process was not spawned
supervisor: couldn't chdir to /www/lq: ENOENT
supervisor: child process was not spawned
supervisor: couldn't chdir to /www/lq: ENOENT
supervisor: child process was not spawned
  2024-11-28 05:06:44 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:06:44 App\Jobs\TestJobs ......................... 69.54ms DONE
  2024-11-28 05:06:44 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:06:44 App\Jobs\TestJobs ......................... 64.11ms DONE
  2024-11-28 05:06:44 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:06:44 App\Jobs\TestJobs ......................... 60.81ms DONE
  2024-11-28 05:06:44 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:06:44 App\Jobs\TestJobs ......................... 52.40ms DONE
  2024-11-28 05:06:45 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:06:45 App\Jobs\TestJobs ......................... 47.17ms DONE
  2024-11-28 05:06:45 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:06:45 App\Jobs\TestJobs ......................... 57.25ms DONE
  2024-11-28 05:08:09 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:08:09 App\Jobs\TestJobs ......................... 77.03ms DONE
  2024-11-28 05:08:09 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:08:10 App\Jobs\TestJobs ......................... 46.06ms DONE
  2024-11-28 05:08:10 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:08:10 App\Jobs\TestJobs ......................... 43.68ms DONE
  2024-11-28 05:09:10 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:09:10 App\Jobs\TestJobs ........................ 115.91ms DONE
  2024-11-28 05:09:16 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:09:16 App\Jobs\TestJobs ......................... 76.54ms DONE
  2024-11-28 05:10:11 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:10:11 App\Jobs\TestJobs ......................... 71.93ms DONE
  2024-11-28 05:10:11 App\Jobs\TestJobs .............................. RUNNING
  2024-11-28 05:10:11 App\Jobs\TestJobs ......................... 65.56ms DONE

结语

这个工具可以帮助我们便捷的实现进程守护和监控,还是非常好用的。

根据官方成员给出的预估,大概在v2版本的1panel会支持容器内的进程守护配置,我是非常期待的,希望1panel能够和雷总一样,用行动证明友商是傻逼哈哈哈哈哈哈!