Я настраиваю сервер Debian Etch для размещения приложений ruby и php с nginx. Я успешно настроил inittab для запуска процесса php-cgi при загрузке с действием респауна. После обслуживания 1000 запросов рабочие процессы php-cgi умирают и запускаются программой init. Запись inittab выглядит так:
50:23:respawn:/usr/local/bin/spawn-fcgi -n -a 127.0.0.1 -p 8000 -C 3 -u someuser -- /usr/bin/php-cgi
Первоначально я написал запись процесса (все после 3-го двоеточия) в отдельном сценарии (просто потому, что он был длинным) и поместил имя этого сценария в запись inittab, но поскольку сценарий запустил бы одну строку и умер Системный журнал был заполнен ошибками вроде этого:
May 7 20:20:50 sb init: Id "50" respawning too fast: disabled for 5 minutes
Таким образом, я избавился от файла скрипта и просто поместил всю строку в inittab. Отныне в системном журнале ошибок не обнаружено.
Теперь я пытаюсь сделать то же самое с thin , чтобы подать заявку на рельсы. Я могу успешно запустить тонкий сервер, выполнив следующую команду:
sudo thin -a 127.0.0.1 -e production -l /var/log/thin/thin.log -P /var/run/thin/thin.pid -c /path/to/rails/app -p 8010 -u someuser -g somegroup -s 2 -d start
Это работает, по-видимому, точно так же, использую ли я флаг -d (daemonize) или нет. Управление командной строкой возвращается немедленно (процессы были демонизированы) в любом случае. Если я помещаю всю эту команду (за исключением sudo и с абсолютными путями) в inittab, init жалуется (в системном журнале), что запись процесса слишком длинная, поэтому я помещаю параметры в экспортированную переменную среды в / etc / profile. Теперь я могу успешно запустить сервер с:
sudo thin $THIN_OPTIONS start
Но когда я помещаю это в запись inittab с действием возрождения
51:23:respawn:/usr/local/bin/thin $THIN_OPTIONS start
журналы ясно указывают, что переменная окружения не видна для init; это как если бы команда была просто "тонкий старт".
Как я могу сократить запись процесса inittab? Есть ли другой файл, кроме / etc / profile, где я мог бы установить переменную среды THIN_OPTIONS? Мой предыдущий опыт работы с php-cgi говорит мне, что я не могу просто поместить всю команду в отдельный скрипт.