Переезд статики на nginx

12
mstar
На сайте с 19.12.2005
Offline
133
1404

Где-то с месяц назад один требовательный заказчик попросил, чтоб статика быстрее отдавалась. До этого особых таких запросов не было, но вот для этого сайта http://modiliani.com.ua/ решили прикрутить енжинкс перед апачем.

Впечатления - только позитивные. Сказать, чтобы сервер разгрузился - не заметил, так как запросов на статику не так уж и много, да и дедик на 5% нагружен. Немного напрягало, что бывало не запускался после рестарт и приходилось делать пару раз старт, чтобы запустился. Сегодня вычитал, что можно вобщем и рестарт не делать, вот решил поделиться:

kill -HUP `cat /var/run/nginx.pid`

http://smallbiztechguy.blogspot.com/2007/07/web-server-restart-nginx-without.html

What happens is that when nginx receives the HUP signal, it tries to parse the configuration file (the specified one, if present, otherwise the default), and if successful, tries to apply a new configuration (i.e. re-open the log files and listen sockets). If successful, nginx runs new worker processes and signals graceful shutdown to old workers. Notified workers close listen sockets but continue to serve current clients. After serving all clients old workers shutdown. If nginx wasn't successful in applying the new configuration, it continues to work with an old configuration.

Кстати, вот еще вопрос мучает: как правильно произносится: нжинкс, нгинкс или енжинкс? в мануалах все по-хитрому пишут англискими буквами :)

Разработка сайтов (http://www.mstarproject.com/?action=tecdoc_mysql_site) - удобные веб приложения по разумной цене.
Himiko
На сайте с 28.08.2008
Offline
560
#1

Не CentOS случаем на сервере?)

Проще поправить стартовый скрипт.

Тогда будет перезапускаться без проблем.

Произносится вроде бы "энджинкс". По крайней мере я так говорю...

Профессиональное администрирование серверов (https://systemintegra.ru). Круглосуточно. Отзывы (/ru/forum/834230) Лицензии (http://clck.ru/Qhf5) ISPManager,VDSManager,Billmanager e.t.c. по низким ценам.
mstar
На сайте с 19.12.2005
Offline
133
#2
Himiko:
Не CentOS случаем на сервере?)
Проще поправить стартовый скрипт.
Тогда будет перезапускаться без проблем.
Произносится вроде бы "энджинкс"

Да, ЦентОс - все тот же проблемный сервер. Где то с месяц назад из-за апаратного перегрева сервер стал бутяться сам, поэтому хостер переставил винты в другую железку. Пока работает :)

А что значит "поправить стартовый скрипт" и чем он лучше от моего варианта?

Himiko
На сайте с 28.08.2008
Offline
560
#3
mstar:
Да, ЦентОс - все тот же проблемный сервер. Где то с месяц назад из-за апаратного перегрева сервер стал бутяться сам, поэтому хостер переставил винты в другую железку. Пока работает :)

А что значит "поправить стартовый скрипт" и чем он лучше от моего варианта?

На CentOS проблема с перезапуском Nginx.

Лучше тем, что nginx будет перезапускаться нормально, без всяких скриптов.

Можете стукнуть мне в ICQ 392-395 помогу...

mstar
На сайте с 19.12.2005
Offline
133
#4
Himiko:
На CentOS проблема с перезапуском Nginx.
Лучше тем, что nginx будет перезапускаться нормально, без всяких скриптов.
Можете стукнуть мне в ICQ 392-395 помогу...

Да нет, спасибо. Как-то сами справляемся с перезапуском :)

А нельзя скрипт выложить в паблик, если тукую траблу решили для ценnоса? Или только через аську?

Himiko
На сайте с 28.08.2008
Offline
560
#5
mstar:
Да нет, спасибо. Как-то сами справляемся с перезапуском :)

А нельзя скрипт выложить в паблик, если тукую траблу решили для ценnоса? Или только через аську?

Я просто не помню, как точно выглядит скрипт для CentOS. А сервака с такой операционкой под рукой нет) Можете выложить файл /etc/init.d/nginx сюда, я скажу, что поправить.

mstar
На сайте с 19.12.2005
Offline
133
#6

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemin

#

# chkconfig: - 85 15

# description: Nginx is an HTTP(S) server, HTTP(S) reverse \

# proxy and IMAP/POP3 proxy server

# processname: nginx

# config: /etc/nginx/nginx.conf

# config: /etc/sysconfig/nginx

# pidfile: /var/run/nginx.pid

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

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

nginx="/usr/sbin/nginx"

prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

echo -n $"Starting $prog: "

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $prog: "

killproc $prog -QUIT

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

configtest || return $?

stop

start

}

reload() {

configtest || return $?

echo -n $"Reloading $prog: "

killproc $nginx -HUP

RETVAL=$?

echo

}

force_reload() {

restart

}

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

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

;;

restart|configtest)

$1

;;

reload)

rh_status_q || exit 7

$1

;;

force-reload)

force_reload

;;

status)

rh_status

;;

;;

condrestart|try-restart)

rh_status_q || exit 0

;;

*)

echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

exit 2

esac

Himiko
На сайте с 28.08.2008
Offline
560
#7

Попробуйте заменить:

killproc $prog -QUIT

на

killproc $prog

вот здесь:

stop() {

echo -n $"Stopping $prog: "

killproc $prog -QUIT

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

И проверьте.

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#8
mstar:
Где-то с месяц назад один требовательный заказчик попросил, чтоб статика быстрее отдавалась. До этого особых таких запросов не было, но вот для этого сайта http://modiliani.com.ua/ решили прикрутить енжинкс перед апачем.

Впечатления - только позитивные. Сказать, чтобы сервер разгрузился - не заметил, так как запросов на статику не так уж и много, да и дедик на 5% нагружен. Немного напрягало, что бывало не запускался после рестарт и приходилось делать пару раз старт, чтобы запустился. Сегодня вычитал, что можно вобщем и рестарт не делать, вот решил поделиться:


http://smallbiztechguy.blogspot.com/2007/07/web-server-restart-nginx-without.html


Кстати, вот еще вопрос мучает: как правильно произносится: нжинкс, нгинкс или енжинкс? в мануалах все по-хитрому пишут англискими буквами :)

Или, в случае того же CentOS, просто service nginx reload.

Делает то же самое, еще перед этим проверяет конфиг.

Расшифровывается он engine x, по идее, произносить надо "Энджин Икс". Но за правоту суждения не ручаюсь :)

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
Himiko
На сайте с 28.08.2008
Offline
560
#9

Да. reload сделает killproc $nginx -HUP

Просто в случае с панелями (например ISPManager), которые используют /etc/init.d/nginx restart правлю стартовый скрипт)

mstar
На сайте с 19.12.2005
Offline
133
#10
Himiko:
Да. reload сделает killproc $nginx -HUP
Просто в случае с панелями (например ISPManager), которые используют /etc/init.d/nginx restart правлю стартовый скрипт)

Не, у нас все ручками по ссх. Релоад - мне проще запомнить и работает корректно без правки. Странно, как-то пропустил я эту команду. А в апаче релоад тоже самое делает?

Спасибо всем за помощь.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий