2016-05-21 1 views
2

ubuntu 14.04で複数のPHP-FPMマスターをセットアップするには?彼らはお互いに関するAPCキャッシュおよび他のオプションから独立して実行できるように、私は私のワードプレスマルチサイトのインストールごとに設定複数のPHP-FPMマスターに<a href="https://ma.ttias.be/a-better-way-to-run-php-fpm/" rel="nofollow">this tutorial</a>を追ってきた

手紙に指示に従った後、それぞれの新しいのphp5-FPM init.dスクリプトは、実際には何を初期化したりしないだろう。
/var/run/php5-fpm-master2.pidphp5-fpm-master2.sockも作成されていません。私が指示に従ったことを考えれば、私は彼のdistro/packageバージョンが異なっていると仮定しています。 Ubuntuの14.04でどのように適切に設定する複数のPHP-FPMマスター(apt-getのから標準のphp5-FPM)を共有して喜ん

誰ですか?ここでは同じである必要があり、私はUbuntuのが、Debianのジェシーを使用していないよ

答えて

2

、。

まず第一に、/etc/php5/fpm/pool.dに行きます。

プールを作成する必要があります。 g。 1つはファイル名でwww1.conf

[www1] 
user = www1 
group = www1 

listen = /var/run/php5-fpm-www1.sock 
listen.owner = www1 
listen.group = www1 
listen.allowed_clients = 127.0.0.1 

pm = ondemand 
pm.max_children = 100 
pm.process_idle_timeout = 5s; 
chdir =/

を作成します。 g。ファイル名www2.confで:

[www2] 
user = www2 
group = www2 

listen = /var/run/php5-fpm-www2.sock 
listen.owner = www2 
listen.group = www2 
listen.allowed_clients = 127.0.0.1 

pm = ondemand 
pm.max_children = 100 
pm.process_idle_timeout = 5s; 
chdir =/

/etc/php5/fpmに行くと(別のディレクトリにバックアップが有用であろう)、それにphp-fpm.confを削除します。今、次の内容のファイルを作成しますphp-fpm-www1.conf:それに類似

[global] 
pid = /var/run/php5-fpm-www1.pid 
error_log = /var/log/php5-fpm-www1.log 
syslog.ident = php-fpm-www1 
log_level = notice 
emergency_restart_threshold = 10 
emergency_restart_interval = 1m 
include=/etc/php5/fpm/pool.d/www1.conf 

を、ファイルphp-fpm-www2.conf作成:

[global] 
pid = /var/run/php5-fpm-www2.pid 
error_log = /var/log/php5-fpm-www2.log 
syslog.ident = php-fpm-www2 
log_level = notice 
emergency_restart_threshold = 10 
emergency_restart_interval = 1m 
include=/etc/php5/fpm/pool.d/www2.conf 

あなたが必要とする完全な設定です。最も重要なのは適切なinitスクリプトです。 Debianで、私はちょうどデフォルトの/etc/init.d/php5-fpmをコピーしました。

ファイル/etc/init.d/php5-fpm-www1

#!/bin/sh 
### BEGIN INIT INFO 
# Provides:   php5-fpm-www1 
# Required-Start: $remote_fs $network 
# Required-Stop:  $remote_fs $network 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: starts php5-fpm-www1 
# Description:  Starts The PHP FastCGI Process Manager Daemon 
### END INIT INFO 

# Author: Ondrej Sury <[email protected]> 

PATH=/sbin:/usr/sbin:/bin:/usr/bin 
DESC="PHP5 FastCGI Process Manager" 
NAME=php5-fpm-www1 
BIN=php5-fpm 
DAEMON=/usr/sbin/$BIN 
DAEMON_ARGS="--daemonize --fpm-config /etc/php5/fpm/php-fpm-www1.conf" 
CONF_PIDFILE=$(sed -n 's/^pid\s*=\s*//p' /etc/php5/fpm/php-fpm-www1.conf) 
PIDFILE=${CONF_PIDFILE:-/run/php5-fpm-www1.pid} 
TIMEOUT=30 
SCRIPTNAME=/etc/init.d/$NAME 

# Exit if the package is not installed 
[ -x "$DAEMON" ] || exit 0 

# Read configuration variable file if it is present 
[ -r /etc/default/$NAME ] && . /etc/default/$NAME 

# Load the VERBOSE setting and other rcS variables 
. /lib/init/vars.sh 

# Define LSB log_* functions. 
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. 
. /lib/lsb/init-functions 

# Don't run if we are running upstart 
if init_is_upstart; then 
    exit 1 
fi 

# 
# Function to check the correctness of the config file 
# 
do_check() 
{ 
    /usr/lib/php5/php5-fpm-checkconf || return 1 
    return 0 
} 

# 
# Function that starts the daemon/service 
# 
do_start() 
{ 
    # Return 
    # 0 if daemon has been started 
    # 1 if daemon was already running 
    # 2 if daemon could not be started 
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ 
     || return 1 
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ 
     $DAEMON_ARGS 2>/dev/null \ 
     || return 2 
    # Add code here, if necessary, that waits for the process to be ready 
    # to handle requests from services started subsequently which depend 
    # on this one. As a last resort, sleep for some time. 
} 

# 
# Function that stops the daemon/service 
# 
do_stop() 
{ 
    # Return 
    # 0 if daemon has been stopped 
    # 1 if daemon was already stopped 
    # 2 if daemon could not be stopped 
    # other if a failure occurred 
    start-stop-daemon --stop --quiet --retry=QUIT/$TIMEOUT/TERM/5/KILL/5 --pidfile $PIDFILE --name $NAME 
    RETVAL="$?" 
    [ "$RETVAL" = 2 ] && return 2 
    # Wait for children to finish too if this is a daemon that forks 
    # and if the daemon is only ever run from this initscript. 
    # If the above conditions are not satisfied then add some other code 
    # that waits for the process to drop all resources that could be 
    # needed by services started subsequently. A last resort is to 
    # sleep for some time. 
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/TERM/5/KILL/5 --name $NAME --exec $DAEMON 
    [ "$?" = 2 ] && return 2 
    # Many daemons don't delete their pidfiles when they exit. 
    rm -f $PIDFILE 
    return "$RETVAL" 
} 

# 
# Function that sends a SIGHUP to the daemon/service 
# 
do_reload() { 
    # 
    # If the daemon can reload its configuration without 
    # restarting (for example, when it is sent a SIGHUP), 
    # then implement that here. 
    # 
    start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE --name $NAME 
    return 0 
} 

case "$1" in 
    start) 
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" 
    do_check $VERBOSE 
    case "$?" in 
     0) 
     do_start 
     case "$?" in 
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
     esac 
     ;; 
     1) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
    esac 
    ;; 
    stop) 
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" 
    do_stop 
    case "$?" in 
     0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 
     2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
    esac 
    ;; 
    status) 
     status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? 
     ;; 
    check) 
     do_check yes 
    ;; 
    reload|force-reload) 
    log_daemon_msg "Reloading $DESC" "$NAME" 
    do_reload 
    log_end_msg $? 
    ;; 
    reopen-logs) 
    log_daemon_msg "Reopening $DESC logs" $NAME 
    if start-stop-daemon --stop --signal USR1 --oknodo --quiet \ 
     --pidfile $PIDFILE --exec $DAEMON 
    then 
     log_end_msg 0 
    else 
     log_end_msg 1 
    fi 
    ;; 
    restart) 
    log_daemon_msg "Restarting $DESC" "$NAME" 
    do_stop 
    case "$?" in 
     0|1) 
     do_start 
     case "$?" in 
      0) log_end_msg 0 ;; 
      1) log_end_msg 1 ;; # Old process is still running 
      *) log_end_msg 1 ;; # Failed to start 
     esac 
     ;; 
     *) 
     # Failed to stop 
     log_end_msg 1 
     ;; 
    esac 
    ;; 
    *) 
    echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2 
    exit 1 
    ;; 
esac 

: 

デフォルトのinitスクリプトから変更があった。

解説:ここで

