Welcome! Log In Create A New Profile

Advanced

Re: Где правильно взять /etc/init.d/nginx?

Gena Makhomed
June 13, 2010 04:02PM
On 13.06.2010 16:02, Igor Sysoev wrote:

>>> Официального варианта не существует.

>> А надо бы.

> Если кто-нибудь предложит вариант, который устроит всех (или почти всех),
> я добавлю его в contrib.

beta-версия init-скрипта для nginx для CentOS:

* добавлена команда rotate для переоткрытия лог-файлов
* добавлена поддержка нескольких экземпляров nginx (beta)

в зависимости от того, как называется init-script,
сответственно будет назван pid-файл и будет использоваться
соответствующий конфигурационный файл.

основной init-файл желательно называть /etc/init.d/nginx
а дополнительные - делать симлинками на него, в случае если
во всех экземплярах используется один и тот же бинарный файл,
тогда упрощается обновлление инит-скрипта с помощью yum и rpm.

P.S. если есть предложения по улучшению скрипта или исправлению
ошибок в нем - присылайте сюда (в список рассылки) или мне емейлом.

--
Best regards,
Gena
#!/bin/sh
# chkconfig: - 85 15
# description: nginx [engine x] is a HTTP server written by Igor Sysoev

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network

[ "$NETWORKING" = "no" ] && exit 0

binary=/usr/sbin/nginx
instance=$(basename $0)

config="/etc/nginx/$instance.conf"
pidfile="/var/run/$instance.pid"

lockfile="/var/lock/subsys/$instance"
sysconfig="/etc/sysconfig/$instance"

[ -f $sysconfig ] && . $sysconfig

start() {
[ -x $binary ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $instance: "
daemon "$binary -c $config -g \"pid $pidfile;\""
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $instance: "
killproc -p $pidfile $instance
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest_q || configtest || return 6
stop
start
}

online_upgrade() {
configtest_q || configtest || return 6
echo -n $"Upgrading $instance: "
kill -USR2 `cat /var/run/$instance.pid`
sleep 1
if test -f /var/run/$instance.pid.oldbin
then
kill -QUIT `cat /var/run/$instance.pid.oldbin`
success $"$instance online upgrade"
echo
else
failure $"$instance online upgrade"
echo
exit 1
fi
}

reload() {
configtest_q || configtest || return 6
echo -n $"Reloading $instance: "
killproc -p $pidfile $instance -HUP
retval=$?
echo
return $retval
}

rotate(){
configtest_q || configtest || return 6
echo -n $"Rotating $instance logs: "
killproc -p $pidfile $instance -USR1
retval=$?
echo
return $retval
}

configtest() {
$binary -t -c $config -g "pid $pidfile;"
}

configtest_q() {
configtest >/dev/null 2>&1
}

rh_status() {
status -p $pidfile $instance
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload|online-upgrade|upgrade)
rh_status_q || exit 7
online_upgrade
;;
condrestart|try-restart)
rh_status_q || exit 7
restart
;;
restart|configtest|rotate)
$1
;;
status|status_q)
rh_$1
;;
*)
echo $"Usage: $0 {start|stop|reload|force-reload|restart|try-restart|status|rotate|configtest}"
exit 2
esac

#!/bin/sh
# chkconfig: - 85 15
# description: nginx [engine x] is a HTTP server written by Igor Sysoev

. /etc/rc.d/init.d/functions
. /etc/sysconfig/network

[ "$NETWORKING" = "no" ] && exit 0

binary=/usr/sbin/nginx
instance=$(basename $0)

config="/etc/nginx/$instance.conf"
pidfile="/var/run/$instance.pid"
error_log="/var/log/nginx/$instance-error.log"

lockfile="/var/lock/subsys/$instance"
sysconfig="/etc/sysconfig/$instance"

[ -f $sysconfig ] && . $sysconfig

start() {
[ -x $binary ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $instance: "
daemon "$binary -c $config -g \"pid $pidfile; error_log $error_log;\""
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $instance: "
killproc -p $pidfile $instance
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest_q || configtest || return 6
stop
start
}

online_upgrade() {
configtest_q || configtest || return 6
echo -n $"Upgrading $instance: "
kill -USR2 `cat /var/run/$instance.pid`
sleep 1
if test -f /var/run/$instance.pid.oldbin
then
kill -QUIT `cat /var/run/$instance.pid.oldbin`
success $"$instance online upgrade"
echo
else
failure $"$instance online upgrade"
echo
exit 1
fi
}

reload() {
configtest_q || configtest || return 6
echo -n $"Reloading $instance: "
killproc -p $pidfile $instance -HUP
retval=$?
echo
return $retval
}

rotate(){
configtest_q || configtest || return 6
echo -n $"Rotating $instance logs: "
killproc -p $pidfile $instance -USR1
retval=$?
echo
return $retval
}

configtest() {
$binary -t -c $config -g "pid $pidfile; error_log $error_log;"
}

configtest_q() {
configtest >/dev/null 2>&1
}

rh_status() {
status -p $pidfile $instance
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload|online-upgrade|upgrade)
rh_status_q || exit 7
online_upgrade
;;
condrestart|try-restart)
rh_status_q || exit 7
restart
;;
restart|configtest|rotate)
$1
;;
status|status_q)
rh_$1
;;
*)
echo $"Usage: $0 {start|stop|reload|force-reload|restart|try-restart|status|rotate|configtest}"
exit 2
esac

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Где правильно взять /etc/init.d/nginx?

vgoncharov June 13, 2010 07:42AM

Re: Где правильно взять /etc/init.d/nginx?

Boris Dolgov June 13, 2010 08:00AM

Re: Где правильно взять /etc/init.d/nginx?

Anton Bessonov June 13, 2010 08:54AM

Re: Где правильно взять /etc/init.d/nginx?

Igor Sysoev June 13, 2010 09:04AM

Re: Где правильно взять /etc/init.d/nginx?

Anton Bessonov June 13, 2010 09:14AM

Re: Где правильно взять /etc/init.d/nginx?

Gena Makhomed June 13, 2010 04:02PM

Re: Где правильно взять /etc/init.d/nginx?

Gena Makhomed June 13, 2010 04:02PM

Re: Где правильно взять /etc/init.d/nginx?

Craken June 13, 2010 08:49AM

Re: Где правильно взять /etc/init.d/nginx?

Anton Bessonov June 13, 2010 09:04AM

Re: Где правильно взять /etc/init.d/nginx?

Craken June 13, 2010 09:54AM

Re: Где правильно взять /etc/init.d/nginx?

Igor Sysoev June 13, 2010 09:04AM

Re: Где правильно взять /etc/init.d/nginx?

Gena Makhomed June 13, 2010 04:24PM

Re: Где правильно взять /etc/init.d/nginx?

jch June 14, 2010 06:03AM

Re: Где правильно взять /etc/init.d/nginx?

Gena Makhomed June 14, 2010 07:42AM

Re: Где правильно взять /etc/init.d/nginx?

Andrey Zloy June 15, 2010 10:34AM

Re: Где правильно взять /etc/init.d/nginx?

Gena Makhomed June 15, 2010 11:24AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 296
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready