Перезапустить nginx: Как перезапустить nginx только после того, как тест конфигурации был успешно выполнен на Ubuntu?
Как перезапустить nginx только после того, как тест конфигурации был успешно выполнен на Ubuntu?
Когда я перезапускаю службу nginx в командной строке на сервере Ubuntu, служба выходит из строя, когда файл конфигурации nginx содержит ошибки. На многосайтовом сервере это приводит к отключению всех сайтов, даже тех, которые не имеют ошибок конфигурации.
Чтобы предотвратить это, я сначала запускаю тест конфигурации nginx:
nginx -t
После успешного завершения теста я смог перезапустить службу:
/etc/init.d/nginx restart
Или только перезагрузить конфигурации сайта nignx без перезагрузки:
nginx -s reload
Есть ли способ объединить эти две команды, где команда перезапуска обусловлена результатом теста конфигурации?
Я не смог найти это в интернете, и официальная документация по этому вопросу довольно проста. Я не очень хорошо ориентируюсь в Linux, поэтому не знаю, находится ли то, что я ищу, прямо передо мной или вообще невозможно.
Я использую nginx v1.1.19.
ubuntu
command-line
nginx
Поделиться
Источник
jan
03 сентября 2013 в 08:37
7 ответов
- Когда перезапускать и не перезагружать Nginx?
Когда нужно перезапустить nginx и перезагрузки не хватит? Имеет ли значение, если используется расширение типа passenger ? Следует ли перезапускать службу, если она потребляет слишком много памяти. Есть ли другие причины для перезапуска Nginx, особенно после изменения конфигурации либо в…
- как мне перезапустить nginx, который устанавливается пассажиром
Я установил nginx на passenger-install-nginx-module и запустил nginx на /opt/nginx/sbin/nginx , но я не знаю, как остановить или перезапустить nginx после обновления моего nginx conf. Я знаю, что могу использовать путь ps aux | grep и kill , это есть способ, как services restart nginx ?
Поделиться
Dan Dascalescu
19 мая 2015 в 01:54
49
На самом деле, насколько я знаю, nginx покажет пустое сообщение, и оно на самом деле не будет перезапущено, если конфигурация плохая.
Единственный способ испортить его-это сделать остановку nginx, а затем начать снова. Это удалось бы остановить,но не начать.
Поделиться
Mohammad AbuShady
03 сентября 2013 в 09:43
39
Я использую следующую команду для перезагрузки Nginx (версия 1.5.9) только в том случае, если тест конфигурации прошел успешно:
/etc/init.d/nginx configtest && sudo /etc/init.d/nginx reload
Если вам нужно делать это часто, вы можете использовать псевдоним. Я использую следующее:
alias n='/etc/init.d/nginx configtest && sudo /etc/init.d/nginx reload'
Трюк здесь делается с помощью «&&», который выполняет вторую команду только в том случае, если первая была успешной. Здесь вы можете увидеть более подробное объяснение использования оператора «&&».
Вы можете использовать «restart» вместо «reload», если действительно хотите перезапустить сервер.
Поделиться
Mauricio Sánchez
24 января 2014 в 16:55
8
alias nginx.start='sudo nginx -c /etc/nginx/nginx.conf'
alias nginx.stop='sudo nginx -s stop'
alias nginx.reload='sudo nginx -s reload'
alias nginx.config='sudo nginx -t'
alias nginx.restart='nginx.config && nginx.stop && nginx. start'
alias nginx.errors='tail -250f /var/logs/nginx.error.log'
alias nginx.access='tail -250f /var/logs/nginx.access.log'
alias nginx.logs.default.access='tail -250f /var/logs/nginx.default.access.log'
alias nginx.logs.default-ssl.access='tail -250f /var/logs/nginx.default.ssl.log'
а затем используйте команды » nginx.reload » и т. д..
Поделиться
MechanisM
17 октября 2016 в 21:36
6
Вы можете перезагрузить его с помощью /etc/init.d/nginx reload
и sudo service nginx reload
Если nginx -t
выдает какую-то ошибку, то он не будет перезагружаться
поэтому используйте && для запуска обоих одновременно
любить
nginx-t && /etc/init.d/nginx перезарядка
Поделиться
gokul kandasamy
07 июля 2018 в 09:35
2
Вы можете использовать сигналы для управления nginx.
Согласно документации, вам нужно отправить сигнал HUP в мастер-процесс nginx.
HUP-изменение конфигурации, следование измененному часовому поясу (только для FreeBSD и Linux), запуск новых рабочих процессов с новой конфигурацией, изящное завершение старых рабочих процессов
Проверьте документацию здесь: http://nginx.org/en/docs/control.html
Вы можете отправить сигнал HUP в главный процесс nginx PID следующим образом:
kill -HUP $( cat /var/run/nginx.pid )
Приведенная выше команда считывает nginx PID из /var/run/nginx.pid
. По умолчанию nginx pid записывается в /usr/local/nginx/logs/nginx.pid
, но это может быть переопределено в конфигурации. Проверьте свой nginx.config
, чтобы увидеть, где он сохраняет PID.
Поделиться
hcristea
07 июля 2014 в 08:55
1
По крайней мере, на Debian сценарий запуска nginx имеет функцию перезагрузки, которая делает:
reload)
log_daemon_msg "Reloading $DESC configuration" "$NAME"
test_nginx_config
start-stop-daemon --stop --signal HUP --quiet --pidfile $PID \
--oknodo --exec $DAEMON
log_end_msg $?
;;
Похоже, все, что вам нужно сделать, это позвонить service nginx reload
вместо restart
, так как он звонит test_nginx_config
.
Поделиться
Daenney
26 февраля 2014 в 15:53
Похожие вопросы:
Как перезапустить приложение сразу в android после того, как его убили?
Привет, я делаю антивирусное и противоугонное приложение на android. Я хочу перезапустить свое приложение сразу же после того, как меня убьет убийца задач. На данный момент я использую только метод…
Как перезапустить nginx на webfaction?
Я последовал за этим постом, чтобы установить nginx и использовать его для обслуживания другого приложения django на webfaction- http:/ / www.ravelrumba.com/blog/install-nginx-webfaction / я начал…
nginx на VirtualBox Ubuntu гостю подают несвежий контент
Я не знаю, является ли это проблемой с Ubuntu, VirtualBox или nginx. Я запускаю nginx на Ubuntu, который является гостем VirtualBox на Windows 7. Папка Windows 7 монтируется как автоматически mount,…
Когда перезапускать и не перезагружать Nginx?
Когда нужно перезапустить nginx и перезагрузки не хватит? Имеет ли значение, если используется расширение типа passenger ? Следует ли перезапускать службу, если она потребляет слишком много памяти….
как мне перезапустить nginx, который устанавливается пассажиром
Я установил nginx на passenger-install-nginx-module и запустил nginx на /opt/nginx/sbin/nginx , но я не знаю, как остановить или перезапустить nginx после обновления моего nginx conf. Я знаю, что…
Nginx каталог конфигурации по умолчанию
Я хотел бы управлять своими конфигурациями nginx в git repo для нескольких разных веб-сайтов. Я разрабатываю на OSX и развертываю на Ubuntu коробках. На OSX, после установки с brew мой nginx по…
CentOS 6.6 с Nginx 1.6.2-внезапно не удается перезапустить nginx — nginx: [emerg] open() “/usr/share/nginx/on” не удалось (13: разрешение отказано)
Это новая установка, в которой nginx ранее запускался и останавливался нормально. Я считаю, что эта ошибка возникла после включения серверных блоков, которые успешно протестировали (nginx-t). Затем…
Docker — как перезапустить nginx, чтобы применить пользовательскую конфигурацию?
Я пытаюсь настроить среду разработки LEMP с помощью docker, и у меня возникли проблемы с nginx , потому что я не могу перезапустить nginx , как только он получит новую конфигурацию….
Git Lab CI: как перезапустить (перезапустить) тест после сбоя (fail)?
Как перезапустить (перезапустить) тест после сбоя (fail)? У меня есть тест ci_events_page.py (pytest-selenium test) настройки yml(.gitlab-ci.yml): ci_events_page.py: stage: test type: test script: -…
Как перезапустить PostgreSQL в Ubuntu 18.04
Как перезапустить PostgreSQL через консоль ssh? Когда я ищу эту вещь на SO, я нахожу только: postgres, ubuntu как перезапустить сервис при запуске? застрять на кластеризации после перезагрузки…
Как запустить, остановить или перезапустить Nginx
Nginx — это бесплатный высокопроизводительный HTTP и обратный прокси-сервер с открытым исходным кодом, отвечающий за загрузку некоторых крупнейших сайтов в Интернете. Он может использоваться как автономный веб-сервер и как обратный прокси-сервер для Apache и других веб-серверов.
Если вы разработчик или системный администратор, скорее всего, вы регулярно работаете с Nginx. Запуск, остановка и перезапуск / перезагрузка являются наиболее распространенными задачами при работе с веб-сервером Nginx.
Прежде чем вы начнете
В инструкциях предполагается, что вы вошли в систему как пользователь root или пользователь с привилегиями sudo .
Большинство современных дистрибутивов Linux используют SystemD в качестве системы инициализации по умолчанию и менеджера сервисов. Старые дистрибутивы основаны на SysVinit и используют сценарии инициализации для управления сервисами.
И служебные модули SystemD, и сценарий SysVinit принимают следующие аргументы для управления службой Nginx:
start -
Запускает службу Nginx.stop -
Завершает службу Nginx.restart -
Останавливается, а затем запускается служба Nginx.reload -
авершает работу дочерних процессов, загружает новую конфигурацию и запускает новые дочерние процессы.status -
показывает статус сервиса.
Команды для управления службой Nginx одинаковы во всех дистрибутивах Linux.
Запустите, остановите и перезапустите Nginx, используя
systemctl
Systemd система и сервис менеджер по последней Ubuntu 18.04 / 16.04 , CentOS 7 / 8 , и Debian 10 / 9 — релизов.
Всякий раз, когда вы вносите изменения в конфигурацию Nginx, вам необходимо перезапустить или перезагрузить процессы веб-сервера. Выполните следующую команду, чтобы перезапустить службу Nginx:
sudo systemctl restart nginx
При добавлении или редактировании серверных блоков предпочитайте перезагрузку, а не перезапуск. Перезапускайте службу только при внесении значительных изменений, таких как изменение портов или интерфейсов. При перезагрузке Nginx загружает новую конфигурацию, запускает новые рабочие процессы с новой конфигурацией и корректно завершает работу старых рабочих процессов.
Выполните команду ниже, чтобы перезагрузить службу Nginx:
sudo systemctl restart nginx
Nginx также может напрямую контролироваться с помощью команд. Например, чтобы перезагрузить сервис, вы можете использовать следующую команду:
sudo /usr/sbin/nginx -s reload
Чтобы запустить службу Nginx, выполните следующую команду:
sudo systemctl start nginx
Выполните следующую команду, чтобы остановить службу Nginx:
sudo systemctl stop nginx
Запустите, остановите и перезапустите Nginx, используя SysVinit
Старые (EOLed) версии Ubuntu, CentOS и Debian используют сценарии init.d для запуска, остановки и перезапуска демона Nginx.
Перезапустите сервис Nginx:
sudo service nginx restart
Запустите сервис Nginx:
sudo service nginx start
Остановите службу Nginx:
sudo service nginx stop
Вывод
В этом руководстве мы показали, как запускать, останавливать и перезапускать веб-сервер Nginx в системах Linux.
Как установить Nginx в Ubuntu 18.04
Предыдущая версия руководства была написана Джастином Эллингвудом.
Введение
Nginx является одним из самых популярных веб-серверов в мире, его используют для хостинга самых больших и нагруженных сайтов в Интернете. Nginx в подавляющем большинстве случаев менее требователен к ресурсам, чем Apache; его можно использовать как в качестве веб-сервера, так и в качестве обратного прокси-сервера (reverse proxy).
В этом руководстве мы рассмотрим процесс установки Nginx на ваш сервер с Ubuntu 18. 04.
Перед установкой
Перед тем, как начать следовать описанным в этой статье шагам, убедитесь, что у вас есть обычный не-рутовый (non-root) пользователь с привилегиями sudo
. Узнать, как настроить такого пользователя на вашем сервере, можно из статьи о первичной настройке сервера на Ubuntu 18.04.
После того, как вы создали такого пользователя, зайдите на сервер используя его логин и пароль. Теперь вы готовы следовать шагам, описанным в этой статье.
Шаг 1 — Установка веб-сервера Nginx
Nginx доступен в стандартных репозиториях Ubuntu, поэтому мы можем использовать менеджер пакетов apt
для его установки.
Поскольку мы собираемся использовать apt
в первый раз в ходе этой сессии, начнём с обновления локального списка пакетов. Далее установим nginx
:
- sudo apt update
- sudo apt install nginx
В результате выполнения этих команд apt
установит Nginx и другие необходимые для его работы пакеты на ваш сервер.
Шаг 2 — Настройка файрвола
Перед тем, как начать проверять работу Nginx, нам необходимо настроить наш файрвол для разрешения доступа к сервису. При установки Nginx регистрируется в сервисе файрвола ufw
. Поэтому настройка доступа осуществляется достаточно просто.
Для вывода настроек доступа для приложений, зарегистрированных в ufw
, введём команду:
В результате выполнения этой команды будет выведен список профилей приложений:
Вывод
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Как видно из этого вывода, для Nginx настроено три профиля:
- Nginx Full: этот профиль открывает порты 80 (обычный, не шифрованный веб-трафик) и 443 (трафик шифруется с помощью TLS/SSL).
- Nginx HTTP: этот профиль открывает только порт 80 (обычный, не шифрованный веб-трафик).
- Nginx HTTPS: этот профиль открывает только порт 443 (трафик шифруется с помощью TLS/SSL).
Рекомендуется настраивать ufw
таким образом, чтобы разрешать только тот трафик, который вы хотите разрешить в явном виде. Поскольку мы ещё не настроили SSL для нашего сервера, в этой статье мы разрешим трафик только для порта 80.
Сделать это можно следующей командой:
- sudo ufw allow 'Nginx HTTP'
Вы можете проверить изменения введя команду:
В результате должен отобразиться вывод следующего вида:
Вывод
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Шаг 3 — Проверка работы веб-сервера
После завершения процесса установки Ubuntu 18.04 запустит Nginx автоматически. Таким образом веб-сервер уже должен быть запущен.
Мы можем убедиться в этом выполнив следующую команду:
Вывод
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
Как видно из вывода выше, сервис запущен и работает. Тем не менее, убедимся в его полной работоспособности путём запроса веб-страницы.
Для этого мы можем проверить, отображается ли веб-страница Nginx, доступная по умолчанию при вводе доменного имени или IP адреса сервера. Если вы не знаете публичного IP адреса сервера, вы можете найти этот IP адрес несколькими способами.
Попробуйте набрать эту команду в терминале вашего сервера:
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
В результате будет выведено несколько IP адресов. Попробуйте вставить каждый из них в браузер.
Другим способом определить свой IP адрес будет проверка, как ваш сервер виден из Интернета:
Наберите полученный IP адрес или доменное имя в вашем веб-браузере.
http://IP_адрес_вашего_сервера
Вы должны увидеть страницу Nginx по умолчанию.
Если вы видите подобную страницу в своём браузере, вы успешно установили Nginx.
Шаг 4 — Управление процессом Nginx
Теперь, когда Nginx установлен и мы убедились в его работоспособности, ознакомимся с некоторыми базовыми командам для управления нашим веб-сервером.
Для остановки веб-сервера используйте команду:
- sudo systemctl stop nginx
Для запуска остановленного веб-сервера наберите:
- sudo systemctl start nginx
Для перезапуска веб-сервера можно использовать следующую команду:
- sudo systemctl restart nginx
Если вы вносите изменения в конфигурацию Nginx, часто можно перезапустить его без закрытия соединений. Для этого можно использовать следующую команду:
- sudo systemctl reload nginx
По умолчанию Nginx настроен на автоматический старт при запуске сервера. Если такое поведение веб-сервера вам не нужно, вы можете отключить его следующей командой:
- sudo systemctl disable nginx
Для повторного включения запуска Nginx при старте сервера введите:
- sudo systemctl enable nginx
Шаг 5 — Настройка серверных блоков (рекомендуется)
При работе с Nginx серверный блоки (аналог виртуальных хостов в Apache) используются для инкапсуляции настроек сайтов и позволяют хостить более одного домена на сервере. Мы рассмотрим настройку серверных блоков на примере example.com, но вам будет необходимо заменить этот домен своим реальным доменным именем. Узнать больше о настройке доменных имён в DigitalOcean вы можете из нашего руководства Введение в DNS DigitalOcean.
Nginx для Ubuntu 18.04 уже настроен для поддержки одного серверного блока, который настроен на показ документов из директории /var/www/html
. Несмотря на то, что это работает для одного сайта, это не очень удобно для хостинга нескольких сайтов. Вместо того, чтобы менять /var/www/html
создадим новую структуру директорий внутри /var/www/
для нашего сайта example.com. Директорию /var/www/html
оставим без изменений, её содержимое будет отображаться, если клиентские запросы не подходят для отображения других настроенных на сервере сайтов.
Создадим директорию для example.com следующей командой, используя флаг -p
для создания любых необходимых родительских директорий:
- sudo mkdir -p /var/www/example.com/html
Далее настроим права доступа для созданной директории для текущего пользователя, используя переменную окружения $USER
:
- sudo chown -R $USER:$USER /var/www/example.com/html
Теперь права должны для корневой директории быть настроены правильным образом при условии, что вы не меняли своё значение umask
. На всяких случай мы можем удостовериться в этом командой:
- sudo chmod -R 755 /var/www/example.com
Далее создадим страницу index.html
в nano
или любом другом текстовом редакторе:
- nano /var/www/example.com/html/index.html
Добавим в файл следующий HTML:
/var/www/example. com/html/index.html
<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h2>Success! The example.com server block is working!</h2>
</body>
</html>
Сохраните и закройте файл.
Для того, чтобы Nginx мог отдавать этот контент, нам необходимо настроить серверный блок. Вместо того, чтобы редактировать существующий файл конфигурации серверного блока, создадим новый файл для нашего сайта — /etc/nginx/sites-available/example.com
:
- sudo nano /etc/nginx/sites-available/example.com
Скопируйте следующий текст настроек серверного блока в созданный файл:
/etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Обратите внимание на то, что мы изменили конфигурацию root
на адрес нашей новой директории, а server_name
на наше доменное имя.
Теперь активируем файл путём создания ссылки на него в директории sites-enabled
, которую Nginx проверяет при старте:
- sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Теперь два серверных блока активированы и настроены для ответа на основании своих директив listen
и server_name
(вы можете узнать больше о том, как Nginx обрабатывает эти директивы вот тут):
example.com
: Будет отвечать на запросыexample.com
иwww.example.com
.default
: Будет отвечать на любые запросы на порту 80, которые не соответствуют другим настроенным блокам.
Для того, чтобы избежать потенциальной проблемы hash bucket memory, которая может появиться при добавлении дополнительных имён серверов, нам необходимо изменить одно значение в файле /etc/nginx/nginx.conf
. Откройте файл командой:
- sudo nano /etc/nginx/nginx.conf
Найдите директиву server_names_hash_bucket_size
и удалите символ #
для того, чтобы раскомментировать её:
/etc/nginx/nginx.conf
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Далее проверим файлы Nginx на наличие синтаксических ошибок:
Сохраните и закройте файл.
Если никаких проблем не обнаружилось, перезапустите Nginx для применения внесённых изменений:
- sudo systemctl restart nginx
Теперь Nginx должен корректно обрабатывать ваше новое доменное имя. Вы можете убедиться в этом набрав в браузере http://example.com
и увидев что-то вроде такого вывода:
Шаг 6 — Важные файлы и директории Nginx
Теперь, когда мы знаем основные команды для управления веб-сервером, ознакомимся с основными директориями и файлами.
Контент
/var/www/html
: веб-контент, который по умолчанию состоит только из тестовой страницы Nginx, которую мы видели ранее, находится в директории/var/www/html
. Путь к этой директории можно настроить в файлах конфигурации Nginx.
Конфигурация сервера
/etc/nginx
: директория конфигурации Nginx. Все файлы конфигурации Nginx находятся в этой директории./etc/nginx/nginx.conf
: основной файл конфигурации Nginx. Этот файл используется для внесения изменений в глобальную конфигурацию Nginx./etc/nginx/sites-available
: директория, в которой хранятся серверные блоки для каждого сайта. Nginx не будет использовать конфигурационные файлы в этой директории, если они не имеют соответствующих ссылок в директорииsites-enabled
(см. ниже). Обычно все настройки серверного блока осуществляются в этой директории, а затем сайт активируется путём создания ссылки в другой директории./etc/nginx/sites-enabled/
: в этой директории хранятся серверные блоки для активированных сайтов. Обычно это достигается путём создания ссылок на конфигурационные профили сайтов, расположенные в директорииsites-available
./etc/nginx/snippets
: в этой директории хранятся фрагменты конфигурации, которые можно использовать при конфигурации любых сайтов. Фрагменты конфигурации, которые потенциально могут быть использованы в нескольких файлах конфигурации, являются прекрасными кандидатами для создания этих сниппетов.
Логи сервера
/var/log/nginx/access.log
: каждый запрос к вашему веб-серверу записывается в этот файл лога, если иное не задано настройками Nginx./var/log/nginx/error.log
: любые ошибки Nginx будут записываться в этот файл.
Заключение
Теперь, когда у вас есть установленный и настроенный веб-сервер, вы можете выбирать, какой контент отдавать пользователям, и какие другие технологии вы можете использовать в дополнение к веб-серверу.
Если вы хотите использовать более полный стек приложений, рекомендуем ознакомиться с нашим руководством по настройке стека LEMP на сервере с Ubuntu 18.04.
Как Я Могу Перезапустить Пакет Nginx В Gitlab Отдельно?
Я установил версию Gitlab CE. Я могу найти nginx в Gitlab. Однако я не могу найти способ перезапуска nginx отдельно. Я пробовал sudo service nginx restart
, но он дает:
* Restarting nginx nginx [fail]
Я проверил весь документ, но не могу найти решение. Я пытаюсь добавить vhost в связанный nginx в соответствии с этим учебником. Но я придерживался этого шага. Есть ли другой способ добавить vhost к связанным nginx с Gitlab? Или Как проверить, работает ли мой nginx conf?
Изменить: ошибка 502, которую я решил.
Я пытаюсь использовать NON-bundle nginx в соответствии с этим doc, но после того, как я изменил gitlab.rb
и запустил sudo gitlab-ctl reconfigure
, Я получил ошибку 502 Whoops, GitLab is taking too much time to respond.
.
Вот мой gitlab.conf
для nginx.
upstream gitlab {
server unix://var/opt/gitlab/gitlab-git-http-server/sockets/gitlab.socket fail_timeout=0;
#
}
server {
listen *:80;
server_name blcu.tk;
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public;
client_max_body_size 250m;
access_log /var/log/gitlab/nginx/gitlab_access.log;
error_log /var/log/gitlab/nginx/gitlab_error.log;
# Ensure Passenger uses the bundled Ruby version
passenger_ruby /opt/gitlab/embedded/bin/ruby;
# Correct the $PATH variable to included packaged executables
passenger_env_var PATH "/opt/gitlab/bin:/opt/gitlab/embedded/bin:/usr/local/bin:/usr/bin:/bin";
# Make sure Passenger runs as the correct user and group to
# prevent permission issues
passenger_user git;
passenger_group git;
# Enable Passenger & keep at least one instance running at all times
passenger_enabled on;
passenger_min_instances 1;
location / {
try_files $uri $uri/index.html $uri.html @gitlab;
}
location @gitlab {
# If you use https make sure you disable gzip compression
# to be safe against BREACH attack
proxy_read_timeout 300; # Some requests take more than 30 seconds.
proxy_connect_timeout 300; # Some requests take more than 30 seconds.
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Frame-Options SAMEORIGIN;
proxy_pass http://gitlab;
}
location ~ ^/(assets)/ {
root /opt/gitlab/embedded/service/gitlab-rails/public;
# gzip_static on; # to serve pre-gzipped version
expires max;
add_header Cache-Control public;
}
error_page 502 /502./])$ $1/ permanent;
#...
}
Перезагрузите Nginx
После внесения изменений в файл конфигурации для домена необходимо перезапустить nginx. Для перезапуска выполните следующую команду:
service nginx restart
Проверить корректность конфигурационного файла можно с помощью команды: nginx -t
VPS с установленной CentOS
Закажите сервер с чистой CentOS или панелью
управления ISPmanager всего за пару минут.
Подробнее
Помогла ли вам статья?
4
раза уже
помогла
django — Не могу перезапустить nginx
Я использую nginx с Django в Ubunto 10:04. Проблема в том, что когда я перезагружаю nginx, я получаю эту ошибку.
Sudo /etc/init.d/nginx restart
Restarting nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
Кроме того, я попытался остановить, а затем начать, но все равно получаю ошибку.
Вот вывод из lsof:
Sudo lsof -i tcp:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 27141 root 6u IPv4 245906 0t0 TCP *:www (LISTEN)
nginx 27142 nobody 6u IPv4 245906 0t0 TCP *:www (LISTEN)
Если я убью процесс с PID 27141, он будет работать. Тем не менее, я хотел бы понять, почему я не могу просто перезагрузить компьютер.
Вот файл nginx.conf:
worker_processes 1;
user nobody nogroup;
pid /tmp/nginx.pid;
error_log /tmp/nginx.error.log;
events {
worker_connections 1024;
accept_mutex off;
}
http {
include mime.types;
default_type application/octet-stream;
access_log /tmp/nginx.access.log combined;
sendfile on;
upstream app_server {
# server unix:/tmp/gunicorn.sock fail_timeout=0;
# For a TCP configuration:
server 127.0.0.1:8000 fail_timeout=0;
}
server {
listen 80 default;
client_max_body_size 4G;
server_name _;
keepalive_timeout 5;
# path for static files
root /home/apps/venvs/app1/app1;
location / {
# checks for static file, if not found proxy to app
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_Host;
proxy_redirect off;
proxy_pass http://app_server;
}
error_page 500 502 503 504 /500.html;
location = /500.html {
root /path/to/app/current/public;
}
}
}
Есть идеи?
Настройка Веб окружения Битрикс
Наши решения используют дополнительные библиотеки а также требуют дополнительной настройки сервера под высокие нагрузки, чтобы сайт работал стабильно. Например при запуске выгрузок в многопоточном режиме или же каталогов большого размера. Что же надо сделать чтобы настроить типовое окружение Битрикс под ОС Centos 7 для бесперебойной работы наших модулей?
Давайте для начала перечислим конфигурационные файлы в которых проводиться изменение основных настроек сервера под управлением ОС Centos 7 и установленным окружением 1С-Битрикс.
Главным конфигурационным файлом по умолчанию является /etc/rc.d/init.d/bvat — это скрипт автоматической настройки в нем прописаны параметры используемые веб окружением Битрикс для автоматической настройки под имеющиеся физические ресурсы сервера. Данный скрипт удобен в использовании и позволяет в полностью автоматическом режиме применить настройки по умолчанию, задействовав отведенные серверу ресурсы.
Кроме него есть и конфигурационный файл сервера баз данных — /etc/mysql/conf.d/bvat.cnf в котором хранятся переменные сервера MySQL, перечислим рекомендуемые значения при наличии на вашем сервере 64 гигабайт физической памяти:
# memory: 65536MB
[mysqld]
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 16M
innodb_buffer_pool_size = 18432M
max_connections = 205
table_open_cache = 80392
thread_cache_size = 512
max_heap_table_size = 256M
tmp_table_size = 256M
key_buffer_size = 256M
join_buffer_size = 32M
sort_buffer_size = 32M
bulk_insert_buffer_size = 2M
myisam_sort_buffer_size = 32M
Но как все сделанное человеком, он не может настроить ваш сервер идеально, для тонкой настройки под конкретные рекомендации нужно использовать ручное управление конфигурационными файлами. Но часто под несложные проекты настраиваемых им рекомендуемых параметров MySQL, PHP и Apache в зависимости от ресурсов сервера бывает вполне достаточно, и если у вас не возникает никаких проблем, мы бы порекомендовали не отключать автоматическое конфигурирование.
Но в случаях если возникает необходимость изменить дефолтные настройки которые не подходят данный скрипт можно поправить или же вообще отключить автоматическую настройку сервера. Например, наша практика показывает, что при большом размере базы данных, настройки, сделанные через bvat, могут приводить к падению служб с ошибкой «out of memory» или отказом в обслуживании.
Разработчики BitrixVM предусмотрели возможность изменения настроек без отключения скрипта автонастройки bvat. Для этого необходимо внести изменения в специальные конфигурационные файлы (в случае их отсутствия надо создать соответсвующие по указанным путям):
/etc/php.d/bitrixenv.ini — файл хранящий основные настройки сервера
/etc/httpd/bx/conf/prefork.conf — файл хранящий основные параметры сервера по выделению памяти
/etc/php.d/z_bx_custom.ini — файл хранящий дополнительные настройки PHP
/etc/httpd/bx/custom/z_bx_custom.conf — файл хранящий дополнительные настройки Apache
/etc/mysql/conf.d/z_bx_custom.cnf — файл хранящий дополнительные настройки MySQL
/etc/nginx/bx/conf/z_bx_custom.conf — файл хранящий дополнительные настройки nginx
/etc/nginx/bx/conf/im_settings.conf — файл хранящий настройки nginx-push-stream-module
Теперь перечислим основные конфигурационные файлы
/etc/php.ini — файл хранящий настройки PHP
/etc/my.cnf — файл хранящий настройки сервера базы данных MySQL
/etc/nginx/nginx.conf — файл хранящий настройки nginx
дополнительные используемые конфигурационные файлы
/etc/php.d/opcache.ini — файл хранящий настройки используемого акселератора opcache при условии его использования на сервере, кстати очень советуем его использовать так как он ускоряет выполнение PHP путем сохранения скомпилированного кода в памяти, таким образом исключается постоянное выполнение PHP сценария при каждом обращении к коду. Подобное кэширование и оптимизация работы PHP серьезно снижает нагрузку на ресурсы вашего сервера и поднимает его общую производительность.
кроме того есть еще один конфигурационный файл в котором можно переопределить локальные значения для конкретного сайта — /home/bitrix/www/.htaccess или же в доп сайтах /home/bitrix/ext_www/site1.ru/.htaccess и значения переменных PHP указанные в нем будут самые приоритетные в рамках конкретного сайта. Поэтому один из самых простых способов настройки — простая правка файла .htaccess через текстовый редактор файлового менеджера БУС.
Теперь перейдем к установке и настройке дополнительных библиотек, которые используют наши решения, но которые не поставляются в стандартном пакете веб окружения Битрикса. Кстати, если у вас используется не рекомендованное ПО, то заранее хочется посоветовать перейти на использование окружения поставляемого Битриксом, поверьте опыту сэкономите массу нервов и средств на настройке и обслуживании вашего сервера.
Рассматриваем вариант последовательного ввода команд при подключении к серверу по SSH
Установка библиотеки curl в для VMBitrix (CentOS)
yum install curl
echo «extension=curl.so» > /etc/php.d/curl.ini
apachectl graceful
Установка библиотеки xmlwriter в для VMBitrix (CentOS)
yum install php-xml
echo «extension=xmlwriter.so» > /etc/php.d/xmlwriter.ini
apachectl graceful
Установка библиотеки optipng jpegoptim в для VMBitrix (CentOS)
yum -y install optipng jpegoptim
После инсталяции библиотек надо выполнить его полный рестарт
либо же для применения настроек конкретного сервиса, перезагрузить конкретную службу
рестарт апача — systemctl restart httpd.service
рестарт базы данных — service mysqld restart
рестарт nginx — service nginx restart
В данной статье мы постарались собрать максимум конкретики для владельцев сайтов имеющих базовую подготовку в конфигурировании серверов.
Более подробно ознакомиться со всеми нюансами настройки сервера можно в обучающем курсе от Битрикса — https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=37
Если вы не хотите сидеть и разбираться с настройками, переустанавливать ПО сервера и доводить настройки до оптимальных под ваш проект, можете заказать отдельную услугу по настройке вашего сервера у нас — https://www.acrit-studio.ru/services/settings-trading-platforms/installation-vmbitrix-centos/
Назад в раздел
Как запустить, остановить или перезапустить Nginx
Nginx произносится как «двигатель x» — это бесплатный высокопроизводительный HTTP-сервер с открытым исходным кодом и обратный прокси-сервер с открытым исходным кодом, отвечающий за обработку нагрузки некоторых из крупнейших сайтов в Интернете. Его можно использовать как автономный веб-сервер или как обратный прокси-сервер.
для Apache и других веб-серверов.
Если вы разработчик или системный администратор, скорее всего, вы регулярно имеете дело с Nginx. Запуск, остановка и перезапуск / перезагрузка — самые распространенные задачи при работе с веб-сервером Nginx.
В этом руководстве объясняется, как запускать, останавливать и перезапускать Nginx на серверах Linux.
Перед началом работы #
В инструкциях предполагается, что вы вошли в систему как пользователь root или пользователь с помощью sudo
привилегии.
Большинство текущих дистрибутивов Linux используют SystemD в качестве системы инициализации и диспетчера служб по умолчанию. Старые дистрибутивы основаны на SysVinit и используют сценарии инициализации для управления службами.
И служебные блоки SystemD, и сценарий SysVinit принимают следующие аргументы для управления службой Nginx:
-
start
: запускает службу Nginx. -
stop
: завершает работу службы Nginx. -
перезапуск
: останавливает, а затем запускает службу Nginx. -
reload
: плавно перезапускает службу Nginx. При перезагрузке основной процесс Nginx завершает дочерние процессы, загружает новую конфигурацию и запускает новые дочерние процессы. -
статус
: показывает статус услуги.
Команды для управления сервисом Nginx
одинаковы для всех дистрибутивов Linux.
Запуск, остановка и перезапуск Nginx с использованием
systemctl
#
SystemD — это системный и сервисный менеджер для последней версии Ubuntu 18.04.
/16.04
, CentOS 7
/ 8
и Debian 10
/ 9
выпускает.
Каждый раз, когда вы вносите изменения в конфигурацию Nginx, вам необходимо перезапустить или перезагрузить процессы веб-сервера. Выполните следующую команду, чтобы перезапустить службу Nginx:
sudo systemctl restart nginx
При добавлении или редактировании серверных блоков предпочитайте перезагрузку перезапуску.Перезапускайте службу только при внесении значительных изменений, таких как изменение портов или интерфейсов. При перезагрузке Nginx загружает новую конфигурацию, запускает новые рабочие процессы с новой конфигурацией и корректно завершает работу старых рабочих процессов.
Выполните команду ниже, чтобы перезагрузить службу Nginx:
sudo systemctl restart nginx
Nginx также можно напрямую контролировать с помощью сигналов
. Например, чтобы перезагрузить службу, вы можете использовать следующую команду:
sudo / usr / sbin / nginx -s reload
Чтобы запустить службу Nginx, выполните:
sudo systemctl start nginx
Выполнить следующая команда для остановки службы Nginx:
sudo systemctl stop nginx
Запуск, остановка и перезапуск Nginx с использованием
SysVinit
#
Старые (EOLed) версии Ubuntu, CentOS и Debian используют init.d для запуска, остановки и перезапуска демона Nginx.
Перезапустить службу Nginx:
sudo service nginx restart
Запустить службу Nginx:
sudo service nginx start
Остановить службу Nginx:
sudo service nginx stop
Заключение #
Мы показали вам, как запускать, останавливать и перезапускать веб-сервер Nginx в системах Linux.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии ниже.
Nginx зависает при перезапуске — ошибка сервера
Мне нужно запустить сценарий запуска nginx в фоновом режиме, иначе он не возвращается в оболочку при запуске — он делает это либо через
запуск службы nginx
.. или просто работает ..
/etc/init.d/nginx
.. напрямую. Мне нужно запустить его в фоновом режиме, а затем отказаться от него ..
Работает на Ubuntu 14.04.2, Nginx v 1.4.6
nginx -V дает нам:
версия nginx: nginx / 1.4.6 (Ubuntu)
построено gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
Поддержка TLS SNI включена
настроить аргументы: --with-cc-opt = '- g -O2 -fstack-protector --param = ssp-buffer-size = 4 -Wformat -Werror = format-security -D_FORTIFY_SOURCE = 2' --with-ld- opt = '- Wl, -Bsymbolic-functions -Wl, -z, relro' --prefix = / usr / share / nginx --conf-path = / etc / nginx / nginx.conf --http-log-path = /var/log/nginx/access.log --error-log-path = / var / log / nginx / error.log --lock-path = / var / lock / nginx.lock --pid-path = / run /nginx.pid --http-client-body-temp-path = / var / lib / nginx / body --http-fastcgi-temp-path = / var / lib / nginx / fastcgi --http-proxy-temp- путь = / var / lib / nginx / proxy --http-scgi-temp-path = / var / lib / nginx / scgi --http-uwsgi-temp-path = / var / lib / nginx / uwsgi --with- debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gatic_module --with-http_gatic with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module
.. и «bash -x nginx restart» возвращает ..
+ ПУТЬ = / usr / local / sbin: / usr / local / bin: / sbin: / bin: / usr / sbin: / usr / bin
+ DAEMON = / usr / sbin / nginx
+ НАЗВАНИЕ = nginx
+ DESC = nginx
+ '[' -f / etc / default / nginx ']'
+. / и т.д. / по умолчанию / nginx
+ тест -x / usr / sbin / nginx
+ set -e
+. / lib / lsb / init-функции
+++ run-parts --lsbsysinit --list /lib/lsb/init-functions.d
++ для перехвата в '$ (run-parts --lsbsysinit --list /lib/lsb/init-functions.d 2> / dev / null)'
++ '[' -r /lib/lsb/init-functions.d/20-left-info-blocks ']'
++./lib/lsb/init-functions.d/20-left-info-blocks
++ для перехвата в '$ (run-parts --lsbsysinit --list /lib/lsb/init-functions.d 2> / dev / null)'
++ '[' -r /lib/lsb/init-functions.d/50-ubuntu-logging ']'
++. /lib/lsb/init-functions.d/50-ubuntu-logging
+++ LOG_DAEMON_MSG =
++ FANCYTTY =
++ '[' -e /etc/lsb-base-logging.sh ']'
++ правда
+ регистр "$ 1" в
+ echo -n 'Перезапуск nginx:'
Перезапуск nginx: + start-stop-daemon --stop --quiet --pidfile /var/run/nginx.pid --exec / usr / sbin / nginx
+ спать 1
nginx.
+ test_nginx_config
+ / usr / sbin / nginx -t
+ возврат 0
+ start-stop-daemon --start --quiet --pidfile / var / run / nginx.pid --exec / usr / sbin / nginx -
.. а то ничего.
КОНФИГМЫ:
nginx.conf
# Стандартный файл запуска.
разработчики пользовательских www-данных;
# обычно равно количеству имеющихся у вас процессоров. запустите команду "grep processor / proc / cpuinfo | wc -l", чтобы найти его
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
# Сохраняет в журналах сообщения о невозможности bind ().
демон выключен;
События {
worker_connections 1024;
}
http {
# rewrite_log on;
включить пантомиму.типы;
default_type application / octet-stream;
access_log /var/log/nginx/access.log;
sendfile включен;
# tcp_nopush on;
keepalive_timeout 3;
# tcp_nodelay on;
# gzip on;
Максимальный лимит загрузки #php не может быть больше этого
client_max_body_size 13м;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32 КБ;
index index.php index.html index.htm;
# Upstream для абстрактных бэкэнд-соединений для PHP.
upstream php {
# это должно соответствовать значению директивы listen в пуле php-fpm
сервер unix: / var / run / php5-fpm.носок;
}
включить сайты с поддержкой / *;
}
Приветствуются любые идеи.
Как перезапустить NGINX в Linux
- Подробности
- Корбин Браун
- Системное администрирование
NGINX — популярное программное обеспечение для веб-хостинга и обратного прокси для систем Linux. Как и многие другие приложения и службы, время от времени требуется перезапуск. Перезапуск особенно распространен при обновлении файлов конфигурации.Вам всегда нужно перезапускать или перезагружать NGINX, чтобы изменения вступили в силу.
В этой статье мы рассмотрим несколько различных параметров командной строки для перезапуска и перезагрузки сервера NGINX. Кроме того, вы узнаете, как проверить файл конфигурации NGINX на наличие ошибок перед перезапуском NGINX. В конце концов, вы не захотите загружать конфигурацию, содержащую ошибки.
В этом руководстве вы узнаете:
- Как перезагрузить NGINX (не влияет на клиентские соединения)
- Как полностью перезапустить NGINX
Перезапуск веб-сервера NGINX в Linux
Категория | Требования, условные обозначения или используемая версия программного обеспечения |
---|---|
Система | Любой дистрибутив Linux |
Программное обеспечение | NGINX | Другой |
Условные обозначения | # — требует, чтобы данные команды linux выполнялись с привилегиями root либо непосредственно как пользователь root, либо с помощью команды sudo $ — требует, чтобы данные команды linux выполнялись как обычные не -privileged user |
Как перезапустить NGINX
Ищу системного аналитика Linux!
Геофизический институт UAF ищет опытного системного аналитика Linux, который присоединится к их команде аналитиков и инженеров исследовательской кибер-инфраструктуры.РАСПОЛОЖЕНИЕ: Фэрбенкс, Аляска, США
ПОДАТЬ ЗАЯВКУ
Используя systemctl
, есть два разных варианта перезапуска NGINX:
- reload — перезагружает файл конфигурации, но не полностью закрывает NGINX. текущие соединения
- перезапустить — полностью перезапустить NGINX, который также закрывает соединения и перезагружает файл конфигурации
Эти команды также проверяют файл конфигурации на наличие ошибок и предупреждают вас, если они обнаружены, но в производственной среде это всегда Хорошая идея — проверить файл конфигурации на наличие потенциальных синтаксических ошибок перед перезагрузкой или перезапуском NGINX.Для этого используйте следующую команду в терминале:
$ sudo nginx -t nginx: синтаксис файла конфигурации /etc/nginx/nginx.conf в порядке nginx: файл конфигурации /etc/nginx/nginx.conf, тест прошел успешно
Как только NGINX подтвердит, что файл конфигурации в порядке, используйте одну из следующих команд, чтобы изменения конфигурации вступили в силу.
- Изящно перезагрузите веб-сервер NGINX:
$ sudo systemctl перезагрузить nginx
- Полностью перезапустите веб-сервер NGINX:
$ sudo systemctl перезапустить nginx
Вы также можете использовать systemctl
для проверки текущего статуса NGINX (т.е.е. чтобы узнать, запущен ли он и остановлен ли процесс) с помощью следующей команды:
$ sudo systemctl статус nginx
Заключение
В этом руководстве мы изучили две разные команды для перезапуска NGINX в Linux. Всегда выбирайте ту команду, которая больше всего подходит для вашей ситуации, и обязательно проверьте свой файл конфигурации на наличие синтаксических ошибок, прежде чем делать это.
CommandLine | NGINX
Запуск, остановка и перезапуск NGINX
На этой странице показано, как запустить NGINX и как после его запуска управлять им, чтобы он останавливался или перезапускался.
Запуск NGINX
NGINX вызывается из командной строки, обычно из / usr / bin / nginx
.
Базовый пример запуска NGINX
Расширенный пример запуска NGINX
/ usr / bin / nginx -t -c ~ / mynginx.conf -g "pid /var/run/nginx.pid; worker_processes 2;"
Опции
- ?, -h | Распечатать справку. |
-v | Версия для печати. |
-V | Распечатать версию NGINX, версию компилятора и настроить параметры. |
-т | Не запускайте, просто проверьте файл конфигурации. NGINX проверяет конфигурацию на предмет правильного синтаксиса, а затем пытается открыть файлы, указанные в конфигурации. |
-q | Подавить сообщения об ошибках во время тестирования конфигурации. |
-с сигнал | Отправить сигнал главному процессу: остановка, выход, повторное открытие, перезагрузка.(версия> = 0.7.53) |
-p префикс | Установить путь префикса (по умолчанию: / usr / local / nginx / ). (версия> = 0.7.53) |
-c имя файла | Укажите, какой файл конфигурации NGINX должен использовать вместо файла по умолчанию. |
-g директивы | Установить глобальные директивы. (версия> = 0.7.4) |
Примечание
NGINX имеет только несколько параметров командной строки.В отличие от многих других программных систем, настройка полностью выполняется через файл конфигурации (представьте себе).
Остановка или перезапуск NGINX
Есть два способа управлять NGINX, когда он уже запущен.
Первый — снова вызвать NGINX с параметром командной строки -s
.
Например, / usr / bin / nginx -s stop
остановит сервер NGINX.
(другие варианты -s
приведены в предыдущем разделе)
Второй способ управления NGINX — послать сигнал главному процессу NGINX…
По умолчанию NGINX записывает идентификатор своего главного процесса в /usr/local/nginx/logs/nginx.pid
.
Вы можете изменить это, передав параметр с ./configure
во время компиляции или используя директиву pid
в файле конфигурации.
Вот как отправить сигнал QUIT
(Graceful Shutdown) главному процессу NGINX:
kill -QUIT $ (cat /usr/local/nginx/logs/nginx.pid)
Главный процесс может обрабатывать следующие сигналы:
TERM, INT | Быстрое отключение |
ВЫЙТИ | Плавное выключение |
УБИТЬ | Прекращает упорный процесс |
HUP | Перезагрузка конфигурации Запустить новые рабочие процессы с новой конфигурацией Изящно завершите старые рабочие процессы |
УСР1 | Повторно открыть файлы журнала |
УСР2 | Обновление исполняемого файла на лету |
ЛЕБЕДКА | Изящно завершите рабочие процессы |
Нет необходимости самостоятельно контролировать рабочие процессы.Однако они также поддерживают некоторые сигналы:
TERM, INT | Быстрое отключение |
ВЫЙТИ | Плавное выключение |
УСР1 | Повторно открыть файлы журнала |
Загрузка новой конфигурации с использованием сигналов
NGINX поддерживает несколько сигналов, которые можно использовать для управления его работой во время его работы.
Самый распространенный из них — 15, который просто останавливает запущенный процесс:
USER PID% CPU% MEM VSZ RSS TTY STAT КОМАНДА ВРЕМЕНИ НАЧАЛА корень 2213 0.0 0,0 6784 2036? Ss 03:01 0:00 nginx: главный процесс / usr / sbin / nginx -c /etc/nginx/nginx.conf
Однако более интересным вариантом является возможность изменять конфигурацию NGINX на лету (обратите внимание, что мы тестируем конфигурацию перед ее перезагрузкой):
16.09.2006 13:07:10 [info] 15686 # 0: синтаксис файла конфигурации /etc/nginx/nginx.conf в порядке 2006/09/16 13:07:10 [info] 15686 # 0: конфигурационный файл /etc/nginx/nginx.conf успешно протестирован USER PID% CPU% MEM VSZ RSS TTY STAT ВРЕМЯ НАЧАЛА КОМАНДА корень 2213 0.0 0,0 6784 2036? Ss 03:01 0:00 nginx: главный процесс / usr / sbin / nginx -c /etc/nginx/nginx.conf
Что происходит, так это то, что когда NGINX получает сигнал HUP
, он пытается проанализировать файл конфигурации (указанный, если присутствует, в противном случае — значение по умолчанию), и в случае успеха пытается применить новую конфигурацию (т. Е. Повторно открыть файл конфигурации). файлы журнала и прослушивающие сокеты).
В случае успеха NGINX запускает новые рабочие процессы и сигнализирует о постепенном завершении работы старым рабочим.
Уведомленные работники закрывают сокеты прослушивания, но продолжают обслуживать текущих клиентов.После обслуживания всех клиентов отключение старых рабочих.
Если NGINX не может успешно применить новую конфигурацию, он продолжает работать со старой конфигурацией.
RequestForReviewCategory — (Запрос на проверку: что происходит с рабочими процессами в HUP? -Olle)
Обновление до нового двоичного файла на лету
Если вам нужно заменить двоичный файл NGINX на новый (при обновлении до новой версии или добавлении / удалении серверных модулей), вы можете сделать это без простоя службы — никакие входящие запросы не будут потеряны.
Сначала замените старый двоичный файл новым, затем отправьте сигнал USR2 главному процессу. Он переименовывает свой файл .pid
в .oldbin
(например, /usr/local/nginx/logs/nginx.pid.oldbin
), затем выполняет новый двоичный файл, который, в свою очередь, запускает новый главный процесс и новый рабочих процессов:
: PID PPID USER% CPU VSZ WCHAN COMMAND 33126 1 корень 0.0 1164 пауза nginx: главный процесс / usr / local / nginx / sbin / nginx 33134 33126 никто 0,0 1368 kqread nginx: рабочий процесс (nginx) 33135 33126 никто 0.0 1380 kqread nginx: рабочий процесс (nginx) 33136 33126 никто 0,0 1368 kqread nginx: рабочий процесс (nginx) 36264 33126 корень 0.0 1148 пауза nginx: главный процесс / usr / local / nginx / sbin / nginx 36265 36264 никто 0,0 1364 kqread nginx: рабочий процесс (nginx) 36266 36264 никто 0,0 1364 kqread nginx: рабочий процесс (nginx) 36267 36264 никто 0,0 1364 kqread nginx: рабочий процесс (nginx)
На данный момент запущены два экземпляра NGINX, которые вместе обрабатывают входящие запросы.Чтобы отключить старый экземпляр, вы должны отправить сигнал WINCH
старому главному процессу, и его рабочие процессы начнут корректно завершать работу:
: PID PPID USER% CPU VSZ WCHAN COMMAND 33126 1 корень 0.0 1164 пауза nginx: главный процесс / usr / local / nginx / sbin / nginx 33135 33126 никто 0,0 1380 kqread nginx: рабочий процесс завершается (nginx) 36264 33126 корень 0.0 1148 пауза nginx: главный процесс / usr / local / nginx / sbin / nginx 36265 36264 никто 0.0 1364 kqread nginx: рабочий процесс (nginx) 36266 36264 никто 0,0 1364 kqread nginx: рабочий процесс (nginx) 36267 36264 никто 0,0 1364 kqread nginx: рабочий процесс (nginx)
Через некоторое время все старые рабочие процессы завершаются, и только новые рабочие процессы обрабатывают входящие запросы:
: PID PPID USER% CPU VSZ WCHAN COMMAND 33126 1 корень 0.0 1164 пауза nginx: главный процесс / usr / local / nginx / sbin / nginx 36264 33126 корень 0.0 1148 пауза nginx: главный процесс / usr / local / nginx / sbin / nginx 36265 36264 никто 0.0 1364 kqread nginx: рабочий процесс (nginx) 36266 36264 никто 0,0 1364 kqread nginx: рабочий процесс (nginx) 36267 36264 никто 0,0 1364 kqread nginx: рабочий процесс (nginx)
На этом этапе вы все еще можете вернуться к старому серверу, поскольку он еще не закрыл свои прослушивающие сокеты, выполнив следующие действия:
- Отправить сигнал
HUP
старому главному процессу — он запустит рабочие процессы без перезагрузки файла конфигурации - Отправить сигнал
QUIT
новому главному процессу для корректного завершения его рабочих процессов - Отправить сигнал
TERM
новому главному процессу, чтобы принудительно завершить его - Если по какой-то причине новые рабочие процессы не завершаются, отправьте им сигнал
KILL
После выхода из нового главного процесса старый главный процесс удаляет .суффикс oldbin
из его файла .pid
, и все будет точно так же, как до попытки обновления.
Если обновление прошло успешно и вы хотите сохранить новый сервер, отправьте сигнал QUIT старому главному процессу, чтобы оставить работающим только новый сервер:
: PID PPID USER% CPU VSZ WCHAN COMMAND : 36264 1 корень 0.0 1148 пауза nginx: главный процесс / usr / local / nginx / sbin / nginx : 36265 36264 никто 0,0 1364 kqread nginx: рабочий процесс (nginx) : 36266 36264 никто 0.0 1364 kqread nginx: рабочий процесс (nginx) : 36267 36264 никто 0,0 1364 kqread nginx: рабочий процесс (nginx)
документов NGINX | Управление процессами NGINX во время выполнения
В этом разделе описаны процессы, которые NGINX запускает во время выполнения, и способы управления ими.
Мастер и рабочие процессы
NGINX имеет один главный процесс и один или несколько рабочих процессов. Если кэширование включено, процессы загрузчика кеша и диспетчера кеша также запускаются при запуске.
Основная цель главного процесса — читать и оценивать файлы конфигурации, а также поддерживать рабочие процессы.
Рабочие процессы выполняют фактическую обработку запросов. NGINX полагается на механизмы, зависящие от ОС, для эффективного распределения запросов между рабочими процессами. Количество рабочих процессов определяется директивой worker_processes
в файле конфигурации nginx.conf и может быть либо установлено на фиксированное число, либо настроено для автоматической настройки на количество доступных ядер ЦП.
Управление NGINX
Чтобы перезагрузить конфигурацию, вы можете остановить или перезапустить NGINX или отправить сигналы главному процессу. Сигнал можно отправить, выполнив команду nginx
(вызывая исполняемый файл NGINX) с аргументом -s
.
, где <СИГНАЛ>
может принимать одно из следующих значений:
-
выйти
— Завершить работу изящно -
reload
— Перезагрузить файл конфигурации -
повторно открыть
— повторно открыть файлы журнала -
остановка
— Немедленное отключение (быстрое отключение)
Утилита kill
также может использоваться для отправки сигнала непосредственно главному процессу.Идентификатор главного процесса по умолчанию записывается в файл nginx.pid , который находится в каталоге / usr / local / nginx / logs или / var / run .
Дополнительные сведения о расширенных сигналах (например, для выполнения обновлений двоичных файлов в реальном времени) см. В разделе «Управление nginx» по адресу nginx.org .
Как перезагрузить и перезапустить Nginx (только для выделенных серверов) — База знаний DreamHost
Эта статья содержит информацию / примеры использования пользователей root / sudo / admin.Если вам требуется доступ sudo / admin, вы должны перейти на выделенный сервер.
Перезарядка
Каждый раз, когда вы вносите изменения в файл конфигурации, вы должны перезагрузить Nginx. Вы можете сделать это, войдя на свой сервер через SSH под своим администратором. Затем запустите следующую команду:
[сервер] $ sudo /etc/init.d/nginx reload
- При перезагрузке сервер продолжает работать при повторном чтении любых обновлений файла конфигурации.
- Перезагрузка безопаснее, чем перезапуск, потому что, если в файле конфигурации будет обнаружена синтаксическая ошибка, перезагрузка не будет продолжена, и ваш сервер останется работающим.
- Если в файле конфигурации есть синтаксическая ошибка и вы перезагружаетесь, возможно, сервер не будет перезагружен правильно.
Перезапуск
Вы можете перезапустить Nginx с помощью следующих команд после входа на сервер через SSH с вашим пользователем-администратором:
[сервер] $ sudo /etc/init.d/nginx stop [сервер] $ sudo /etc/init.d/nginx start
Вы также можете перезапустить на панели DreamHost. Перейдите на страницу VPS и нажмите кнопку Restart справа от вашего сервера.
Обновление файла phprc
Если вы создали файл phprc и видите, что ваш файл phpinfo.php не обновлен, у вас есть три варианта:
Обновите конфигурацию сайта в панели
Вы можете повторно сохранить конфигурацию вашего сайта в панели, чтобы обновить файл phprc.
Перезагрузить Nginx (только для выделенных серверов)
Если вы используете выделенный сервер с администратором, вы можете перезагрузить Nginx, выполнив описанные выше действия. Если перезагрузка не приводит к обновлению ваших изменений, попробуйте перезапустить и завершить все процессы PHP, как показано ниже.
Перезапустите Nginx и завершите процессы PHP (только для выделенных серверов)
Если вы используете выделенный сервер с правами администратора, вы можете перезапустить Nginx и отключить все запущенные процессы PHP. Выполните следующие команды под своим выделенным пользователем-администратором:
[сервер] $ sudo /etc/init.d/nginx stop [сервер] $ pkill -9 php [сервер] $ sudo /etc/init.d/nginx start
См. Также
Как перезапустить Nginx на Ubuntu / Centos / Docker
Как часто вы перезапускаете службу ngnix на веб-сервере Linux? В этом сообщении блога будут рассмотрены различные способы перезапуска Nginx в системе Linux через командную строку и на Nginx, запущенном в контейнере докеров.Я рассмотрел как сервер Systemd, так и систему SysV init / Upstart.
Откройте свой терминал и войдите в систему с пользователем root / sudo, чтобы выполнить показанные ниже команды. Читайте также о двух способах подключения по SSH к работающему контейнеру Docker.
Перезагрузите HTTP-сервер Nginx
CentOS 7, Ubuntu 18.04 и Ubuntu16.04 — это операционная система systemd. Чтобы перезапустить службу nginx, вам необходимо использовать инструмент командной строки systemctl.
Рекомендуется проверить синтаксис перед перезапуском службы nginx,
$ sudo nginx -t $ sudo systemctl перезапуск nginx
Если вы перезагружаетесь после изменения файла служебного модуля nginx, вам необходимо сначала перезагрузить systemd
$ sudo systemctl демон-перезагрузка
Затем перезапустите nginx
$ sudo systemctl перезапуск nginx
Если вы хотите перезагрузить конфигурацию без перезапуска службы, т.е.е поддерживать текущие сеансы, использовать
sudo systemctl перезагрузить nginx
Перезапуск Nginx в системе инициализации Upstart / SysV
Если вы используете систему с выскочкой или системой инициализации SysV. например, Ubuntu 14.04, CentOS 6, вам необходимо управлять службой nginx с помощью команды service
.
$ sudo service nginx перезапуск
Вы также можете использовать абсолютный путь к сценарию инициализации, например
sudo /etc/init.