Перейти к содержимому

Настройка vps ноде js что это

  • автор:

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

При первом подключении система спросит нужно ли добавлять IP в список доверенных хостов, необходимо ввести «yes», нажать «Enter», после чего ввести пароль. Если Вы копируете пароль из письма, отправленного Вам после заказа сервера, будьте внимательны и не скопируйте лишний пробел. Вот так будет выглядеть окно после подключения к серверу по SSH:

Подключение к серверу по SSH

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

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

yum -y update

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

Затем необходимо установить Development Tools. Это группа инструментов для компиляции ПО из исходного кода. Мы будем использовать следующую команду:

yum -y groupinstall "Development Tools"

Отчет об установке Development Tools

По окончании мы также получим отчет о результатах выполнения команды со списком установленных пакетов.

Затем необходимо установить GNU screen для того, чтобы иметь возможность при подключении к ВПС иметь доступ к нескольким сессиям одновременно. Мы будем использовать следующую команду для установки:

yum -y install screen

Отчет об установке GNU screen

После того, как мы подготовили систему к установке Node.js необходимо перейти в каталог, в котором вы будете хранить системные файлы. По умолчанию это src, перейти в него можно с помощью следующей команды:

cd /usr/src

после выполнения которой ваш терминал должен выглядеть следующим образом:

Переход в папку с системными файлами

Затем необходимо скачать последнюю версию программы с помощью команды wget.

Чтобы получить необходимую нам ссылку на последнюю версию необходимо перейти на https://nodejs.org/en/download/ и в новой вкладке открыть ссылку «Source Code». Скачивать архив на свой компьютер не нужно, нас интересует только ссылка на него, которую мы скопируем из строки браузера. После этого необходимо выполнить следующую команду:

wget http://nodejs.org/dist/v4.2.2/node-v4.2.2.tar.gz

Скачивание архива

После скачивания архив необходимо распаковать с помощью этой команды:

tar zxf node-v4.2.2.tar.gz

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

cd node-v4.2.2

Перед установкой необходимо подготовить команды компилятора используя

./configure

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

Предупреждение

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

После подготовки компилятора необходимо скомпилировать исходный код с помощью команды

make

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

После завершения компиляции выполняем установку с помощью команды:

make install

Когда установка завершена на экран будет выведен путь, куда помещены конфигурационные файлы, по умолчанию это /usr/local/bin/node.

Путь к файлам

Установка Node.js на Debian/Ubuntu с помощью nvm

Для установки Node.js на Debian/Ubuntu лучше всего использовать инструмент nvm, так как с его помощью можно выбрать версию при установке.

Для начала необходимо обновить пакеты системы с помощью команды:

sudo apt-get update

Обновление системы

Затем устанавливаем пакеты из репозиториев нашей ОС, которые позволяют собирать пакеты из исходников, используя данную команду:

sudo apt-get install build-essential libssl-dev

Во время установки на Debian система может попросить подтвердить, что Вы готовы использовать дополнительное место на диске, необходимо ввести «yes» и нажать «Enter»

Подтверждение использования места на диске

Затем устанавливаем NVM c помощью следующей команды:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Установка NVM

После установки NVM нам нужно будет перелогиниться в систему либо же обновить данные с помощью команды

source ~/.profile

После того, как данные о системе обновлены необходимо узнать доступные версии Node.js с помощью команды

nvm ls-remote

Список доступных версий

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

nvm install 5.1.0

Установка выбранной версии

После установки эта версия будет использоваться по умолчанию. Если на вы установили на сервере несколько версий, то для того, чтобы указать системе какую версию необходимо использовать применяем следующую команду:

nvm use 5.1.0

По умолчанию исполняемый файл Node.js вызывется командой

Настройка Node.js

В статье будет рассмотрена настройка Node.JS.

Обратите внимание!

