Установка nodejs на хостинг разберем детали


Настройка VDS: PHP, Apache, Nginx и Node.js



Руководство для начинающих по Node.js от Felix’a¶

В интернете сейчас много информации про Node.js, но, учитывая скорость, с которой идет разработка, достаточно тяжело найти актуальную информацию о том, с чего начать. Это руководство ставит перед собой именно такую цель - оставаться актуальным для последней стабильной версии Node.js.

Сейчас руководство соответствует последним изменениям в версии Node.js 0.4.x., которая является стабильной веткой.

Изучение JavaScript¶

Предполагается, что Вы уже знакомы с JavaScript. Если нет, то можно начать с чтения Eloquent JavaScript, свободно распространяемой книги от Marijn Haverbeke.

Hello World¶

Этот пример продемонстрирует как установить Node.js, включая создание простого http сервера.

Установка Node.js¶

Прежде всего, для того, чтобы использовать Node.js, необходимо иметь под рукой работающую *nix-подобную операционную систему. Рекомендуется Linux или OSX, но также могут подойти FreeBSD или cygwin (под windows). В настоящее время ведутся работы над портированием Node.js под windows, но пока они не доведены до стабильного состояния.

Наиболее распространенный подход для установки Node.js является его компиляция из исходных кодов. Существуют также различные пакеты для пакетных менеджеров, но учитывая то, как часто они обновляются и то, как их обновление может различаться, рекомендуется установка из исходных кодов.

Получить последние исходные коды можно на сайте nodejs.org. Для получения и установки версии 0.4.5 необходимо выполнить следующие команды:

Node.js не имеет внешних зависимостей, кроме python, который используется при сборке. В OSX необходимо установить XCode перед началом установки. В Ubuntu же необходимо выполнить:

Интерактивная оболочка Node.js¶

Если установка прошла без ошибок, то станет доступен вызов интерактивной оболочки Node.js, например:

Интерактивная оболочка (или REPL) удобна для тестирования простых однострочных примеров. Кроме того, она может быть внедрена в любое Node.js приложение. Для того, чтобы выйти из интерактивной оболочки, необходимо просто нажать Ctrl + C.

Оболочка (REPL) обладает множеством удобств, основным среди которых является автодополнение.

Первая программа¶

Для того, чтобы создать приложение для Node.js, необходимо всего лишь создать новый файл с расширением ‘.js’. Например, можно создать файл ‘hello_world.js’ со следующим содержимым:

После того, как файл сохранен, его можно запустить на выполнение из терминала/консоли следующим образом:

hello world http-сервер¶

В наше время вывод на терминал ‘hello world’ не сильно впечатляет. Необходимо идти дальше и написать программу, которая отдает ‘hello world’ по http. Для этого необходимо создать файл ‘hello_http.js’ и поместить в него следующий код:

Для того, чтобы запустить это приложение, необходимо выполнить в терминале/ консоли:

Первое, что бросается в глаза,- это то, что эта программа, в отличие от первой, не прекращается сразу. Это происходит в силу того, что Node.js- приложение будет всегда исполняться, пока не станет ясно, что никакие дальнейшие события невозможны. В этом случае запущенный http сервер - это источник событий, которые будут обеспечивать работу Node.js-приложения.

Чтобы проверить работу сервера, достаточно открыть новую закладку в web-браузере и перейти по следующему адресу. Как и ожидалось, ответом будет: ‘Hello Http’.

В качестве альтернативы, можно воспользоваться терминалом/консолью и, используя curl, протестировать работу сервера:

Теперь необходимо поближе посмотреть на код созданной программы. В первой строке подключается http модуль ядра и присваивается переменной http . О модульной системе будет рассказано более подробно в следующем разделе.

В следующей строке создается переменная server которой присваивается результат вызова метода http.createServer. Аргументом при вызове этого метода является замыкание, которое будет вызываться каждый раз, когда приходит http-запрос.

И в конце вызывается метод server.listen(8080), который указывает Node.js на каком порту требуется работа сервера. Если необходимо запустить сервер на 80-ом порту, то программу необходимо запускать с правами супер пользователя.

Далее, когда в браузере идет обращение к адресу localhost:8080, вызывается замыкание с параметрами req и res. Req - это поток, доступный для чтения, который содержит данные каждого http-запроса (например, подтверждение формы или загрузка файла). Res - это поток, доступный для записи, который используется для отправки данных обратно клиенту. В примере отсылается заголовок 200 OK, а также тело ответа ‘Hello Http’.

Модульная система¶

Для организации программ в виде отдельных файлов Node.js предлагает к использованию модульную систему.

Для демонстрации подхода создадим файл ‘main.js’ со следующим содержимым:

Нетрудно догадаться, что require(‘./hello’) используется для импорта данных из отдельного JavaScript файла. ‘./’ означает, что файл находится в той же директории, что и сам файл ‘main.js’. Также следует обратить внимание на то, что не требуется указывать расширение файла, так как ‘.js’ подставляется по умолчанию.

Далее необходимо создать файл ‘hello.js’ со следующим содержимым:

Тут следует обратить внимание на то, что происходит присваивание свойству ‘world’ объекта ‘exports’. Таким образом объявляется, что модуль ‘hello.js’ экспортирует во вне функцию ‘world’. Объект ‘exports’ доступен в любом модуле и возвращается при каждом вызове функции require при подключении модуля. При запуске ‘main.js’ вывод будет следующим:

Будет не лишним упомянуть, что зачастую объект ‘exports’ переопределяется следующим образом:

Как и ожидается, такое переопределение будет причиной того, что функция require будет возвращать функцию. Такой подход полезен при объекто-ориентированном программировании , где каждый файл экспортирует конструктор одного класса.

Следующая вещь, которую надо понимать при работе с модульной системой, это то, как система работает с вызовами ‘require’, которые не включают относительную подсказку о местоположении подключаемого файла. Например:

Первое, что сделает Node.js - это определит, есть ли модуль ядра с именем http. Если есть, то вернет соответствующую директорию. Но что будет при работе с модулями не относящимися к ядру, как, например, ‘mysql’?

В этом случае Node.js будет искать модуль в каждой директории, начиная с одного из текущих файлов, и проверять есть ли директория с именем ‘node_modules’. Если такая директория найдена, Node.js начнет поиск в ней файла с именем ‘mysql.js’. Если подходящих файлов не найдено и достигнут корень файловой системы (‘/’), Node.js сдается и выбрасывает исключение.

В настоящий момент Node.js учитывает дополнительный изменяемый список альтернативных директорий для импорта. Список доступен через массив require.paths . Однако идет активное обсуждение на тему удаления этой возможности, так что лучше пока не использовать ее.

И наконец, Node.js учитывает файл ‘index.js’, в котором описывается главный файл импорта для директории. Таким образом, если встретится вызов require(‘./foo’) , то Node.js будет пробовать искать файлы и ‘foo.js’ и ‘foo/index.js’.

Использование EventEmitters¶

Node.js реализует шаблон проектирования наблюдатель (рус), используя класс EventEmitter. Всегда, когда есть объект, который является источником событий, Node.js наследует класс этого объекта от класса EventEmitter.

Использовать EventEmitter и его наследников довольно просто. Необходимо лишь вызвать метод ‘on()’ у объекта, генерирующего события, и передать в качестве параметров имя события и функцию обратного вызова. Например:

Как видно, функция on() возвращает ссылку на объект, которому она принадлежит, что позволяет связывать в цепочки вызовов несколько прослушивателей событий.

Если интересует только первое возникновение события, то вместо on() можно использовать функцию once().

Наконец, можно удалить возможность прослушивания событий с помощью функции removeListener. Следует обратить внимание, что аргументами в этой функции являются ссылки на функции обратного вызова, которые необходимо удалить, а не имена событий:

Этот пример идентичен случаю использования метода once().

Что дальше?¶

Теперь у вас есть базовые знания о Node.js и сейчас лучше попробовать написать самостоятельно несколько небольших программ. Лучшее место для начала - это документация по API node.js.

Отладка приложений Node.js¶

Существует много способов отладки Node.js приложений. Лично я предпочитаю отлаживаться как можно меньше и следовать максимально точно руководству по разработке через тестирование .

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

Использование console.log()¶

Самый просто способ понять проблему - это исследовать объекты с помощью console.log(). Объекты можно передавать в качестве параметров:

Или же можно использовать sprintf-подобные возможности для форматирования отладочных сообщений:

Использование отладчика Node.js¶

Если console.log() чем-то не устраивает или есть вероятность, что текущая проблема может быть решена быстрее с помощью точек останова, то наиболее подходящим вариантом будет встроенный Node.js отладчик. Отладчик вызывается легко:

Использование WebKit Inspector¶

Фреймворки¶

Новичку с Node.js вряд ли захочется изобретать колесо, когда потребуется разобрать POST-запрос, маршрутизировать URL или сформировать представление. В этих случаях с большой долей вероятности захочется использовать один из популярных веб-фреймворков. Данный раздел дает беглый обзор основных из них и мое отношение к ним.

Express¶

На текущий момент express - наиболее подходящий фреймворк для большинства Node.js-разработчиков. Он относительно зрелый и построен на базе connect. Поддерживает такие возможности, как маршрутизация, конфигурация, шаблонный движок, разбор POST запросов и многое другое.

В то время, как express уже достаточно цельный фреймворк, он используется в гораздо меньших масштабах по сравнению с такими аналогами, как Rails, CakePHP или Django. Express наболее сопоставим с таким инструментом, как Sinatra и, к сожалению, пока не сделал больших усилий для того, чтобы уйти от Ruby корней в сторону чего-то более естественного для JavaScript. Так или иначе, его использование гораздо проще и быстрее, чем создание своего собственного фреймворка и в настоящий момент это наиболее достойный выбор.

fab.js¶

Думаете, что знаете JavaScript? Подумайте еще раз. Разработчики fab.js, вдохновленные цепочками jQuery, выбрали очень необычный подход. Каждая функция возвращает функцию, устраняя необходимость в именах методов вообще. Тем самым формируется код, напоминающий Lisp.

На данный момент я не считаю, что fab.js готов к промышленной разработке. Но если вы все еще изучаете мир Node.js, то вам абсолютно необходимо попробовать в работе эту библиотеку как минимум один раз. Если альтернативы нет, то fab.js откроет мир, в котором JavaScript не копирует решения Ruby, Python или PHP при создании веб-фреймворков и может развиваться уникальным образом.

Хостинг и Deployment¶

Быстрый Deployment¶

Если вы написали первое приложение для Node.js, то наверняка хотите запустить его как можно быстрее. Вот как это можно сделать:

1. Скопируйте программу на сервер, где приложение будет запущено. Если используется git, то это просто означает, что необходимо сделать клон репозитория из стороннего сервера или сервиса (например GitHub).

2. Предполагая, что проект содержит файл ‘server.js’, необходимо перейти в директорию, в которой содержится этот файл и выполнить:

Этот пример запускает ‘server.js’ внутри screen-сессии. Screen - это утилита, предоставляющая возможность сохранять состояние shell’a даже в случае, если закрыт терминал/консоль, через который происходило соединение с сервером.

Таким образом, теперь можно безопасно закрыть терминал/консоль (из screen выходить через control-a + d), а ‘server.js’ при этом продолжит работать в screen-сессии. Если есть необходимость проверить работу приложения, можно снова соединиться с сервером и выполнить:

Эта команда восстановит соединение с shell’ом, в котором в фоне работает ‘server.js’.

Однако, этот подход рекомендуется только для экспериментального deployment’a. Так как, если в приложении произойдет сбой, screen не попытается перезапустить его. Соответственно, для production окружения этот метод котегорически не рекомендуется.

Установка и настройка Node.js

Если вы используете Node.js как средство серверной разработки для своего сайта или web-приложения, то эта статья для вас, поскольку в ней мы рассмотрим настройку данной программной платформы и правильную организацию структуры папок для корректного функ­цио­ни­ро­ва­ния вашего проекта.

Для начала вам необходимо установить Node.js на свой аккаунт. Скачать любую версию Node.js можно с официального репозитория https://nodejs.org/dist/. На момент написания данного руководства, последним релизом являлась версия v10.6.0, скачать её можно здесь.

Выбирать нужно версию для Linux, битность x64, архиватор GZIP. Скачиваем файл https://nodejs.org/dist/v10.6.0/node-v10.6.0-linux-x64.tar.gz

Для нужной версии вы сможете также установить и необходимые модули (см. ниже).

На хостинге функционирование Node.js реализовано через специальную библиотеку Passenger, которая осуществляет взаимодействие Вашего сайта с обработчиком Node.js

Рассмотрим структуру папок и файлов. Мы предлагаем реализовать ее примерно следующим образом:

    site-name.com (корневая папка вашего сайта) htdocs www

Ваша цель - создать идентичную структуру и разместить файлы в соответствующих схеме директориях. Далее мы наполним их содержимым.

Чтобы сразу начать пользоваться необходимой вам версией Node (при условии, что Вы уже получили доступ по SSH), можете ввести следующие команды в терминале для загрузки и распаковки архива с файлами:

  1. Загружать нужно 64-разрядную версию для Linux
  2. Архив должен иметь расширение .tar.gz, как видно из примера выше

Чтобы Passenger мог взаимодействовать с Node.js, в файле .htaccess (мы рекомендуем располагать его здесь ./site-name.com/htdocs/www/.htaccess) необходимо прописать следующее:

  • Вместо hostXXXXXXX вы прописываете номер своего аккаунта
  • site-name.com - это имя папки с вашим проектом
  • app.js - название файла, который запускает работу серверной части (вы можете назвать его как захотите, главное, пропишите соответствующее имя в .htaccess)
  • PassengerNodejs - путь до исполняемого файла Node.js
  • PassengerFriendlyErrorPages - опция для отображения ошибок, в случае, когда приложение работает не корректно, или не запускается (по умолчанию - PassengerFriendlyErrorPages off). Данная опция выводит сообщения об ошибке, некоторые предложения по решению проблемы, трассировку и дамп переменных среды выполнения. Рекомендуется включать эту опцию только на этапе разработки. После её окончания удалите или закомментируйте в .htaccess эту опцию.

При разработке любого сайта или приложения разработчики допускают ошибки. По умолчанию, они записываются в папку logs, которая находится в корне сайта. Также, убедитесь, что у вас включена данная опция в панели управления. Во вкладке «Домены»→«Прикрепление домена», рядом с надписью Лог-файлы веб сервера есть переключатель, который включает/выключает данную опцию. После включения, логи начнут писаться в течение 5 минут (при обычной загруженности сервера).

Файлы restart.txt и always_restart.txt необходимы для того, чтобы при внесении вами каких-либо изменений в рабочие файлы (к примеру, app.js) Passenger, применяя правила записанные в .htaccess, мог перехватывать их и применять в работе сайта. Отличие заключается в том, что restart.txt сработает только один раз, а always_restart.txt перезапускает процесы веб-сервера при каждом поступившем запросе. Рекомендуется использовать always_restart.txt только при разработке. После того, как разработка проекта будет завершена, не забудьте удалить этот файл, чтобы избежать задержек при отображении страницы посетителям.

Если Вы уверены в том, что ваш код работает без багов, но всё-равно видите ошибки на странице, можно принудительно завершить все процессы с помощью следующей команды через SSH-соединение:

После чего перезагрузить страницу.

И напоследок, осталось добавить скрипт для запуска Node в app.js. Ниже представлен код с официального сайта Node.js (в дальнейшем вы можете изменять его по своему усмотрению, сейчас мы лишь хотим убедиться, что всё работает):

Итак, все настройки произведены. Откройте сайт в новой вкладке. Если выводится Hello world, то всё работает, как и ожидалось. В противном случае, ещё раз пройдите по вышеприведённому алгоритму действий. Возможно, вы что то упустили.

Чтобы установить какой-либо модуль в директорию с файлами приложения, при этом используя установленную версию Node.js, необходимо для начала прописать путь до исполняемого файла node в .bash_profile (он лежит в корне вашего аккаунта). После этого вы сможете обращаться к нему из любой директории вашего проекта.

Итак, откройте .bash_profile и допишите следующую строку:

Для примера, рассмотрим подключение модуля mysql для работы с базой данных (предварительно, создайте таблицу под любым названием и поместите туда несколько записей). Чтобы установить даный модуль, зайдите через SSH-соединение в директорию «nodejs_app/www» и введите в терминале команду:

Таким обазом создастся файл package.json с данными о вашем приложении. После этого наберите команду:

Вы увидите, что автоматически создастся новая директория «node_modules» и подгрузятся необходимые нам для работы файлы.

Также, рекомендуем загрузить 2 часто используемых модуля - fs (для работы с файлами) и util (для красивого вывода объектов в консоль)

Далее, открываем файл нашего приложения app.js и добавляем следующий код:

В коде выше мы, с помощью модуля fs, создаём новый файл debug.log, в который будем помещать вывод функции console.log

Далее, переопределяем саму функцию console.log, задействуя поток на запись.

Теперь, при помощи модуля mysql, подключаемся к своей БД и выбираем все записи из нужной нам таблицы, прописывая их в созданный нами файл.

Проверим, всё ли сработало: перезагрузите страницу своего сайта и откройте файл debug.log - вы должны увидеть вывод всех записей из таблицы.

Для запуска приложений Node.js через crontab создайте shell скрипт и определите в нём переменную окружения PATH исходя из ваших требований. Например, для запуска приложения с помощью утилиты pm2 (process manager), используйте такой код в shell скрипте:

Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из панели управления хостингом, раздел «Помощь и поддержка».

Как установить на VPS Node js Ubuntu

Вступление

Node.js – это среда выполнения JavaScript, созданная с помощью движка JavaScript V8 от Google. С её помощью вы можете создавать инструменты для сети, веб серверов и многое другое средствами JavaScript. Node.js использует цикл событий (event loop), что означает, что команды выполняются асинхронно. Это руководство расскажет вам, как установить Node.js на VPS под ОС Ubuntu (14.04) и управлять Node js Ubuntu.

Что понадобится

Прежде, чем приступить к действиям из руководства, проверьте наличие:

  • SSH доступа на VPS, запущенный под Ubuntu 14.04

Шаг 1 — Установка Node js Ubuntu

Node.js уже есть в репозиториях Ubuntu 14.04 по умолчанию. Однако, версия устарела, поэтому рекомендуется вам использовать для установки персональный архив пакетов (PPA) из NodeSource.

Прежде всего, скачайте и добавьте PPA в вашу локальную конфигурацию при помощи следующей команды:

Эта команда установит самую свежую стабильную версию Node.js v6. Если вам нужна 7 версия или любая другая, просто измените setup_6.x на нужную вам версию. Для Node.js v7 команда будет выглядеть так:

ВАЖНО! Если вы получили ошибку, говорящую о том, что curl не установлен (curl is not installed) вы можете его установить запустив sudo apt-get install curl

Теперь вы можете приступить к установке Node js Ubuntu точно также, как вы устанавливаете любые другие пакеты на Ubuntu:

Так как используется флаг ‘-y’, вам не нужно будет подтверждать установку. После того как Node.js установлен вы можете проверить точную установленную версию, запустив:

Результат выполнения команды:

Это всё, вы успешно установили Node js Ubuntu на своём VPS.

Node.js идёт в поставке с менеджером пакетов (NPM), который позволяет вам устанавливать и управлять пакетами Node.js. Для установки пакета запустите:

Шаг 2 — Установка NVM (по желанию)

В Node.js есть менеджер версий (NVM), то есть вы можете установить несколько версий Node.js и легко ими управлять. Для установки NVM вам вначале нужно установить пакет:

После этого можно устанавливать NVM:

v0.32.1 – это версия NVM, проверить свежую версию можно здесь

Вы получите сообщение подобное следующему:

Теперь вы можете вновь открыть ваш терминал или запустить упомянутые команды, используя NVM. Чтобы убедиться в том, что NVM установлен верно наберите:

Если вы получите номер версии, это означает, что NVM установлен корректно. Теперь можно использовать NVM для проверки всех доступных версий Node.js:

Результат выполнения команды:

Для установки версии v7.1.0 Node.js просто запустите:

Для использования только что установленной версии Node.js запустите:

Используя тот же метод вы теперь можете устанавливать и управлять несколькими другими версиями Node.js точно также. Вы можете проверить установленную локально версию при помощи следующей команды:

Результат выполнения команды:

Как видно, текущая версия по умолчанию v7.1.0, поэтому вместо набора nvm use v7.1.0 можно просто использовать:

Вы можете также поменять версию по умолчанию:

Отзывы

Власта
Зоя
Исай
Марина
lenphetaco

Написать отзыв

Success! Your message has been sent.