Поиск:

Поиск по:

Результаты поиска по запросу «»
Найдено совпадений
По вашему запросу ничего не найдено
.
Показать еще

Облачный хостинг - как работает Node.js

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

1. Запуск Node.js
2. Смена версий
3. Работа с MySQL
4. Работа с Redis
5. Работа с Memcached
6. Перезапуск сервиса после изменения кода
7. Работа с ошибками приложения

1. Запуск Node.js

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

Настройки

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

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

Если ваше приложение запускается через node somescript.js, то укажите путь до somescript.js в строке "Файл запуска":

Настройки

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


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

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

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

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

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

c566@h2:~$
c566@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)c566@h2:~/mydomain.ru$

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

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

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

c566@h2:~$
c566@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)c566@h2:~/mydomain.ru$

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

(node.js v9.9.0)c566@h2:~/mydomain.ru$ node app/somescript.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, {'Content-Type': 'text/plain'});
  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 может привести к неработоспособности сайта. Причиной этого может быть то, что версии пакетов, установленных вами через 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: "c566_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 = {'name':'Kirill',
               'location':'Yekaterinburg',
               }

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
{"name":"Kirill","location":"Yekaterinburg"}
END

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

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

touch sitename/reload

Например

c566@h2:~$ touch mydomain.ru/reload

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

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

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

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

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

Регистрация доменов

в зонах .RU .РФ

от 200 рублей Зарегистрировать домен

SSL сертификаты

Подтверждение сайта и надежная защита

передаваемых данных

Купить сертификат

Облачные VDS

дешевле чашки кофе

Процессорных ядер: 4, Память: 4 Гб, Диск: 20 Гб SSD, Резервное копирование

от 35 р/день Заказать VDS

Все, что нужно от хостинга

Простое решение для вашего сайта

Подробнее

Хранилище данных

Храни что хочешь по смешным ценам

Почасовая оплата за размещенные данные.

Заказать хранилище