Если вы хотите запустить веб-приложение, но еще не создали сайт — сначала необходимо создать сайт и прикрепить к нему домен в разделе Сайты. Лучше всего имя сайта указывать аналогично желаемому доменному имени — в противном случае в будущем могут возникнуть трудности с пониманием файловой структуры.
Если у вас еще нет доменного имени, его можно добавить или зарегистрировать в разделе Домены.
После того, как сайт создан и к нему прикреплён домен, направленный на наши NS сервера, можно приступать к настройке.

Сначала необходимо подключится к аккаунту по протоколу SSH.

Подключение к аккаунту

Если Вы пользуетесь OS Windows, то, скорее всего, Вам подойдет SSH-клиент PuTTy (статью по настройке можно прочитать здесь). Когда настроите, можно переходить на шаг 2.

Если Вы пользуетесь OS Linux или OS X, подойдет обычный терминал, который присутствует во всех Unix-подобных операционных системах. Подключиться можно следующей командой:

$ ssh username@username.beget.tech

Где username — логин, username.beget.tech — адрес сервера (посмотреть его можно в блоке Техническая информация на главной странице панели управления).

Переход в Docker

Далее нужно перейти в виртуальное окружении Docker. Запуск Node.js осуществляется только внутри Docker контейнера. Для этого, после подключения по SSH необходимо ввести команду:

ssh localhost -p 222

А также ввести свой пароль для подключения к SSH. В строке терминала будет отображено, что теперь мы находимся в Docker окружении:

(docker) valkeru@oscar2: [0]~

На хостинге уже установлены Node.js и npm.

(docker) valkeru@oscar2:~ [0] $ node -v v8.12.0 (docker) valkeru@oscar2:~ [0] $ npm -v 6.4.1

Установка Node.js другой версии

Обратите внимание!

На данный момент, на виртуальном хостинге, максимальная поддерживаемая версия — 17.9.1. NodeJS версии 18.0 и выше работать не будет.

Учитывайте эту информацию при выборе версии.

Установка Node.js производится в каталог .local Вашей учётной записи:

valkeru@oscar2:~ [0] $ mkdir -p .local valkeru@oscar2:~ [0] $ cd .local

Обратите внимание!

Загружать нужно 64-разрядную версию, запуск исполняемых файлов для 32-битной архитектуры на наших серверах запрещён!

Загрузим дистрибутив и распакуем его:

valkeru@oscar2:~/.local [0] $ wget https://nodejs.org/dist/v12.16.2/node-v12.16.2-linux-x64.tar.xz --2019-06-26 02:46:01-- https://nodejs.org/dist/v12.16.2/node-v12.16.2-linux-x64.tar.xz Resolving nodejs.org. 104.20.23.46, 104.20.22.46, 2400:cb00:2048:1::6814:172e, . Connecting to nodejs.org|104.20.23.46|:443. connected. HTTP request sent, awaiting response. 200 OK Length: 11314172 (11M) [application/x-xz] Saving to: ‘node-v8.1.2-linux-x64.tar.xz’ ​ node-v12.16.2-linux-x64.tar.xz 100%[==========================>] 10,79M 7,18MB/s in 1,5s ​ 2019-06-26 02:46:04 (7,18 MB/s) - ‘node-v12.16.2-linux-x64.tar.xz’ saved [11314172/11314172] ​ valkeru@oscar2:~/.local [0] $ tar xJf node-v12.16.2-linux-x64.tar.xz --strip 1 valkeru@oscar2:~/.local [0] $ 

Удалите загруженный дистрибутив:

valkeru@oscar2:~/.local [0] $ rm node-v12.16.2-linux-x64.tar.xz valkeru@oscar2:~/.local [0] $

Обратите внимание!

Поскольку сайты на учётных записях изолированы, для запуска Node.js из окружения веб-сервера потребуется открыть общий доступ к каталогу ~/.local.
Инструкция по предоставлению общего доступа приведена в этой статье.

Создание каталога проекта

Теперь нужно перейти в каталог сайта, в рассматриваемом примере имя каталога — node:

valkeru@oscar2:~ [0] $ cd ~/node

Необходимо создать каталог для проекта и вложенный в него каталог tmp, в рассматриваемом примере имя каталога — HelloWorld:

