Installing and configuring Node.js on Ubuntu 12.04 for localhost and external multi-site Drupal installations

First, get the pre-requsite packages:

sudo apt-get install build-essential g++ libssl-dev curl git

Then, install the Python Software Properties package:

sudo apt-get install python-software-properties

Add the repository for node.js:

sudo apt-add-repository ppa:chris-lea/node.js

Run updates:

sudo apt-get update

Install Node.js and Node Package Manager:

sudo apt-get install nodejs npm

If you need or want to compile Node C++ modules, then install nodejs-dev:

sudo apt-get install nodejs-dev

Installing Sourcemint and Cloud9 is highly recommended if you want to make your own Node.js modules.

On Ubuntu and other Linux systems, make sure that the libxml2-dev package is installed, or the installation of Cloud9 will fail:

sudo apt-get install libxml2-dev

Ensure that Sourcemint is installed globally:

npm install -g sm

Then, install Cloud9 with Sourcemint:

sm clone --dev https://github.com/ajaxorg/cloud9/tree/master cloud9

Or, install Cloud9 with Sourcemint after git cloning Cloud9 (you must have git installed and properly configured on your system, but you probably should have git anyways *smiley face*):

Git clone Cloud9:

git clone https://github.com/ajaxorg/cloud9.git cloud9

Switch to the Cloud9 clone directory:

cd cloud9

Use Sourcemint install in the Cloud9 clone directory:

sm install

Assuming that you already have a Drupal multi-site installation on the machine, you need to create a site-specific copy of the Drupal nodejs module folder. Typically in a multi-site installation, all contributed modules (like nodejs) are placed in the sites/all/modules folder. But, since you need a separate instance of nodejs.config.js and server.js for each site, copy the nodejs modules folder into a new modules folder in site, at /sites/[YourSiteName]/modules/nodejs. This new modules folder will live next to the files folder for each site.

Switch into the site folder for the site that you want to use nodejs with:

cd /var/www/drupal/sites/[YourSiteName]

Make a new modules directory, assuming you don't have other site-specific modules for this site already:

mkdir modules

Get a copy of the nodejs module and unpack it in the site-specific modules folder. Drush is probably the easiest, assuming you have it set up, or you can also wget. Remember to check the nodejs module page to get the link to the latest stable version.

Switch into the site-specific modules directory:

cd modules

Download the nodejs module tarball:

wget http://ftp.drupal.org/files/projects/nodejs-7.x-1.0.tar.gz[/prettify]

Unpack the tarball:

tar -xvzf nodejs-7.x-1.0.tar.gz

And, delete the tarball:

sudo rm nodejs-7.x-1.0.tar.gz

Then, switch into the new nodejs folder for the site:

cd nodejs

Now it starts to get exciting. In the new nodejs module folder, you need to install npm (for each and every site). This must be done in the site-specific nodejs module folder at /sites/[YourSiteName]/modules/nodejs, because the packages.json file must be present. Make sure you are in the site-specific nodejs module folder, and:

npm install

In the module folder, you will see many files, but you are only really concerned with one, nodejs.config.js.example, at this time. Go ahead and make a copy of it for your actual usage:

cp nodejs.config.js.example nodejs.config.js

Edit the nodejs.config.js file to work for your site. At the time of writing, there were several extra lines in the example config file that seemed to be actually preventing server.js from starting, so make sure that you have everything exact, or you won't get any love from server.js.

sudo nano nodejs.config.js

The default example file, below the commented instructions, is currently filled with the following:

settings = {
  scheme: 'http',
  port: 8080,
  host: 'localhost',
  resource: '/socket.io',
  serviceKey: '',
  backend: {
    port: 80,
    host: 'drupalhost',
    scheme: 'http',
    basePath: '',
    messagePath: '/nodejs/message'
  },
   debug: false,
   sslKeyPath: '',
   sslCertPath: '',
   baseAuthPath: '/nodejs/',
   publishUrl: 'publish',
   kickUserUrl: 'user/kick/:uid',
   logoutUserUrl: 'user/logout/:authtoken',
   addUserToChannelUrl: 'user/channel/add/:channel/:uid',
   removeUserFromChannelUrl: 'user/channel/remove/:channel/:uid',
   addChannelUrl: 'channel/add/:channel',
   removeChannelUrl: 'channel/remove/:channel',
   setUserPresenceListUrl: 'user/presence-list/:uid/:uidList',
   addAuthTokenToChannelUrl: 'authtoken/channel/add/:channel/:uid',
   removeAuthTokenFromChannelUrl: 'authtoken/channel/remove/:channel/:uid',
   toggleDebugUrl: 'debug/toggle',
   contentTokenUrl: 'content/token',
   publishMessageToContentChannelUrl: 'content/token/message',
   extensions: [],
   clientsCanWriteToChannels: false,
   clientsCanWriteToClients: false,
   transports: ['websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling'],
   jsMinification: true,
   jsEtag: true,
   logLevel: 1
};

But, I was having a lot of trouble getting server.js started, and noticed that the module configuration utility did not include many of these lines. After removing the lines I had much greater success:

   kickUserUrl: 'user/kick/:uid',
   logoutUserUrl: 'user/logout/:authtoken',
   addUserToChannelUrl: 'user/channel/add/:channel/:uid',
   removeUserFromChannelUrl: 'user/channel/remove/:channel/:uid',
   addChannelUrl: 'channel/add/:channel',
   removeChannelUrl: 'channel/remove/:channel',
   setUserPresenceListUrl: 'user/presence-list/:uid/:uidList',
   addAuthTokenToChannelUrl: 'authtoken/channel/add/:channel/:uid',
   removeAuthTokenFromChannelUrl: 'authtoken/channel/remove/:channel/:uid',
   toggleDebugUrl: 'debug/toggle',
   contentTokenUrl: 'content/token',
   publishMessageToContentChannelUrl: 'content/token/message',

