Как я могу запустить nginx через выскочку?

rm -rf .[^.] .??*

Должен поймать все случаи.?? * будет только соответствовать 3 + символьные имена файлов (как объяснено в предыдущем ответе). [^]. поймает любые два ввода символов (кроме..).

9
задан 20 May 2010 в 04:15
7 ответов

У Вас не может быть нескольких stop on директивы в новомодной должностной инструкции для Выскочки> = 0.5.

И console owner вероятно, не, что Вы хотите (это делает nginx владельцем системной консоли).

Попытка:

description "nginx http daemon"
start on runlevel 2
stop on runlevel [016]
console output
exec /usr/sbin/nginx -c /etc/nginx/nginx.conf  -g "daemon off;"
respawn
3
ответ дан 2 December 2019 в 22:21
  • 1
    Все еще неизвестное задание, увы. Где Вы получаете эту информацию от? Человек? Информация? онлайн? Где 0.6.5 документируется? –  chiggsy 20 May 2010 в 22:11
  • 2
    отчасти работавший.. спасибо –  chiggsy 21 May 2010 в 03:18
  • 3
    Да, трудно найти текущую Новомодную документацию, по крайней мере, в сети. Но страница руководства довольно хороша. Попробуйте: man 5 init –  Jacek Konieczny 22 May 2010 в 10:18

Я использую:

description "Nginx HTTP Server"

start on filesystem
stop on runlevel [!2345]

respawn

exec /opt/nginx/sbin/nginx -g "daemon off;"

Остановка runlevel [!...] кажется, является более стандартным. Это - то, что запас ssh/samba сценарии делают. Необходимо также добавить respawn бит, таким образом, это перезапускает, если это умирает. Я также не уверен, почему Вы хотите console output это просто отправляет консольный вывод в stdout. Поведение по умолчанию состоит в том, чтобы просто отправить консольный вывод на регистратор.

Вы видите все документы строки файла конфигурации о Выскочке Wiki

0
ответ дан 2 December 2019 в 22:21
  • 1
    Wiki в целом. Страницы справочника в порядке, но они уверенный не являются 'информационными' страницами, которые обычно намного более подробны. –  chiggsy 18 October 2010 в 08:09
description "nginx"

start on (net-device-up and local-filesystems)
stop on runlevel [016]

expect fork
respawn
exec /usr/sbin/nginx

См. http://geeknme.wordpress.com/2009/10/15/getting-started-with-upstart-in-ubuntu для больше.

0
ответ дан 2 December 2019 в 22:21

Вы не можете. По крайней мере, не правильно, так или иначе.

Nginx не порождает своего демона одним из двух способов, которыми требует выскочка, или через “ожидают, что ветвление” или “ожидает демона”, таким образом, выскочка будет не мочь отследить основной процесс nginx. Существуют некоторые взломы, но у них есть свои собственные проблемы.

Если Вы будете хорошо с тем, что выскочка не может отслеживать основной процесс и уничтожить его на завершении работы, то это будет работать:

start on local-filesystems \
  and (net-device-added INTERFACE=lo) \
  and (runlevel [12345])
stop on runlevel [06]

env DAEMON=/usr/sbin/nginx

respawn
respawn limit 10 5

expect daemon

pre-start script
  $DAEMON -t
end script

$DAEMON
3
ответ дан 2 December 2019 в 22:21

В NGINX Wiki есть пример файла конфигурации Upstart .

Возможно, вам потребуется изменить путь к nginx двоичный файл в файле конфигурации.

Этот файл конфигурации у меня отлично работает с Ubuntu 10.04 и nginx 1.0.5.

Я также установил символическую ссылку nginx в /etc/init.d , указывающую на / lib / init / upstart-job , чтобы я мог использовать стандартную команду service для запуска и остановки nginx .

Примечание: Если вы установите Phusion Passenger с NGINX, возможно, вам потребуется добавить следующую строку в сценарий конфигурации Upstart:

env PID=/opt/nginx/logs/nginx.pid
post-stop script
    start-stop-daemon --stop --pidfile $PID --name nginx --exec $DAEMON --signal TERM
