Drupal / 9 июля 2016
/ 487

Я человек нездоровый. Если мне что-то взбрело в голову, я не успокоюсь пока это у меня не получится. Так было с сыром, рыбками и остальными моими увлечениями. Стыдно сказать, но в этом году я так и не сделал ни одного сыра, хотя жутко хочется этого самого, с плесенью… камамбера. Беда не в том, что мне лень, хотя конечно лень. Дело в том, что это у меня получилось. Мне интересен процесс познания чего-то нового. Конечно я не стал крутым сыроделом и специалистом, но вкус сыра начал понимать и знаю что я это могу. После этого данный предмет мне становится не то чтобы неинтересным, но в сыроделии, например, сейчас у меня лень побеждает над процессом познания. В этом же году я увлекся фидером. И кое-что получается. Вытащил леща на 2,6 кг и кучу всякой мелочи до 1 кг на нашем Заславском водохранилище.

Какое-то длинное и запутанное вступление у меня получилось. Перейдем непосредственно к теме. Node.js я уже пытался установить несколько раз и всегда обламывался. А вчера сделал очередную попытку и получилось. Дело в том, что модуль сильно обновился и процесс установки упростился. Если у вас виртуальный хостинг – не напрягайтесь, для этого нужен свой сервер. У меня Ubuntu. Поехали:

1. Для начала установим сам node.js, не в папку друпала.

cd ~
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

Для других систем процесс установки смотрим здесь.

2. Node.js у меня установился в папку /usr/lib. Ищем там 2 папки: nodejs и node_modules. Переходим во вторую.

cd /usr/lib/node_modules

3. Устанавливаем сервер node.js для дупала (подробнее здесь). 

npm install drupal-node.js

4. Теперь настраиваем конфиг. Это оказалось самым сложным, тем более что у меня https. Копируем файл /usr/lib/node_modules/drupal-node.js/nodejs.config.js.example в /usr/lib/node_modules/drupal-node.js/nodejs.config.js

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

settings = { // эта часть конфига относится к серверу
 scheme: 'https',
 port: 4433, 
 host: 'ВАШ_ДОМЕН',
 resource: '/socket.io',
 serviceKey: 'СЕКРЕТНЫЙ_КЛЮЧ',
 backend: { // эта часть конфига относится непосредственно к сайту
 port: 443, 
 host: 'ВАШ_ДОМЕН',
 scheme: 'https',
 basePath: '/',
 messagePath: '/nodejs/message'
 },
 debug: false,
 sslKeyPath: '/etc/nginx/ssl/ВАШ.key',
 sslCertPath: '/etc/nginx/ssl/ВАШ.pem',
 sslCAPath: '',
 baseAuthPath: '/nodejs/',
 extensions: [],
 clientsCanWriteToChannels: false,
 clientsCanWriteToClients: false,
 transports: ['websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'polling'],
 jsMinification: true,
 jsEtag: true,
 logLevel: 1
};

Если же у вас http, то примерно так:

settings = { // эта часть конфига относится к серверу
 scheme: 'http',
 port: 8888, 
 host: 'ВАШ_ДОМЕН',
 resource: '/socket.io',
 serviceKey: 'СЕКРЕТНЫЙ_КЛЮЧ',
 backend: { // эта часть конфига относится непосредственно к сайту
 port: 80, 
 host: 'ВАШ_ДОМЕН',
 scheme: 'http',
 basePath: '/',
 messagePath: '/nodejs/message'
 },
 debug: false,
 sslKeyPath: '',
 sslCertPath: '',
 sslCAPath: '',
 baseAuthPath: '/nodejs/',
 extensions: [],
 clientsCanWriteToChannels: false,
 clientsCanWriteToClients: false,
 transports: ['websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'polling'],
 jsMinification: true,
 jsEtag: true,
 logLevel: 1
};

Все. Никаких конфигов в папку с модулем дупала класть не нужно.

5. Теперь устанавливаем этот модуль, как обычно.

6. Включаем только то, что на картинке. Остальные, если надо, включите по мере необходимости. А Nodejs Config, мне кажется, вообще нафиг не нужен, он остался еще с тех времен, когда сервер устанавливался в папку модуля.

7. Далее идем в настройки модуля admin/config/nodejs/config. Прописываем такие же настройки, как первой части конфига и ключ.

Само собой, если у вас http, то включаем http.

8. Сохраняем и возвращаемся в папку drupal-node.js

cd /usr/lib/node_modules/drupal-node.js

запускаем

node app.js

а лучше так, чтобы видеть чего происходит:

DEBUG=* node app.js

В общем, если красных надписей и подозрительных слов вроде "Error" нет, то все хорошо.

9. Смотрим отчёт о состоянии в admin/reports/status. Если все зеленое, то друпал нашел наш сервер.

10. Но это не значит что он будет работать. Проверим как на самом деле работает node.js. Смотрим журнал admin/reports/dblog. Записи должны появляться без перезагрузки. Можно еще рискнуть и отсюда admin/config/nodejs/nodejs_notify/broadcast отправить сообщение:

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

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

cd /usr/lib/node_modules/
npm install forever -g

12. И запустим сервер командой:

cd /usr/lib/node_modules/drupal-node.js
forever start app.js

Если надо остановить, остановим так:

forever stop app.js

13. Если сайтов на сервере несколько, и для каждого нужен node.js, то копируем содержимое папки /usr/lib/node_modules/drupal-node.js в /usr/lib/node_modules/site2 (папку site2 можете назвать как угодно), подправляем в ней конфиг – прописываем домен другого сайта и меняем порт 8888 на 8889 или что-то похожее (возможно и не обязательно). И запускаем:

cd /usr/lib/node_modules/site2
forever start app.js

Все.

comments powered by HyperComments