NodeJS API с внешними отладками на другом языке

Я разрабатываю NodeJS API, и все в порядке.

Для конкретной проблемы я использую локальную зависимость CLI, которая обрабатывает некоторые входные файлы и выходные другие данные на случай возврата из API.

Я хотел знать (возможно, задуматься), какой сервис я могу использовать для обслуживания этого API в производстве.

Идея состоит в том, чтобы иметь среду Node (как в моем локальном), которая может установить на той же машине внешнюю зависимость, не обязательно написанную в Node.

Моя конкретная зависимость — это fontforge и другие мелочи.

Заранее спасибо.


person Lionel T    schedule 22.09.2016    source источник


Ответы (1)


Трудно превзойти хороший VPS, если вам нужно установить специальное программное обеспечение, которое нелегко установить с помощью npm. Мой любимый провайдер VPS — Digital Ocean. Вы можете бесплатно пользоваться базовым сервером в течение двух месяцев, перейдя по этой ссылке, чтобы убедиться, хорошо для вас, прежде чем платить что-либо. Вторым любимым провайдером VPS является Vultr, потому что вы можете установить собственные ISO-образы на их серверы. Вы можете попробовать его бесплатно, перейдя по этой ссылке. Но это будет означать заботу о сервере самостоятельно. С такими сервисами, как Heroku, все это позаботится о вас, но вы не сможете установить там все, что захотите. С VPS вы получаете свой собственный сервер с корневым доступом. Обычно это 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

для запуска, перезапуска и остановки вашего приложения, что также будет происходить автоматически во время загрузки или выключения системы.

person rsp    schedule 22.09.2016
comment
большой! @rsp спасибо за подробный ответ. Я думал о DO, но еще не пробовал, спасибо и за ссылку! Так что в этом случае мне придется установить node и инициализировать все процессы, чтобы заставить его работать с API, как это работает в heroku и других, верно? - person Lionel T; 22.09.2016
comment
@LionelT Я обновил свой ответ информацией о том, как установить Node и как автоматически запускать ваше приложение. - person rsp; 22.09.2016
comment
@LionelT Я забыл об одном: приведенный выше сценарий выскочки предполагает, что в вашей системе есть пользователь с именем node - чтобы запустить ваше приложение от имени этого пользователя - убедитесь, что у вас есть пользователь с таким именем, или измените его на другого пользователя . Я также добавил это к ответу. - person rsp; 22.09.2016
comment
Потрясающие! могу я спросить вас, сколько капель у вас в DO? - person Lionel T; 22.09.2016
comment
@LionelT всего несколько. удивительно, как много всего можно разместить на одной капле. нет ограничений на домены, веб-сайты или что-то еще - только ограничение на хранилище. Я даже слышал, что они не ограничивают трафик, но даже если и устанавливают, то в терабайтах, так что на одном маленьком дроплете можно много разместить. Для таких сервисов, как Heroku, это не более одного приложения на экземпляр, но в Digital Ocean это столько, сколько вы можете поместить в ОЗУ и на диске. Кстати, все диски SSD, так что это отлично подходит для производительности. - person rsp; 22.09.2016
comment
хорошо, я в DigialOcean, еще раз спасибо за всю информацию @rsp, могу я спросить вас, как лучше работать с API и приложением (которое также вызывает этот API) в одном и том же VPS? создать как минимум две разные дроплеты (с разными IP-адресами)? Может быть проблематично иметь все в одной дроплете (даже в одной больше)? Заранее спасибо еще раз, - person Lionel T; 27.09.2016