Php-Fpm
如何使用 supervisord 重新啟動 php7-fpm?
我有一個用於 apache 和 php7-fpm 的自定義 docker 映像,但是每當我對 php ini 文件進行更改並在映像建構期間的這些更改之後使用 supervisord 重新啟動 php7-fpm,然後從映像執行容器之前,我注意到我一直無法使 php7-fpm 重新啟動。所以我對 php ini 文件所做的更改永遠不會得到反映
但是當我登錄到正在執行的容器並嘗試重新啟動 php7-fpm 時,我會看到這些更改
這是我的supervisord配置
[supervisord] nodaemon=true [program:php-fpm7.0] command = /usr/sbin/php-fpm7.0 -c /etc/php/7.0/fpm/php-fpm.conf autorestart=true [program:apache2] command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND" autorestart=true
這是我的 start.sh 腳本
#!/bin/bash set -e echo "ServerName localhost" >> /etc/apache2/apache2.conf #echo "export HOSTNAME=$(hostname)" >> /etc/apache2/envvars sed -i -e "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php/7.0/fpm/php.ini sed -i -e "s/;short_open_tag = Off/short_open_tag = On/g" /etc/php/7.0/fpm/php.ini sed -i -e "s/;display_errors = Off/display_errors = On/g" /etc/php/7.0/fpm/php.ini sed -ri 's/^upload_max_filesize\s*=\s*.+/upload_max_filesize = 450M/g' /etc/php/7.0/fpm/php.ini sed -ri 's/^max_input_time\s*=\s*.+/max_input_time = 300/g' /etc/php/7.0/fpm/php.ini sed -ri 's/^memory_limit\s*=\s*.+/memory_limit = 640M/g' /etc/php/7.0/fpm/php.ini sed -ri 's/^post_max_size\s*=\s*.+/post_max_size = 450M/g' /etc/php/7.0/fpm/php.ini sed -ri 's/^max_execution_time\s*=\s*.+/max_execution_time = 300/g' /etc/php/7.0/fpm/php.ini sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php/7.0/fpm/php-fpm.conf sed -i -e "s/;catch_workers_output\s*=\s*yes/catch_workers_output = yes/g" /etc/php/7.0/fpm/pool.d/www.conf sed -i -e "s/pm.max_children = 5/pm.max_children = 9/g" /etc/php/7.0/fpm/pool.d/www.conf sed -i -e "s/pm.start_servers = 2/pm.start_servers = 3/g" /etc/php/7.0/fpm/pool.d/www.conf sed -i -e "s/pm.min_spare_servers = 1/pm.min_spare_servers = 2/g" /etc/php/7.0/fpm/pool.d/www.conf sed -i -e "s/pm.max_spare_servers = 3/pm.max_spare_servers = 4/g" /etc/php/7.0/fpm/pool.d/www.conf sed -i -e "s/pm.max_requests = 500/pm.max_requests = 200/g" /etc/php/7.0/fpm/pool.d/www.conf sed -i -e "s/;clear_env = no/clear_env = no/g" /etc/php/7.0/fpm/pool.d/www.conf
請幫助如何在創建 docker 映像時使用腳本對 php ini 文件進行更改時重新啟動php7-fpm
start.sh
附言
您可能想知道為什麼我只需要啟動 php7-fpm 就需要重新啟動它,沒有辦法讓 php7-fpm 與 docker 一起工作,除非我實際上首先在我的 docker 文件中啟動它,如下所示。每當我從 dockerfile 中刪除該行時,它都不起作用。如果有人在 docker 中有 apache 2.4 和 php7-fpm 設置,但沒有這種方式可以工作,請給我發送他們圖像的連結!
RUN service php7.0-fpm start
謝謝
剛剛將這一行添加到
start.sh
腳本中
service php7.0-fpm restart
就這樣所有的問題都得到了解決!
沒有意識到這就像在 start.sh 腳本中添加一個 bash 命令一樣簡單