Nginx
Материал из Eludia.
Автозапуск nginx в RedHat
Этот скрипт был скопирован из блога А. Копылова. Я добавил только 2 строки для запуска elud. И убрал упоминание об nginxctl, который не использовался и у автора.
#!/bin/bash
#
# nginx Startup script for the Nginx HTTP Server
#
# chkconfig: - 85 15
# description: Nginx is a fastest HTTP Server.
# processname: nginx
# config: /usr/local/nginx/conf/nginx.conf
# pidfile: /usr/local/nginx/sbin/nginx.pid
. /etc/rc.d/init.d/functions
nginxd=${NGINXD-/usr/local/nginx/sbin/nginx}
prog=nginx
pidfile=${PIDFILE-/usr/local/nginx/logs/nginx.pid}
RETVAL=0
start() {
echo -n $"Starting $prog: "
daemon $nginxd
RETVAL=$?
echo
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd -TERM
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f ${pidfile}
}
reload() {
echo -n $"Reloading $prog: "
killproc $nginxd -HUP
RETVAL=$?
echo
}
case "$1" in
start)
start
elud start
;;
stop)
stop
;;
status)
status $nginxd
RETVAL=$?
;;
restart)
stop
start
elud start
;;
condrestart)
if [ -f ${pidfile} ] ; then
stop
start
fi
;;
reload)
reload
;;
help)
$nginxctl $@
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|help}"
exit 1
esac
Для комплекта, пропись на runlevels 3, 4 и 5:
chkconfig --level 345 nginx on
nginxctl
Shuiyang написал для nginx скрипт-пускач, аналогичный широко известному apachectl. Я только убрал иероглифы и добавил запуск elud.
#!/bin/bash
nginx="/usr/bin/nginx"
restart="restart"
argv="$@"
pid=`/bin/ps auwx|/bin/grep nginx|/bin/grep master|/bin/awk '{print $2}'`
pidcount=`/bin/ps auwx|/bin/grep nginx|/bin/grep master|/bin/awk '{print $2}'|wc -l`
monitorpid=`/bin/ps auwx|/bin/grep "monitor process"|/bin/grep -v grep|/bin/awk '{print $2}'`
monitorpidcount=`/bin/ps auwx|/bin/grep "monitor process"|/bin/grep -v grep|/bin/awk '{print $2}'|wc -l`
ulimit -S -H -n 20480
case "$1" in
restart)
if [ $pidcount -gt 0 ]; then
kill -HUP $pid
echo "nginx restarted"
elud start
else
$nginx
echo "nginx not running, trying to start"
fi;
;;
stop)
if [ $monitorpidcount -gt 0 ]; then
kill -9 $monitorpid
echo "kill nginx monitor process PID:" $monitorpid
fi;
if [ $pidcount -gt 0 ]; then
kill -QUIT $pid
echo "nginx master process stopped"
else
echo "nginx (no pid file) not running"
fi;
;;
start)
if [ $pidcount -gt 0 ]; then
echo "nginx (pid $pid) already running"
kill -HUP $pid
echo "nginx restarted"
else
$nginx
echo "trying to start"
fi;
elud start
;;
configtest)
echo "";
echo "...Test nginx.conf...";
echo "";
$nginx -t
;;
*)
cat <<EOF
start
restart
stop
configtest
EOF
;;
esac
Сборка Nginx в .deb-пакет
Этот текст не имеет прямого отношения к Eludia, не был написан авторами данного сайта, а был скопирован из кэша Google и сохранён здесь, поскольку представляет ценность при инсталляции Eludia-приложений, а в первоисточнике, увы, недоступен.
Создадим папку, где мы будем проводить все работы
mkdir nginx && cd ./nginx
Качаем новейшую версию nginx’a с официальной страницы Игоря Сысоева - его главного разработчика.
wget http://sysoev.ru/nginx/nginx-0.7.7.tar.gz
Подготовим всё, что необходимо для сборки
Установим утилиты для сборки
sudo aptitude install build-essential debhelper dpkg-dev fakeroot devscripts
Установим зависимости
Вообще-то, их почти нет, но этот шаг я рекомендую делать всегда.
sudo apt-get build-dep nginx
Подготовим сырцы
Распакуем непосредственно сырцы
tar -xzvvf nginx-0.7.7.tar.gz
=== Скачаем с packages.debian.org патч для их дебианизации и разожмём его.
wget http://ftp.de.debian.org/debian/pool/main/n/nginx/nginx_0.6.32-1.diff.gz gunzip *.diff.gz
Применим патч
cd ./nginx-* patch -p1 --dry-run < ../nginx*.diff
Если предыдущая команда не выдала ошибок - патчим.
patch -p1 < ../nginx*.diff
Изменим версию
dch -i
Откроется знакомый nano и выдаст нечто вроде:
nginx (0.6.32-1ubuntu1) intrepid; urgency=low * -- Df_Yz Wed, 30 Jul 2008 20:58:14 +0300
Изменяем версию, дистрибутив и пишем “New upstream release”
Должно выйти примерно так:
nginx (0.7.7-1ubuntu1) hardy; urgency=low * New upstream release -- Df_Yz Wed, 30 Jul 2008 20:58:14 +0300
Сохраняем, выходим.
Делаем файл ./debian/rules исполняемым
chmod +x debian/rules
Переименовываем архив с сырцами
Он должен называться по такому правилу: программа_версия.orig.tar.gz
mv ../*.tar.gz ../nginx_0.7.7.orig.tar.gz
Собираем
dpkg-buildpackage -rfakeroot
После сборки .deb-пакеты будут лежать на уровень выше.
Устанавливаем собранные пакеты
sudo dpkg -i ../*.deb
