Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!

CentOS + Nginx из исходников. Почему не стартует сервис?

Доброго времени суток уважаемые!

В виду субъективных причин, решил поковырять с CentOS (до этого, лет 10+ ковырялся с Debian'ами). Скачал CentOS-7, поставил на виртуалку, обновил, всё отлично. Решил собрать Nginx из исходников, т.к. это одна из наиболее частых процедур в моей практике (сборка софта из исходников) при работе с Linux'ом, а Nginx - довольно хорошо знакомая мне программа. Ну и для разнообразия, решил вкрутить в него ngx_pagespeed.

Почитал инструкции, например вот (есть масса очень похожих, приводить все ссылки не буду, в них по сути одно и то же).

Сделал всё как положено, скачал src.rpm, распаковал, добавил модуль, собрал Nginx, доставил зависимости, собрал пакет, установил пакет через: yum install local nginx...rpm

Пишу: service nginx start - ошибка. Смотрю ошибку:
янв 21 18:19:27 localhost.localdomain systemd[1]: Starting nginx - high performance web server...
янв 21 18:19:27 localhost.localdomain nginx[2241]: /usr/sbin/nginx: error while loading shared libraries: cannot create cache for search path: Cannot allocate memory
янв 21 18:19:27 localhost.localdomain systemd[1]: nginx.service: control process exited, code=exited status=127
янв 21 18:19:27 localhost.localdomain systemd[1]: Failed to start nginx - high performance web server.


Ок, пробую запустить nginx руками, пишу путь как в ошибке: /usr/sbin/nginx - о чудо, Nginx запустился!

Пробую ещё раз - service start nginx - ошибка, та же самая. Из ошибки я понял, что nginx не может загрузить библиотеки "пробел", не может создать папку для кэша по адресу "пробел" и не может выделить память...

Ок, иду смотреть "волшебные" параметры запуска службы: /usr/lib/systemd/system/nginx.service
Вижу:
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true


Запускаю по порядку, "руками":
/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
Вывод:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful


запускаю далее: /usr/sbin/nginx -c /etc/nginx/nginx.conf
И... nginx запускается! Он и в процессах есть и netstat показывается что процесс слушает порт такой-то и т.д. То есть, всё отлично.

Пробую ещё раз запустить сервис, предварительно выгрузив nginx из памяти разумеется.:
nginx -s stop
service nginx start
- возвращаемся к той же, что и была в начале.

Объясните пожалуйста, что это за магия такая?
  • Вопрос задан
  • 1311 просмотров
Решения вопроса 1
sim3x
@sim3x
[nginx] Don't use type=forking in systemd service file
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
stranger777
@stranger777
Программист
Это ошибка выделения памяти. Она может случится и с мускулом, и с gzip. Либо сервак жрёт много памяти при запуске от service, либо памяти в принципе мало. Посмотрите, что сколько жрёт.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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