- PVSM.RU - https://www.pvsm.ru -
В этой статье я расскажу, какие проблемы прийдется решить, чтобы получить
Проблема: в репозитории может не оказаться пакета для нужной версии node. Как вариант, у вас может быть два проекта, требующих разные версии node.
Решение: на девелоперских машинах в таких случаях используют nvm. На боевом сервере его тоже можно запросто использовать, просто прийдется написать специальный скрипт для запуска своего сервера.
Проблема: приложение должно обладать правами суперпользователя для того, чтобы читать порт 80 (подробнее см CAP_NET_BIND_SERVICE, man capabilities [2]). Но запуск node с такими правами считается небезопасным.
Решения:
iptables
. Делается практически одной командой: iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8000
Проблема: node однопоточный и не может эффективно использовать многоядерные процессоры.
Решения:
Вопрос много где обсуждался [10], но единого мнения нет. С одной стороны, nginx — надежное, проверенное годами решение; с другой — node сам по себе умеет все тоже самое.
Как правило, предлагается один из тех вариантов:
Проблема: как возобновить работу сервера, если он вдруг упадет?
Решения:
Описано здесь [18]
Автор: beardog
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/node-js/16286
Ссылки в тексте:
[1] VPS: https://www.reg.ru/?rlink=reflink-717
[2] man capabilities: http://linux.die.net/man/7/capabilities
[3] HAProxy: http://haproxy.1wt.eu/
[4] здесь: http://benno.id.au/blog/2011/08/09/safely-dropping-privileges-node-js
[5] cluster API: http://nodejs.org/docs/latest/api/cluster.html
[6] node-http-proxy: https://github.com/nodejitsu/node-http-proxy
[7] fugue: https://github.com/pgte/fugue
[8] раз: http://blog.argteam.com/coding/hardening-nodejs-production-process-supervisor/
[9] два: http://blog.argteam.com/coding/hardening-node-js-for-production-part-2-using-nginx-to-avoid-node-js-load/
[10] обсуждался: https://groups.google.com/forum/?fromgroups=#!topic/nodejs/gB8veFbcX5g
[11] обрабатывать исключения: http://nodejs.org/docs/latest/api/process.html#process_event_uncaughtexception
[12] Upstart: http://caolanmcmahon.com/posts/deploying_node_js_with_upstart/
[13] будете использовать: http://kevin.vanzonneveld.net/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/
[14] forever: https://github.com/indexzero/forever
[15] monit: http://howtonode.org/deploying-node-upstart-monit
[16] supervisord: http://supervisord.org/
[17] daemontools: http://cr.yp.to/daemontools.html
[18] здесь: http://clock.co.uk/tech-blogs/deploying-nodejs-apps
Нажмите здесь для печати.