valkeru@oscar2:~/node [0] $ mkdir -p HelloWorld/tmp valkeru@oscar2:~/node [0] $

Для корректной отдачи статического контента средствами Nginx создается ссылка public, указывающая на public_html:

valkeru@oscar2:~/node [0] $ ln -s public_html public

С помощью любого текстового редактора (например, nano или vim) необходимо создать файл app.js в каталоге проекта HelloWorld со следующим содержимым:

var http = require('http'); var server = http.createServer(function(req, res) < res.writeHead(200, < 'Content-Type': 'text/plain' >); res.end('Hello World!'); >); server.listen(3000);

Далее, если вы находитесь в каталоге проекта HelloWorld, необходимо вернутся в каталог node

valkeru@oscar2:~/node/HelloWorld [0] $ cd ..

Создание .htaccess

Затем нужно создать файл .htaccess. В общем виде его содержимое выглядит следующим образом:

PassengerNodejs /home/первая буква логина/логин/.local/bin/node PassengerAppRoot /home/первая буква логина/логин/папка сайта/название_проекта PassengerAppType node PassengerStartupFile app.js

Если вы установили новую версию NodeJS, то .htaccess будет следующим:

PassengerNodejs /home/v/valkeru/.local/bin/node PassengerAppRoot /home/v/valkeru/node/HelloWorld PassengerAppType node PassengerStartupFile app.js

Если вы решили воспользоваться предустановленным NodeJS, то .htaccess будет следующим:

PassengerNodejs /usr/local/bin/node PassengerAppRoot /home/v/valkeru/node/HelloWorld PassengerAppType node PassengerStartupFile app.js

Для того, чтобы Passenger перечитал конфиг, необходимо создать файл tmp/restart.txt. Cделать это нужно в директории, указанной в качестве PassengerAppRoot в файле .htaccess ранее.

valkeru@oscar2:~/node/HelloWorld [0] $ touch tmp/restart.txt valkeru@oscar2:~/node/HelloWorld [0] $

Обратите внимание!

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

Для проверки работоспособности откройте сайт в браузере:

Также для проверки работоспособности можно выполнить следующую команду:

valkeru@oscar2:~/node [0] $ ps aux | grep Passenger 659085 4148 0.1 0.0 878828 29796 ? Sl 02:55 0:00 Passenger NodeApp: /home/v/valkeru/node/HelloWorld valkeru 7365 0.0 0.0 7496 2144 pts/19 SN+ 02:56 0:00 grep Passenger

В листинге процессов присутствует модуль Apache Passenger.

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

Установка Node.JS на Linux-сервере

url image

Узнать последнюю актуальную версию Node.JS можно на официальном сайте:

Установка Node.JS из репозиториев операционной системы

При установке из стандартного репозитория вы получите неактуальную версию — ту, которая была доступна на момент выпуска вашей операционной системы. Для разработки или подготовки сервера под боевой проект этот способ установки не подойдёт. Но для обучения или экспериментов с кодом использовать можно.

Чтобы проверить доступную для установки версию, используйте команду:

apt show nodejs

Centos:

yum info nodejs

Установка выполняется за один шаг:

apt install -y nodejs npm
yum install -y nodejs

Чтобы убедиться, что установка прошла корректно, проверьте версию Node.JS и пакетного менеджера npm :

nodejs -v npm -v
node -v npm -v

Установка Node.JS из репозиториев NodeSource

При этом способе установки можно установить актуальную версию Node.JS. Список поддерживаемых операционных систем можно увидеть здесь.

Для установки потребуется curl . Во многих современных дистрибутивах Linux-систем он установлен по умолчанию. При необходимости можно выполнить ручную установку:

apt install -y curl
yum install -y curl

Для примера выполним установку последней стабильной версии Node.JS. Для этого нужно выполнить команды:

curl -sL https://deb.nodesource.com/setup_12.x | bash - apt install -y nodejs
curl -sL https://rpm.nodesource.com/setup_12.x | bash - yum install -y nodejs

