runit и nginx

Как первый шаг, я удалил бы все временные файлы и канал использования вместо этого: от сначала sed можно передать stdout по каналу к второму и затем к третьему. Затем Ваш less команда бесполезна: просто передайте по каналу снова от третьего sed кому: grep.

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

Для лучшего нахождения решения необходимо сказать нам, что в настоящее время блокирует Вас: это - один из sed команды? Какой?

6
30.07.2014, 03:56
2 ответа

Вы можете использовать опцию демон off:

exec /usr/sbin/nginx -c /etc/nginx/nginx.conf  -g "daemon off;"

Из nginx wiki:

Вы можете безопасно использовать демон off в рабочем режиме с запуском / демон-инструменты, однако вы не можете сделать изящное обновление. master_process не должны использоваться в производстве.

При использовании runit для управления nginx становится родительским процессом ведущего процесса nginx. Но если попытаться сделать онлайн-обновление, то ведущий процесс nginx будет вилкой и выполнит новый двоичный процесс.

Создается новый ведущий процесс, но поскольку старый ведущий процесс все еще существует (так как он управляется подпрограммой runit), то родителем нового ведущего процесса будет init-процесс, так как подпрограмма runit не может управлять новым ведущим процессом, так как он не запустил его.

7
27.01.2020, 20:27

Не отключайте главный процесс для всего, что используется в реальном мире, он не выполняет -нулевых обновлений и не поддерживается.

Делайте это/правильно, используя контрольный мониторинг страницы порта 80 и т. д., чтобы не содержать какого-либо волшебного контента, иначе nginx не сможет -выполнять обновления с нулевым временем простоя, и вы будете выглядеть как любитель ранга.

#...
set -e
## config - start - should move to another file
CONF='/etc/nginx/nginx.conf'
# TODO: grab below by parsing CONF
PROTO=http
IP=0.0.0.0
PORT=80
## config - end - should move to another file
case "$(uname | tr '[A-Z]' '[a-z]')" in
darwin|freebsd|netbsd|openbsd) NC_ARGS="-n -w 5 -z '${IP}' '${PORT}'" ;;
linux) NC_ARGS="-n -w 5 --send-only '${IP}' '${PORT}'" ;;
*) echo "unsupported os $(uname)" >&2; exit 1 ;;
esac
/usr/bin/nginx -t -c "${CONF}"
/usr/bin/nginx -c "${CONF}"
sleep 5
while /usr/bin/nc $NC_ARGS </dev/null >/dev/null 2>&1; do
  set -e # loop runs in a subshell
  /usr/bin/curl -m5 -fsS -A 'runit script/0.0.0' \
    "${PROTO}"://"${IP}":"${PORT}" | \
    /usr/bin/grep -q 'This comment is required'
  sleep 2
done
0
27.01.2020, 20:27

Теги

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