### BEGIN INIT INFO 
# Provides:   php5-fpm-www1 
# Required-Start: $remote_fs $network 
# Required-Stop:  $remote_fs $network 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: starts php5-fpm-www1 
# Description:  Starts The PHP FastCGI Process Manager Daemon 
### END INIT INFO 

あなたのスクリプト名にライン2と7を変更する必要があります。

構成:

PATH=/sbin:/usr/sbin:/bin:/usr/bin 
DESC="PHP5 FastCGI Process Manager" 
NAME=php5-fpm-www1 
BIN=php5-fpm 
DAEMON=/usr/sbin/$BIN 
DAEMON_ARGS="--daemonize --fpm-config /etc/php5/fpm/php-fpm-www1.conf" 
CONF_PIDFILE=$(sed -n 's/^pid\s*=\s*//p' /etc/php5/fpm/php-fpm-www1.conf) 
PIDFILE=${CONF_PIDFILE:-/run/php5-fpm-www1.pid} 
TIMEOUT=30 
SCRIPTNAME=/etc/init.d/$NAME 

変更NAMEスクリプト名に変数とあなたのbinファイルの名前でBIN変数を追加します。さらにDAEMON$NAMEの代わりに$BINと一致するように編集します。 DAEMON:ARGSCONF_PIDFILEおよびPIDFILEは、/etc/php5/fpmの設定と一致するように編集する必要があります。

今スクリプトは、すでに特定のPHP5-FPMマスターを開始する必要があります。

私の問題は、/etc/init.d/php5-fpm-www1 stopwww2のマスターを停止したということでした。あなたはinitスクリプトでdo_stop()機能を編集する必要があること固定するために

ここ
do_stop() 
{ 
    # Return 
    # 0 if daemon has been stopped 
    # 1 if daemon was already stopped 
    # 2 if daemon could not be stopped 
    # other if a failure occurred 
    start-stop-daemon --stop --quiet --retry=QUIT/$TIMEOUT/TERM/5/KILL/5 --pidfile $PIDFILE --name $NAME 
    RETVAL="$?" 
    [ "$RETVAL" = 2 ] && return 2 
    # Wait for children to finish too if this is a daemon that forks 
    # and if the daemon is only ever run from this initscript. 
    # If the above conditions are not satisfied then add some other code 
    # that waits for the process to drop all resources that could be 
    # needed by services started subsequently. A last resort is to 
    # sleep for some time. 
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/TERM/5/KILL/5 --name $NAME --exec $DAEMON 
    [ "$?" = 2 ] && return 2 
    # Many daemons don't delete their pidfiles when they exit. 
    rm -f $PIDFILE 
    return "$RETVAL" 
} 

私は同じことを17

ラインで二start-stop-daemonコマンドにあなたを--name $NAMEを追加する必要がありましたあなたのinitを保つために覚えておいてください

#!/bin/sh 
### BEGIN INIT INFO 
# Provides:   php5-fpm-www2 
# Required-Start: $remote_fs $network 
# Required-Stop:  $remote_fs $network 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: starts php5-fpm-www2 
# Description:  Starts The PHP FastCGI Process Manager Daemon 
### END INIT INFO 

# Author: Ondrej Sury <[email protected]> 

PATH=/sbin:/usr/sbin:/bin:/usr/bin 
DESC="PHP5 FastCGI Process Manager" 
NAME=php5-fpm-www2 
BIN=php5-fpm 
DAEMON=/usr/sbin/$BIN 
DAEMON_ARGS="--daemonize --fpm-config /etc/php5/fpm/php-fpm-www2.conf" 
CONF_PIDFILE=$(sed -n 's/^pid\s*=\s*//p' /etc/php5/fpm/php-fpm-www2.conf) 
PIDFILE=${CONF_PIDFILE:-/run/php5-fpm-www2.pid} 
TIMEOUT=30 
SCRIPTNAME=/etc/init.d/$NAME 

# Exit if the package is not installed 
[ -x "$DAEMON" ] || exit 0 

# Read configuration variable file if it is present 
[ -r /etc/default/$NAME ] && . /etc/default/$NAME 

