hode.js, systemd, forever

Допустим нам понадобился простой http сервер, который стартует при загрузке системы, висит на порту 1234. http://localhost:1234

Я буду использовать coffeescript.

Для начала создадим нужные нам директории и файлы

mkdir ~/testapp && cd ~/testapp && touch testapp.coffee && touch testapp.service

Установим coffee, forever

sudo npm i -g coffee forever

Далее напишем небольшой скрипт http сервера. Открываем testapp.coffee и добавляем

http = require("http")

http.createServer((request, response) ->
    response.writeHead 200,
        "Content-Type": "text/plain"
    response.end "Hello testapp \;) \n"
    return
).listen 1234

«Компилируем» наш кофе скрипт

coffee -c testapp.coffee

Можно попробовать запустить

node testapp.js

И посмотреть результат работы скрипта http://localhost:1234

Завершаем скрипт (Ctrl+C). Попробуем запустить наш «Сервер» в виде сервиса

forever start testapp.js

Если удачно, опять можем убедиться что скрипт работает http://localhost:1234

Останавливаем

forever stop testapp.js

И переходим к последней части. Скрипту systemd. Открываем testapp.service и пишем

[Unit]
Description=TestApp Server
After=network.target

[Service]
Type=forking
ExecStart=/bin/forever start --pidFile /home/*dirname*/testapp/testapp.pid --uid testapp -a /home/*dirname*/testapp/testapp.js
ExecStop=/bin/forever stop testapp
ExecReload=/bin/forever reload testapp
PIDFile=/home/*dirname*/testapp/testapp.pid

[Install]
WantedBy=multi-user.target

Замените *dirname* на имя вашей домашней директории, или полностью замените пути, если скрипт располагается в другой папке.

Копируем файл testapp.service

sudo cp testapp.service /usr/lib/systemd/system/

Включаем

sudo systemctl enable testapp.service

Запускаем

sudo systemctl start testapp.service

Готово. http://localhost:1234/

2015   forever   node.js   systemd