end script

Я счел это необходимым в моей конфигурации Ubuntu. В противном случае, когда я выполнил initctl stop nginx или service nginx stop , nginx фактически не остановился. Я также заметил, что Upstart думал, что у процесса nginx есть PID, который на самом деле был PID одного из процессов Passenger. Итак, очевидно, что NGINX / Passenger немного сбивает с толку Upstart.

2
ответ дан 2 December 2019 в 22:21

Я оказывался здесь несколько раз, поэтому подумал, что дам обновленный ответ, основанный на моем собственном опыте, после того, как использовал ответы здесь. Особая благодарность @danorton и @orj за их ответы.

Этот скрипт был протестирован на Upstart 1.5, работающем в Ubuntu 12.04 с Nginx 1.0.11 и Passenger 3.0.11. Если вы не используете Passenger, возможно, вам придется поиграть с линией post-stop . Обратитесь к кулинарной книге Upstart.

В пустой /etc/init/nginx.conf добавьте следующие строки (вы можете удалить комментарии, если хотите):

description "nginx http daemon"

start on (filesystem and net-device-up IFACE=lo)
stop on runlevel [!2345]

env DAEMON=/usr/local/nginx/sbin/nginx
env PIDFILE=/var/run/nginx.pid

# Needed to allow Nginx to start, however, the wrong PID will be tracked
expect fork

# Test the nginx configuration (Upstart will not proceed if this fails)
pre-start exec $DAEMON -t

# Ensure nginx is shutdown gracefully
# Upstart will be tracking the wrong PID so the following is needed to stop nginx
post-stop exec start-stop-daemon --stop --pidfile $PIDFILE --name nginx --exec $DAEMON --signal QUIT

# Start Nginx
exec $DAEMON

I ' я взял сценарий Upstart из Nginx Wiki и изменил его, так как ряд строк не нужен, вызывает путаницу или не работает.

Возможно, вам потребуется изменить env DAEMON и env PID строк в зависимости от того, где вы установили nginx и записываете PID. PID можно настроить в nginx.

Я пробовал все формы ожидать . Кажется, работает только expect fork . С помощью Passenger nginx создает 61 вилку. Upstart требует 0, 1 или 2. Как другие намекнули, Upstart будет отслеживать неправильный PID. Я также удалил респаун , поскольку он ничего не делает, вероятно, по той же причине. Некоторые дополнительные сценарии до и после запуска могут исправить это, получив реальный PID. Я, однако, использую monit для обработки перезапусков, поэтому в этом нет необходимости.

Не используйте daemon off . Это только для разработки. См. http://wiki.nginx.org/CoreModule#daemon

Ссылки:

16
ответ дан 2 December 2019 в 22:21

Oddly none of the answers here actually works fully as they leave upstart in a stop/killed state which prevents another start working. This means that restart nginx fails.

The bug with upstart is well documented at https://bugs.launchpad.net/upstart/+bug/406397 and I'm astonished that the author of upstart doesn't seem to care enough to fix it. The only solution I've seen that works is the following (stolen from the same bug report):

# nginx - Nginx Web Server
#

description "Nginx Web Server"

start on (local-filesystems and
    (net-device-up IFACE=eth1 or net-device-up IFACE=eth0) )
stop on runlevel [!2345]

env DAEMON=/usr/local/sbin/nginx
env PID=/var/run/nginx.pid

respawn

pre-start script
$DAEMON -s stop 2> /dev/null || true
$DAEMON -t > /dev/null
$DAEMON
end script

script
sleepWhileAppIsUp(){
    while pidof $1 >/dev/null; do
    sleep 1
    done
}
sleepWhileAppIsUp $DAEMON
end script

post-stop script
if pidof > /dev/null $DAEMON;
then
    $DAEMON -s stop
fi
end script

The advantage of writing it like this is that even the respawn works. The disadvantage is that it's ugly and a nasty hack.

0
ответ дан 2 December 2019 в 22:21

Теги

Похожие вопросы