Linux下supervisor nginx php-fpm配置 与 日志分割

nginx常用日志分割之一

server {
        listen       80;
        server_name  xxxxx;
 
        if ($time_iso8601 ~ "(\d{4}-\d{2}-\d{2})") {
            set $ymdt $1;
          }
         access_log  /usr/local/openresty/nginx/logs/host.access_$ymdt.log;
        location /hello {
         default_type text/html;
         content_by_lua_block {
             ngx.say("HelloWorld")
         }
     }
}

安装supervisor与配置

apt  install supervisor
生成配置文件
echo_supervisord_conf > /etc/supervisord.conf

配置 vim /usr/supervisor/supervisord.conf

最后一句话改为:

[include]
files = /usr/supervisor/supervisord.d/*.conf

 

配置文件 vim /usr/supervisor/supervisord.d/nginx.conf 

[program:nginx] ; 管理的子程序名字,要和项目有关联,不能乱写
command = /usr/local/nginx/sbin/nginx -g 'daemon off;'
#让监控的目标nginx在前台运行

priority=1 ; 数字越高,优先级越高(对不同进程而言)
numprocs=1 ; 启动几个进程
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启
startretries=10 ; 启动失败时的最多重试次数
exitcodes=0 ; 正常退出代码
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs=10 ; 发送SIGKILL前的等待时间
redirect_stderr=true ; 重定向stderr到stdout
stopasgroup=true ; 重要的设置,一起管理子进程
stdout_logfile_maxbytes=20MB ; 日志文件大小限制
stdout_logfile_backups=10 ; 日志文件备份数量
stdout_logfile =/usr/supervisor/logs/nginx-supervisor.log ;错误日志输出位置,目录要存在

nginx.conf

[program:nginx]
#脚本目录
directory=/usr/local/openresty/nginx
#脚本执行命令
command=/usr/local/openresty/nginx/sbin/nginx -g 'daemon off;'  -c /usr/local/openresty/nginx/conf/nginx.conf
#supervisor启动的时候是否随着同时启动,默认True
autostart=true
#当程序exit的时候,这个program不会自动重启,默认unexpected
#设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有>
#autorestart=unexpected
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
#startsecs=2
#日志输出
#stderr_logfile=/home/nftdigger/freeMinter/freeMinterVol_stderr.log
#stderr_logfile=/home/nftdigger/freeMinter/fm_supervisor_err.log
#脚本运行的用户身份
user = root
#把 stderr 重定向到 stdout,默认 false
#redirect_stderr = true
#stdout 日志文件大小,默认 50MB
#stdout_logfile_maxbytes = 0
#stdout 日志文件备份数
#stdout_logfile_backups = 10
#
###启动10秒后没有异常退出,就表示进程正常启动
startsecs = 5
#程序退出后自动重启
autorestart = true

php-fpm配置,注php-fpm需要去调后台执行配置  daemonize = yes

[program:php-fpm8.0]
#脚本目录
directory=/usr/sbin
#脚本执行命令
command=/usr/sbin/php-fpm8.0 -c /etc/php/8.0/fpm/php-fpm.conf
#supervisor启动的时候是否随着同时启动,默认True
autostart=true
#当程序exit的时候,这个program不会自动重启,默认unexpected
#设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有>
#autorestart=unexpected
#这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1
#startsecs=2
#日志输出
#stderr_logfile=/home/nftdigger/freeMinter/freeMinterVol_stderr.log
#stderr_logfile=/home/nftdigger/freeMinter/fm_supervisor_err.log
#脚本运行的用户身份
user = root
#把 stderr 重定向到 stdout,默认 false
#redirect_stderr = true
#stdout 日志文件大小,默认 50MB
#stdout_logfile_maxbytes = 0
#stdout 日志文件备份数
#stdout_logfile_backups = 10
#
##启动10秒后没有异常退出,就表示进程正常启动
startsecs = 5
#程序退出后自动重启
autorestart = true

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Docker 中运行 PHP 项目,需要进行以下步骤: 1. 创建 Dockerfile 在项目根目录中创建一个名为 Dockerfile 的文件,其中包含以下内容: ``` FROM php:7.4-fpm-alpine RUN apk --update add --no-cache nginx supervisor COPY ./config/nginx.conf /etc/nginx/nginx.conf COPY ./config/site.conf /etc/nginx/conf.d/default.conf COPY ./config/supervisord.conf /etc/supervisord.conf COPY ./src /var/www/html EXPOSE 80 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"] ``` 这个 Dockerfile 中,使用了基于 Alpine 的 PHP-FPM 镜像,并安装了 NginxSupervisor。然后将项目的 Nginx 配置文件、Supervisor 配置文件和 PHP 代码都复制到 Docker 容器中,并暴露了 80 端口。最后启动了 supervisord 进程。 2. 创建 Nginx 配置文件 在项目根目录中创建一个名为 config 的文件夹,并在其中创建一个名为 nginx.conf 的文件,用于配置 Nginx 的全局设置,例如 worker_processes、worker_connections 等。 然后在 config 文件夹中创建一个名为 site.conf 的文件,用于配置 Nginx 的虚拟主机。以下是一个简单的示例: ``` server { listen 80; server_name localhost; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params; } } ``` 其中,`root` 指定了 PHP 项目的根目录,`location` 块用于处理 PHP 请求。`fastcgi_pass` 指令指向了 PHP-FPM 的地址。 3. 创建 Supervisor 配置文件 在 config 文件夹中创建一个名为 supervisord.conf 的文件,用于配置 Supervisor 的进程。以下是一个简单的示例: ``` [supervisord] nodaemon=true [program:nginx] command=/usr/sbin/nginx -g "daemon off;" [program:php-fpm] command=/usr/local/sbin/php-fpm --nodaemonize --fpm-config /usr/local/etc/php-fpm.conf ``` 其中,[program:nginx] 和 [program:php-fpm] 分别用于启动 NginxPHP-FPM 进程。 4. 构建 Docker 镜像 在项目根目录中,运行以下命令构建 Docker 镜像: ``` docker build -t my-php-app . ``` 这个命令将会构建一个名为 my-php-app 的 Docker 镜像,其中包含了 PHP 项目、NginxSupervisor。 5. 启动 Docker 容器 运行以下命令启动 Docker 容器: ``` docker run -p 80:80 my-php-app ``` 这个命令将会启动一个名为 my-php-app 的容器,并将容器的 80 端口映射到主机的 80 端口上。现在可以在浏览器中访问 http://localhost 查看 PHP 项目了。 以上就是在 Docker 中运行 PHP 项目的基本步骤,可以根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值