У меня на сервере установлено несколько разных версий nginx для теста и мне нужна команда, чтобы запускать конкретный nginx из конкретной папки с конкретной версией. Сейчас же, если я ввожу service nginx start, то запускается только самый первый nginx из всех установленных, а как запустить какой-нибудь другой - я не понимаю.
Посмотреть команду на запуск из скрипта запуска и запускать вручную нужный nginx из нужного места.
Вариант2: изучить параметры запуска nginx и запускать вручную.
Вариант3: нарисовать свои скрипты запуска nginx
Дмитрий Добрышин: там огроменный непонятный файл, а я только третий день в линуксе. Если вы знаете ответ на мой вопрос, то почему бы просто не сказать мне его, вместо того чтобы посылать меня изучать всякие файлы? Это какое-то издевательство или действительно невозможно мне нормально ответить?
fred55rus: Ну во первых не издевательство, а показал тот самый файл, который выполняется при запуске
service nginx start.
кроме start там же выполняются команды stop, status, restart.
Хоть я и не третий день работаю в linux, но то, что Вы описали "установлено несколько версий nginx" ни разу не проделывал. У меня всегда более новая версия замещала пакеты предыдущей. Естественно я не смогу подсказать как настроить чтобы при запуске очередной версии nginx, использовались не одни пакеты/библиотеки, а другие. Предположил, что Вы это знаете и такой проблемы у вас не стоит. В том файле вы как раз и можете поэкспериментировать. Попробовать ввести дополнительный параметр, скажем версию nginx для запуска с соответствующими обработками и продолжить свою работу.
$ nginx -h
nginx version: nginx/1.10.3 (Ubuntu)
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help
-v : show version and exit
-V : show version and configure options then exit
-t : test configuration and exit
-T : test configuration, dump it and exit
-q : suppress non-error messages during configuration testing
-s signal : send signal to a master process: stop, quit, reopen, reload
-p prefix : set prefix path (default: /usr/share/nginx/)
-c filename : set configuration file (default: /etc/nginx/nginx.conf)
-g directives : set global directives out of configuration file
В принципе нужна только опция "-c" если конфиг лежит отдельно.
Еще посоветую знать опцию "-t" нжинкс тестирует конфиг и выкидывает на экран ошибки - пользительная для работы штучка.
т.е. если путь к конфигам идентичен для всех версий нжижнкса и равен дефолтному, то нжиникс запускается без каких-либо опций. выключается ctrl-С в консоли или закрытием консоли с запущенным нжиниксом.
service всёравно запускал мне старую версию, даже если я менял пути к nginx и конфигу в его переменных, я забил с разбирательством почему. Запустить последнюю версию мне помогла такая команда: /usr/local/nginx/sbin/nginx видимо по этому пути всегда располагается свежеустановленный лоадер nginx. Как запустить версию кроме самой старой и самой новой я так и не понял, но уже забил на эту идею.
service это программка управления для менеджера приложений (upstart судя по всему). сей менеджер исполняя скрипт запускает программу, ему в принципе без разницы что за программа, все параметры запуска прописаны в скрипте.
А сама программа может лежать в разных местах.
где лежит дефолтный nginx можно посмотреть командой "whereis nginx"
у меня он лежит по пути /usr/sbin/nginx, его и запускает upstart, что можно посмотреть в скрипте /etc/init/nginx.conf
Если новая версия nginx лежит в /usr/local/nginx/sbin/nginx то все правильно.
можно либо изменить строчку записи либо продублировать скрипт в nginx_new.conf, переписать параметры запуска т.е. все строчки /usr/sbin/nginx поменять на /usr/local/nginx/sbin/nginx тогда service nginx_new start будет запускать новую версию
pfg21: спасибо, это всё замечательно, но мне совсем не обязательно было править этот менеджер приложений, нужно было только nginx из конкретной папки запустить. По сути мой вопрос можно было сформулировать как: "где лежит лоадер отдельно взятого nginx", но я это осознал лишь недавно.
fred55rus: мда правильный вопрос 90% ответа:)
Только не лоадер а исполняемый файл :)
В большинстве случаев nginx работает отдельно от действий пользователя, потому и на менеджер инициализации кивали.