
Я человек нездоровый. Если мне что-то взбрело в голову, я не успокоюсь пока это у меня не получится. Так было с сыром, рыбками и остальными моими увлечениями. Стыдно сказать, но в этом году я так и не сделал ни одного сыра, хотя жутко хочется этого самого, с плесенью… камамбера. Беда не в том, что мне лень, хотя конечно лень. Дело в том, что это у меня получилось. Мне интересен процесс познания чего-то нового. Конечно я не стал крутым сыроделом и специалистом, но вкус сыра начал понимать и знаю что я это могу. После этого данный предмет мне становится не то чтобы неинтересным, но в сыроделии, например, сейчас у меня лень побеждает над процессом познания. В этом же году я увлекся фидером. И кое-что получается. Вытащил леща на 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
Все.