# Load the VERBOSE setting and other rcS variables 
. /lib/init/vars.sh 

# Define LSB log_* functions. 
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. 
. /lib/lsb/init-functions 

# Don't run if we are running upstart 
if init_is_upstart; then 
    exit 1 
fi 

# 
# Function to check the correctness of the config file 
# 
do_check() 
{ 
    /usr/lib/php5/php5-fpm-checkconf || return 1 
    return 0 
} 

# 
# Function that starts the daemon/service 
# 
do_start() 
{ 
    # Return 
    # 0 if daemon has been started 
    # 1 if daemon was already running 
    # 2 if daemon could not be started 
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ 
     || return 1 
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ 
     $DAEMON_ARGS 2>/dev/null \ 
     || return 2 
    # Add code here, if necessary, that waits for the process to be ready 
    # to handle requests from services started subsequently which depend 
    # on this one. As a last resort, sleep for some time. 
} 

# 
# Function that stops the daemon/service 
# 
do_stop() 
{ 
    # Return 
    # 0 if daemon has been stopped 
    # 1 if daemon was already stopped 
    # 2 if daemon could not be stopped 
    # other if a failure occurred 
    start-stop-daemon --stop --quiet --retry=QUIT/$TIMEOUT/TERM/5/KILL/5 --pidfile $PIDFILE --name $NAME 
    RETVAL="$?" 
    [ "$RETVAL" = 2 ] && return 2 
    # Wait for children to finish too if this is a daemon that forks 
    # and if the daemon is only ever run from this initscript. 
    # If the above conditions are not satisfied then add some other code 
    # that waits for the process to drop all resources that could be 
    # needed by services started subsequently. A last resort is to 
    # sleep for some time. 
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/TERM/5/KILL/5 --name $NAME --exec $DAEMON 
    [ "$?" = 2 ] && return 2 
    # Many daemons don't delete their pidfiles when they exit. 
    rm -f $PIDFILE 
    return "$RETVAL" 
} 

# 
# Function that sends a SIGHUP to the daemon/service 
# 
do_reload() { 
    # 
    # If the daemon can reload its configuration without 
    # restarting (for example, when it is sent a SIGHUP), 
    # then implement that here. 
    # 
    start-stop-daemon --stop --signal USR2 --quiet --pidfile $PIDFILE --name $NAME 
    return 0 
} 

case "$1" in 
    start) 
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" 
    do_check $VERBOSE 
    case "$?" in 
     0) 
     do_start 
     case "$?" in 
      0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 
      2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
     esac 
     ;; 
     1) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
    esac 
    ;; 
    stop) 
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" 
    do_stop 
    case "$?" in 
     0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 
     2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; 
    esac 
    ;; 
    status) 
     status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? 
     ;; 
    check) 
     do_check yes 
    ;; 
    reload|force-reload) 
    log_daemon_msg "Reloading $DESC" "$NAME" 
    do_reload 
    log_end_msg $? 
    ;; 
    reopen-logs) 
    log_daemon_msg "Reopening $DESC logs" $NAME 
    if start-stop-daemon --stop --signal USR1 --oknodo --quiet \ 
     --pidfile $PIDFILE --exec $DAEMON 
    then 
     log_end_msg 0 
    else 
     log_end_msg 1 
    fi 
    ;; 
    restart) 
    log_daemon_msg "Restarting $DESC" "$NAME" 
    do_stop 
    case "$?" in 
     0|1) 
     do_start 
     case "$?" in 
      0) log_end_msg 0 ;; 
      1) log_end_msg 1 ;; # Old process is still running 
      *) log_end_msg 1 ;; # Failed to start 
     esac 
     ;; 
     *) 
     # Failed to stop 
     log_end_msg 1 
     ;; 
    esac 
    ;; 
    *) 
    echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload|force-reload}" >&2 
    exit 1 
    ;; 
esac 

: 

:あなたの/etc/init.d/php5-fpm-www2ファイルで先となる必要がありphp5-fpmの定期的な更新が何か変更されるようにスクリプトを最新の状態にしてください。

関連する問題