In the end, you want it to look like this, with the local network IP address of your server ('localhost' didn't seem to work for me, nor did the local loopback, 127.0.0.1):

settings = {
  scheme: 'http',
  port: 8181,
  host: '192.168.1.10',
  resource: '/socket.io',
  serviceKey: 'YourServiceKey',
  backend: {
    port: 80,
    host: 'yoursitename.com',
    scheme: 'http',
    basePath: '',
    messagePath: '/nodejs/message'
  },
   debug: false,
   sslKeyPath: '',
   sslCertPath: '',
   baseAuthPath: '/nodejs/',
   publishUrl: 'publish',
   extensions: [],
   clientsCanWriteToChannels: false,
   clientsCanWriteToClients: false,
   transports: ['websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling'],
   jsMinification: true,
   jsEtag: true,
   logLevel: 1
};

A couple of notes.

  • 'resource' is definitely '/socket.io'
  • 'baseAuthPath is definitely '/nodejs/'
  • publishUrl is definitely 'publish' (not 'nodejs/publish' as specified by the config utility)

If you use a service key, then add to your site's settings.php file:

/**
 * Node.js service key:
 *
 */
$conf['nodejs_service_key'] = 'YourServiceKey';

After getting your nodejs.config.js file edited, start the nodejs instance by running in the site-specific module folder:

node server.js

Bonus: DrupalChat integration:

Copy the server extension out of the DrupalChat module folder:

sudo cp /var/www/drupal/sites/all/modules/drupalchat/drupalchat_nodejs/drupalchat_nodejs.server.extension.js /var/www/drupal/sites/[YourSiteName]/modules/nodejs/drupalchat_nodejs.server.extension.js

Add the extension to the nodejs.config.js file:

extensions: ['drupalchat_nodejs.server.extension.js']

Drupal version: 
Modules: 
Audience: 

Comments

michael kors outlet

I would like to express my thanks to this writer for rescuing me from this challenge. Because of browsing throughout the world-wide-web and seeing views that were not productive, I believed my entire life was well over. Existing without the presence of strategies to the problems you have fixed by way of your guide is a crucial case, as well as the ones which might have adversely damaged my entire career if I had not discovered your blog. Your own skills and kindness in touching everything was useful. I don't know what I would've done if I had not encountered such a subject like this. I can at this time relish my future. Thanks a lot so much for the reliable and result oriented help. I won't hesitate to refer the blog to any individual who wants and needs guidelines about this problem.

jordan shoes

I not to mention my friends appeared to be going through the nice advice on your site then at once got an awful feeling I never thanked the blog owner for those techniques. These people were definitely for that reason excited to learn them and now have in truth been taking advantage of them. Thanks for simply being really accommodating as well as for considering this form of really good subject matter most people are really desperate to know about. My very own honest apologies for not expressing appreciation to you earlier.

golden goose outlet

My spouse and i got so fulfilled when Raymond could finish up his basic research using the precious recommendations he gained using your web pages. It's not at all simplistic to simply find yourself releasing hints that many others might have been trying to sell. We really recognize we now have the website owner to give thanks to because of that. The illustrations you have made, the easy web site navigation, the friendships your site aid to engender - it's everything terrific, and it is assisting our son and us believe that this article is pleasurable, which is certainly rather indispensable. Thanks for the whole lot!

kobe 9

I wanted to write you this little word to thank you yet again about the wonderful techniques you've contributed on this site. It has been really wonderfully generous with you giving openly all numerous people would've made available for an ebook to get some dough on their own, certainly considering that you could have tried it in the event you wanted. Those tactics additionally served to become a great way to fully grasp that some people have similar keenness like mine to know much more in regard to this issue. I know there are thousands of more fun occasions ahead for folks who scan your blog post.

curry shoes

An impressive share, I simply given this onto a colleague who was doing a bit analysis on this. And he in fact bought me breakfast because I discovered it for him.. smile. So let me reword that: Thnx for the treat! However yeah Thnkx for spending the time to debate this, I really feel strongly about it and love studying extra on this topic. If doable, as you grow to be experience, would you mind updating your weblog with more particulars? It's highly useful for me. Large thumb up for this weblog submit!

balenciaga

An fascinating discussion is price comment. I believe that you should write extra on this matter, it might not be a taboo topic but usually individuals are not sufficient to speak on such topics. To the next. Cheers

cheap jordans

Youre so cool! I dont suppose Ive learn anything like this before. So good to find any individual with some unique ideas on this subject. realy thank you for starting this up. this website is one thing that's needed on the internet, someone with a bit of originality. useful job for bringing something new to the internet!

supreme clothing

I'm typically to blogging and i actually respect your content. The article has really peaks my interest. I'm going to bookmark your web site and keep checking for new information.

off white clothing

That is the fitting weblog for anyone who needs to seek out out about this topic. You notice a lot its almost exhausting to argue with you (not that I actually would want匟aHa). You positively put a new spin on a topic thats been written about for years. Great stuff, simply great!

curry 4

An attention-grabbing discussion is worth comment. I feel that it is best to write extra on this subject, it won't be a taboo topic however typically persons are not sufficient to talk on such topics. To the next. Cheers

golden goose

Hello! I just wish to give a huge thumbs up for the nice information you may have right here on this post. I can be coming again to your weblog for extra soon.

christian louboutin shoes

Can I simply say what a relief to seek out someone who truly is aware of what theyre speaking about on the internet. You positively know how you can bring a problem to mild and make it important. Extra individuals need to learn this and understand this facet of the story. I cant imagine youre no more well-liked because you definitely have the gift.

vans outlet

A lot of thanks for each of your effort on this website. My aunt really likes conducting investigations and it's easy to understand why. My spouse and i hear all of the lively mode you deliver useful strategies by means of the website and in addition foster response from other individuals on that area of interest so my simple princess is certainly learning so much. Have fun with the rest of the new year. You are doing a wonderful job.

balenciaga shoes

My spouse and i have been very satisfied Chris managed to round up his studies through the entire precious recommendations he made through your blog. It's not at all simplistic to simply continually be offering facts which often many others might have been selling. And we also acknowledge we've got the writer to be grateful to for this. The entire explanations you made, the simple blog menu, the relationships you make it easier to create - it's got many exceptional, and it's really helping our son and us reckon that the content is entertaining, and that's pretty indispensable. Thank you for all!

balenciaga sneakers

I simply had to appreciate you once more. I'm not certain the things I might have taken care of without the actual tips and hints shared by you relating to my area. This was the hard case for me personally, however , discovering a new specialized strategy you solved the issue forced me to cry with happiness. I am just grateful for this help and as well , sincerely hope you really know what a powerful job you are carrying out training other individuals via a site. I'm certain you haven't come across all of us.

air max 95

Thanks a lot for providing individuals with such a terrific possiblity to discover important secrets from this web site. It is always so awesome and also packed with fun for me and my office mates to search your website minimum thrice in a week to find out the newest guides you have. And indeed, we are usually astounded considering the incredible advice you give. Selected 3 ideas in this article are absolutely the most effective we've ever had.

curry 4

I'm just writing to let you know what a awesome discovery my cousin's daughter developed using yuor web blog. She learned too many issues, with the inclusion of what it's like to possess an awesome helping spirit to let men and women really easily thoroughly grasp specified impossible subject matter. You undoubtedly did more than her expected results. Many thanks for distributing the good, trustworthy, informative and also unique tips on this topic to Janet.

hermes birkin bag

My spouse and i ended up being absolutely relieved when Albert could round up his survey through the entire ideas he discovered out of the web site. It is now and again perplexing to just possibly be releasing thoughts which often the rest have been selling. So we take into account we have you to thank for that. The specific explanations you made, the easy site menu, the relationships you will make it possible to promote - it's got many incredible, and it is helping our son in addition to our family do think that topic is satisfying, which is unbelievably important. Thank you for all!

michael kors outlet

I and my guys ended up digesting the nice points located on your website and all of a sudden came up with a horrible suspicion I never expressed respect to the website owner for those tips. All the men happened to be certainly joyful to study all of them and already have unquestionably been loving them. Thank you for truly being really kind and also for making a choice on variety of wonderful ideas most people are really desirous to be informed on. My personal sincere regret for not expressing appreciation to earlier.

coach handbags

I am also writing to make you know of the incredible experience our girl developed reading the blog. She figured out lots of things, which include what it's like to have a very effective coaching spirit to make other people quite simply master chosen very confusing issues. You undoubtedly did more than people's expectations. I appreciate you for giving these warm and friendly, trustworthy, informative not to mention fun guidance on the topic to Jane.

golden goose sneakers

I would like to convey my admiration for your generosity giving support to people that should have help on in this question. Your special commitment to getting the message up and down was particularly insightful and have always encouraged most people just like me to realize their desired goals. Your amazing interesting publication means a lot a person like me and somewhat more to my fellow workers. Thanks a lot; from each one of us.

longchamp bags

I have to express my affection for your kind-heartedness for men who must have assistance with this important theme. Your personal commitment to getting the solution around ended up being quite helpful and have in every case helped folks much like me to get to their ambitions. Your amazing important hints and tips implies much a person like me and a whole lot more to my colleagues. Thank you; from everyone of us.

yeezy

Thank you for all your valuable effort on this web page. Debby loves participating in research and it's easy to see why. All of us know all about the lively manner you make sensible solutions on your web site and even increase response from visitors on that concept plus our girl is without question studying a lot. Take pleasure in the rest of the new year. You are conducting a superb job.

jordan store

I enjoy you because of your entire labor on this web site. Betty take interest in managing investigations and it's really simple to grasp why. My spouse and i learn all regarding the compelling means you offer insightful items via your web blog and cause response from others on this topic so our own child is now understanding a lot of things. Enjoy the rest of the year. You're conducting a really good job.

hermes handbags

I simply wanted to jot down a brief note in order to say thanks to you for some of the stunning tips you are sharing at this website. My rather long internet search has finally been rewarded with professional ideas to talk about with my companions. I would believe that many of us site visitors are very much endowed to be in a very good community with so many perfect professionals with valuable guidelines. I feel pretty happy to have encountered the weblog and look forward to so many more thrilling times reading here. Thanks once again for a lot of things.

kd shoes

Thanks for all your valuable work on this site. Kate delights in going through investigations and it's really easy to see why. Most people notice all concerning the dynamic ways you make practical tricks on this website and even invigorate contribution from visitors about this situation plus our favorite simple princess is without a doubt starting to learn a lot of things. Take pleasure in the remaining portion of the new year. You have been carrying out a first class job.

chrome hearts online store

I'm also writing to make you understand of the remarkable encounter my cousin's child obtained checking your site. She realized too many issues, which include what it is like to have a very effective giving spirit to get men and women really easily know just exactly various tortuous topics. You truly did more than our own expected results. Thank you for displaying those effective, dependable, explanatory as well as fun guidance on that topic to Ethel.

nike air max

I want to show appreciation to you for rescuing me from this particular condition. Right after surfing around throughout the world-wide-web and getting tricks that were not productive, I assumed my life was over. Being alive minus the strategies to the difficulties you have solved by way of the guide is a critical case, and those that would have adversely affected my entire career if I hadn't come across your web blog. Your primary knowledge and kindness in dealing with the whole lot was excellent. I don't know what I would have done if I hadn't come across such a step like this. I can also at this point relish my future. Thanks for your time very much for your impressive and result oriented guide. I will not think twice to recommend your web blog to any person who ought to have guidance on this problem.

kyrie 5 spongebob

My wife and i have been really relieved Peter could conclude his preliminary research with the ideas he grabbed in your web pages. It is now and again perplexing to simply continually be offering techniques many others might have been selling. And we also grasp we've got the blog owner to thank for this. The type of illustrations you've made, the simple website navigation, the relationships you can make it easier to engender - it's mostly amazing, and it's making our son and us do think that idea is thrilling, which is certainly truly fundamental. Thank you for everything!

russell westbrook shoes

An interesting discussion is price comment. I feel that it's best to write more on this matter, it won't be a taboo topic however usually persons are not enough to talk on such topics. To the next. Cheers

golden goose

The following time I learn a weblog, I hope that it doesnt disappoint me as much as this one. I mean, I know it was my option to learn, however I really thought youd have something fascinating to say. All I hear is a bunch of whining about something that you would repair when you werent too busy looking for attention.

jordan shoes

There are some interesting points in time in this article however I don抰 know if I see all of them center to heart. There's some validity but I'll take maintain opinion till I look into it further. Good article , thanks and we want more! Added to FeedBurner as nicely

off white clothing

An attention-grabbing dialogue is worth comment. I feel that it is best to write extra on this subject, it won't be a taboo topic but generally people are not enough to talk on such topics. To the next. Cheers

kate spade handbags

I抎 need to check with you here. Which isn't something I often do! I get pleasure from studying a post that may make folks think. Additionally, thanks for allowing me to comment!

kyrie irving shoes

I have to point out my passion for your kindness supporting women who must have assistance with the topic. Your very own dedication to getting the message up and down ended up being exceptionally insightful and have frequently empowered guys like me to achieve their targets. Your informative report signifies so much to me and somewhat more to my office workers. Warm regards; from all of us.

balenciaga

Thanks so much for providing individuals with an extraordinarily terrific possiblity to check tips from this site. It is often so fantastic and also jam-packed with fun for me personally and my office fellow workers to visit your web site at a minimum thrice in one week to see the latest guidance you will have. And of course, I am at all times impressed with all the sensational principles you give. Certain 4 facts on this page are in fact the most effective we have ever had.

yeezy shoes

I am glad for commenting to let you be aware of what a impressive encounter our daughter undergone reading the blog. She figured out too many details, not to mention what it is like to have a very effective coaching nature to get a number of people with ease have an understanding of a variety of extremely tough subject areas. You actually did more than visitors' expected results. Thank you for rendering these helpful, safe, explanatory and unique tips about this topic to Gloria.

longchamp handbags

I actually wanted to write down a simple remark in order to say thanks to you for all the fabulous steps you are placing on this site. My extensive internet investigation has finally been recognized with reputable facts to exchange with my close friends. I 'd assume that most of us website visitors actually are definitely lucky to dwell in a magnificent site with many awesome professionals with great hints. I feel very fortunate to have seen the website page and look forward to so many more fabulous moments reading here. Thanks again for all the details.

coach factory outlet

I simply wanted to say thanks again. I'm not certain the things I would have taken care of in the absence of the entire solutions shared by you over my area. It truly was the scary matter in my opinion, but finding out your professional strategy you handled it made me to leap over fulfillment. I'm happy for your guidance and thus pray you comprehend what an amazing job you're carrying out teaching other individuals via your websites. More than likely you have never met any of us.

ferragamo belt

I wanted to type a brief note to be able to express gratitude to you for those stunning strategies you are giving out at this website. My considerable internet lookup has at the end been rewarded with brilliant facts and strategies to share with my good friends. I would repeat that most of us site visitors are undeniably endowed to dwell in a magnificent community with so many outstanding professionals with interesting tips and hints. I feel really blessed to have seen your entire web pages and look forward to many more entertaining moments reading here. Thanks a lot once more for everything.

kyrie 6

I and also my friends ended up analyzing the good tips and tricks from your website and so all of the sudden got an awful suspicion I had not thanked you for those tips. All the boys were totally passionate to read all of them and already have really been having fun with them. Thanks for being indeed thoughtful and also for making a choice on varieties of remarkable guides most people are really eager to be aware of. My personal honest apologies for not expressing appreciation to sooner.

golden goose

I as well as my pals appeared to be checking the good items on your web blog while suddenly I had a terrible feeling I had not expressed respect to the blog owner for those techniques. All the men were thrilled to read all of them and have in effect seriously been making the most of them. I appreciate you for getting indeed thoughtful as well as for going for this form of great useful guides millions of individuals are really eager to be informed on. My personal sincere apologies for not expressing appreciation to earlier.

calvin klein outlet

I needed to post you one bit of word to finally thank you so much over again on the breathtaking pointers you've contributed above. It's simply unbelievably generous of you to convey openly all that a few individuals could have marketed for an electronic book to get some bucks on their own, most importantly considering that you might have done it if you decided. The solutions also acted to become good way to be certain that many people have the identical zeal the same as mine to know more and more when it comes to this condition. I'm certain there are some more pleasant instances ahead for many who go through your blog.

golden goose sneakers

I and also my guys ended up digesting the nice tips located on the blog and quickly I got an awful feeling I never expressed respect to you for those secrets. The ladies were for that reason very interested to study all of them and have now in fact been taking advantage of those things. Thanks for truly being simply thoughtful and for finding this sort of wonderful useful guides most people are really desirous to know about. My honest regret for not expressing gratitude to you sooner.

cheap jordan shoes

I intended to put you the little bit of word to be able to say thank you again with the incredible tricks you've shown in this case. This has been certainly seriously open-handed of you in giving unhampered all that numerous people would've made available for an electronic book to help make some cash on their own, most importantly considering the fact that you might have tried it if you considered necessary. Those inspiring ideas also acted like the easy way to fully grasp other individuals have the identical dream just as mine to figure out great deal more concerning this problem. I know there are lots of more pleasant instances up front for those who scan through your blog.

Pages

Add new comment