• supervisor进程管理 ——k8s从入门到高并发系列教程(十一)


    现在我们容器内运行的进程有 php-fpm、nginx、php-fpm-exporter、nginx-prometheus-exporter,为了方便的管理和添加容器内的进程,我们使用supervisor进行进程管理。最后让supervisor在前台运行

    我们的phpfpm镜像是基于debian系统的,安装supervisor命令为

    apt install -y supervisor

    supervisor前台运行的命令为

    supervisord -n -c /etc/supervisor/supervisord.conf

    supervisor每个进程项目的配置文件debian系统下为 /etc/supervisor/conf.d

    nginx

    nginx supervisor进程管理配置文件 supervisor-nginx.conf

    1. [program:nginx]
    2. command=nginx
    3. autostart=true
    4. autorestart=true
    5. priority=991
    6. stdout_events_enabled=true
    7. stderr_events_enabled=true
    8. stdout_logfile=/dev/stdout
    9. stdout_logfile_maxbytes=0
    10. stderr_logfile=/dev/stdout
    11. stderr_logfile_maxbytes=0

    php-fpm

    phpfpm supervisor进程管理配置文件supervisor-phpfpm.conf

    1. [program:php-fpm]
    2. command = php-fpm
    3. autostart=true
    4. autorestart=true
    5. priority=990
    6. stdout_logfile=/dev/stdout
    7. stdout_logfile_maxbytes=0
    8. stderr_logfile=/dev/stdout
    9. stderr_logfile_maxbytes=0

    php-fpm-exporter

    phpfpm-exporter supervisor进程管理配置文件supervisor-phpfpm-exporter.conf

    1. [program:php-fpm-exporter]
    2. command = /usr/local/bin/php-fpm-exporter --addr="0.0.0.0:9190" --fastcgi="tcp://127.0.0.1:9000/php_status"
    3. autostart=false
    4. autorestart=false
    5. priority=992
    6. stdout_logfile=/dev/stdout
    7. stdout_logfile_maxbytes=0
    8. stderr_logfile=/dev/stdout
    9. stderr_logfile_maxbytes=0

    phpfpm exporter默认没有自动启动,只有在需要启动的时候,通过命令让他启动

    启动命令为

    supervisorctl start php-fpm-exporter

    nginx-exporter

    nginx-exporter supervisor进程管理配置文件supervisor-nginx-exporter.conf

    1. [program:nginx-exporter]
    2. command=/usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri=http://127.0.0.1/stub_status
    3. autostart=false
    4. autorestart=false
    5. priority=993
    6. stdout_events_enabled=true
    7. stderr_events_enabled=true
    8. stdout_logfile=/dev/stdout
    9. stdout_logfile_maxbytes=0
    10. stderr_logfile=/dev/stdout
    11. stderr_logfile_maxbytes=0

    nginx exporter默认没有自动启动,只有在需要启动的时候,通过命令让他启动

    启动命令为

    supervisorctl start nginx-exporter

    踩坑踩坑踩坑踩坑踩坑踩坑踩坑

    如果这样做,supervisor会报错 phpfpm 和 nginx 必须要设置成前台启动

    nginx命令为

    command=nginx -g 'daemon off;'

    phpfpm命令为 

    command = php-fpm -F

    dockerfile文件的修改

    基于以上内容,我们的dockerfile文件修改为

    1. # 安装supervisor
    2. RUN apt install -y supervisor
    3. ADD conf/supervisor-nginx.conf /etc/supervisor/conf.d/nginx.conf
    4. ADD conf/supervisor-phpfpm.conf /etc/supervisor/conf.d/phpfpm.conf
    5. ADD conf/supervisor-phpfpm-exporter.conf /etc/supervisor/conf.d/phpfpm-exporter.conf
    6. ADD conf/supervisor-nginx-exporter.conf /etc/supervisor/conf.d/nginx-exporter.conf
    7. # 执行容器启动后的命令
    8. CMD ["supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]

  • 相关阅读:
    【面试系列】Java面试知识篇(五)
    [MySQL]视图、存储过程、触发器
    对graalvm、springboot3.0一些新特性的探究
    LeetCode Cookbook 数组习题(9)终篇
    SpringBoot工程打包与运行(Windows版)
    通义灵码-ai编码
    删除的流程
    软件测试/测试开发丨学会与 AI 对话,高效提升学习效率
    Spring 四种方式教你异步接口返回结果
    Vue3学习
  • 原文地址:https://blog.csdn.net/fanghailiang2016/article/details/126863710