Доброго времени суток уважаемые!
В виду субъективных причин, решил поковырять с 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
- возвращаемся к той же, что и была в начале.
Объясните пожалуйста, что это за магия такая?