NodeJS API с внешними депами на другом языке
Я разрабатываю NodeJS
API и все ок.
Для конкретной проблемы я использую локальную зависимость CLI, которая обрабатывает некоторые входные файлы и выводит другие вещи, на случай возврата из API.
Я хотел знать (возможно, открою свое мнение), какой сервис я могу использовать для обслуживания этого API в производстве.
Идея состоит в том, чтобы иметь Node
окружение (как в моем локальном), которое может установить на том же компьютере внешнюю зависимость, не обязательно записанную в Node
,
Моя конкретная зависимость это fontforge и другие мелочи.
Заранее спасибо.
1 ответ
Трудно превзойти хороший VPS, если вам нужно установить пользовательское программное обеспечение, которое нелегко установить с помощью npm. Мой любимый провайдер VPS - Digital Ocean. По этой ссылке вы можете бесплатно пользоваться базовым сервером в течение двух месяцев, чтобы убедиться, что это нормально для вас, прежде чем платить. Вторым любимым поставщиком VPS является Vultr, потому что вы можете устанавливать собственные ISO-образы на их серверах. Вы можете попробовать это бесплатно по этой ссылке. Но это будет означать заботиться о сервере самостоятельно. С такими сервисами, как Heroku, все это позаботится о вас, но вы не сможете установить там, что хотите. С VPS вы получаете свой собственный сервер с root-доступом. Обычно это Linux, но Digital Ocean также поддерживает FreeBSD, и некоторые люди устанавливают OpenBSD, хотя это официально не поддерживается. С VPS вы можете установить все, что вы хотите, но вы должны сделать это самостоятельно. Всегда есть компромисс.
Больше информации
Установка узла
Чтобы установить Node на VPS, я рекомендую установить в /opt
с версионным каталогом и символической ссылкой - это пример процедуры, которую я написал для другого ответа:
# change dir to your home:
cd ~
# download the source:
curl -O https://nodejs.org/dist/v6.1.0/node-v6.1.0.tar.gz
# extract the archive:
tar xzvf node-v6.1.0.tar.gz
# go into the extracted dir:
cd node-v6.1.0
# configure for installation:
./configure --prefix=/opt/node-v6.1.0
# build and test:
make && make test
# install:
sudo make install
# make a symlink to that version:
sudo ln -svf /opt/node-v6.1.0 /opt/node
Смотрите этот ответ для получения дополнительной информации.
Ваши стартовые скрипты
Чтобы ваше собственное приложение было хорошо запущено при запуске сервера - вот пример сценария Upstart на основе того, который я использую - он должен работать на Ubuntu 14.04, не тестироваться на более новых версиях - сохраните его в /etc/init/YOURAPP.conf
:
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on runlevel [06]
# If the process quits unexpectadly trigger a respawn
respawn
# Start the process
exec start-stop-daemon --start --chuid node --make-pidfile --pidfile /www/YOURAPP/run/node-upstart.pid --exec /opt/node/bin/node -- /www/YOURAPP/app/app.js >> /www/YOURAPP/log/node-upstart.log 2>&1
Просто измените:
YOURAPP
на имя вашего собственного приложения/opt/node/bin/node
на ваш путь кnode
/www/YOURAPP/app/app.js
на путь вашего приложения Node/www/YOURAPP/run
туда, где вы хотите свой файл PID/www/YOURAPP/log
туда, где вы хотите ваши логи--chuid node
в--chuid OTHERUSER
если вы хотите, чтобы он работал от имени другого пользователя, чемnode
(не забудьте добавить пользователя с именем из --chuid
выше)
С вашим /etc/init/YOURAPP.conf
на месте вы можете безопасно перезапустить свой сервер, и ваше приложение все еще работает, вы можете запустить:
start YOURAPP
restart YOURAPP
stop YOURAPP
запускать, перезагружать и останавливать ваше приложение, что также происходит автоматически при загрузке или завершении работы системы.