Чтобы убедиться, что установка прошла корректно, проверим версию Node.JS и пакетного менеджера npm :

nodejs -v npm -v
node -v npm -v

Установка Node.JS с помощью менеджера версий nvm

Node Version Manager, или nvm , позволяет устанавливать любые версии Node.JS и при необходимости переключаться между ними. Инструкция по установке последней версии nvm доступна в описании официального Github-репозитория.

Для примера установим текущую актуальную версию nvm . Для этого, как в предыдущем случае, нам понадобится curl . С его помощью мы скачаем и запустим скрипт установки:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash

Скрипт установит nvm в домашнюю папку текущего пользователя (в примере это пользователь root и его папка /root ) и добавит алиас для вызова менеджера в конфигурационный файл пользователя. Чтобы обновить терминал с учётом этих изменений, введите команду:

source ~/.bashrc

После этого проверим версию nvm , чтобы убедиться, что установка выполнена корректно:

nvm -v

Теперь мы можем использовать весь функционал nvm .

Просмотреть полный список доступных к установке версий Node.JS можно с помощью команды:

nvm ls-remote

Установить самую последнюю версию Node.JS можно следующим образом:

nvm install node

node в примере — это алиас к последней актуальной версии.

Установить конкретную версию из списка доступных можно так:

nvm install v12.19.0

где v12.19.0 — номер необходимой версии Node.JS, который можно скопировать в выводе команды nvm ls-remote .

После установки проверьте, что Node.JS установлен корректно, с помощью команды:

node -v

Для проверки списка уже установленных версий Node.JS введите в терминале:

nvm ls

Между установленными версиями можно переключаться. Например, в примере с помощью nvm у нас используется версия v12.19.0 . Помимо неё мы можем переключиться на ранее установленную системную версию (которую можно установить одним из предыдущих способов установки Node.JS) или любую другую:

nvm use system

Удалить установленную с помощью nvm версию Node.JS можно в два шага:

    Проверяем, какая версия Node.JS сейчас используется:

nvm current
nvm deactivate nvm uninstall v12.19.0

Если используется другая версия, удаление можно запустить сразу:

nvm uninstall v12.19.0

Хостинг — как работает Node.js

В хостинге некоторые решения могут показаться вам нестандартными.
Поэтому перед началом работы мы бы рекомендовали ознакомиться с вводной статьей.

1. Запуск Node.js

При создании сайта необходимо выбрать, что сайт работает на Node.js:

Настройки

Загрузить файлы сайта можно подключившись по SFTP.

Файлы вашего приложения можно расположить в каталоге sitename/app , а статические файлы (.css, .jpg, .png и другие) — в каталоге sitename/www .

Откройте настройки сайта в панели управления.

Если ваше приложение запускается через node hello.js , то укажите путь до hello.js в параметре APP_PATH, аналогично тому, как это сделано на скриншоте ниже:

Настройки

Если ваше приложение запускается через npm start , то в APP_PATH укажите только путь до каталога, где находится package.json .

Установка пакетов и отладка сайта

Управлять проектом можно подключившись по SSH.

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

Для каждого сайта уже создано индивидуальное виртуальное окружение. Свое собственное виртуальное окружение создавать не требуется.

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

c566@h2:~$ c566@h2:~$ cd mydomain.ru/ Now using node v9.9.0 (npm v5.6.0) (node.js v9.9.0)c566@h2:~/mydomain.ru$ 

Далее можно установить нужные расширения:

(node.js v9.9.0)c3087@h2:~/mydomain.ru$ npm install mysql 

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

c3087@h2:~$ c3087@h2:~$ cd mydomain.ru/ direnv: loading .envrc Now using node v9.9.0 (npm v5.6.0) direnv: export +ENV (node.js v9.9.0)c3087@h2:~/mydomain.ru$ 

Далее запустим скрипт:

(node.js v9.9.0)c3087@h2:~/mydomain.ru$ node app/hello.js Connected! 

