node js автостарт додатку з rc.d в FreeBSD
Нещодавно виникла необхідність запустити веб-додаток на Express (node js) автоматично при старті та перезапуску системи (FreeBSD 10.3). До цього все запускалося за допомогою менеджера процесів для ноди - foreverjs. Він чудово працює з дочірніми процесами і виконує свої функції (старт, перезапуск, перегляд логів, рестарт при зміні коду), але не запускається автоматично з операційною системою. Рішенням став демон системи, що виконує скрипти автозапуску під час старту - rc.d.
Проста конфігурація додатку для forever
1 | { |
І rc-скрипт який буде відповідати за запуск
1 |
|
Два важливих моменти:
- За допомогою цього скрипта можна виконувати запуск від будь-якого користувача, не лише root-а. Для цього в функціях start/stop/restart перед командою додатково є префікс
su - user -c
. - Щоб передати змінні оточення - задаємо їх перед командою. Наприклад, перевизначаю порт для запуску
PORT=3344
Все інше залишаємо без змін, замінюючи назву додатку та шлях до робочої директорії. Копіюємо цей файл в /usr/local/etc/rc.d
і не забуваємо додавати права на виконання файлу.
1 | $ sudo chmod +x /usr/local/etc/rc.d/myapp |
Тепер можна користуватися всіма плюшками сервісу
1 | $ sudo service myapp restart |