Особенности запуска вашего приложения

Чтобы сайт был виден извне нужно прикрепиться (bind) на IP и порт, которые мы передаем в переменных окружения APP_IP и APP_PORT.

По умолчанию в app/hello.js уже загружен пример использования переменных окружения APP_IP и APP_PORT. При обращении к сайту в браузере выводится “Hello world!”.

var http = require('http'); http.createServer(function (req, res) < res.writeHead(200, ); res.end('Hello world!\n'); >).listen(process.env.APP_PORT, process.env.APP_IP); console.log('Server running at http://%s:%s/', process.env.APP_IP, process.env.APP_PORT);

2. Смена версий Node.js

При необходимости можно задать нужную версию Node.js в панели управления

  • откройте раздел “хостинг” в панели управления
  • кликните на нужный контейнер
  • кликните по нужному сайту
  • перейдите на вкладку Node.js

Для уже работающего сайта смена версии Node.js может привести к неработоспособности сайта. Причиной этого может быть то, что версии пакетов, установленных вами через npm , никак не изменяются.

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

3. Работа с MySQL

MySQL доступен только через сокет /run/mysqld/mysqld.sock и недоступен по сети.

Установим драйвер для работы с MySQL

npm install mysql 
var mysql = require('mysql'); var con = mysql.createConnection(< socketPath: "/var/run/mysqld/mysqld.sock", user: "c3087_mydomain_ru", password: "HeKriDapsonag31" >); con.connect(function(err) < if (err) throw err; console.log("Connected!"); >); 

Сохраним этот код в файл app/hello.js . Далее перезапустим приложение.

Если после открытия этого сайта в браузере появляется сообщение Connected! , то подключение к MySQL прошло успешно.

4. Работа с Redis

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

Установим драйвер для работы с redis

npm install redis 
var redis = require("redis"); var client = redis.createClient(); client.on("error", function (err) < console.log("Error " + err); >); client.set("string key", "string val", redis.print); client.hset("hash key", "hashtest 1", "some value", redis.print); client.hset(["hash key", "hashtest 2", "some other value"], redis.print); client.hkeys("hash key", function (err, replies) < console.log(replies.length + " replies:"); replies.forEach(function (reply, i) < console.log(" " + i + ": " + reply); >); client.quit(); >); 

Сохраним этот код в файл app/hello.js . Далее перезапустим приложение.

Если после открытия этого скрипта в браузере появляется сообщение Connected! , то подключение к MySQL прошло успешно.

5. Работа с Memcached

Для начала работы с Memcached можно установить два пакета

npm install memcached express 

Пример подключения к Memcached и сохранения данных на 10000 секунд:

var express = require("express"); var Memcached = require('memcached'); var app = express(); app.listen(process.env.APP_PORT, process.env.APP_IP); var memcached = new Memcached(); memcached.connect( '127.0.0.1:11211', function( err, conn ) < if( err ) < console.log( conn.server ); >>); var profile = memcached.set('profile', profile, 10000, function (err) < if(err) throw new err; >); 

Сохраним этот код в файл app/hello.js . Далее перезапустим приложение.

Чтобы проверить сохраненные данные подключимся по SSH , а далее подключимся к серверу Memcached

$ telnet 127.0.4.27 11211 Trying 127.0.4.27. Connected to 127.0.4.27. Escape character is '^]'. 

Запросим значение ключа profile :

get profile VALUE profile 2 44 END 

6. Перезапуск сервиса после изменения кода сайта

После подключения по SSH можно перезапустить сервис NodeJS выполнив команду

touch sitename/reload 
c3087@h2:~$ touch mydomain.ru/reload 

7. Работа с ошибками приложения

Если при обращении к сайту вы видите ошибку 502 Bad Gateway или аналогичную, то в первую очередь стоит обратиться к логам ошибок.

Последние возникавшие ошибки можно найти в конце файла имясайта/log/node-runlog/current .

Наблюдение за лог-файлом в реальном времени:

tail -f ~/имясайта/log/node-runlog/current 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *