# Learning Node.JS Programming markdown=yes * * * * * * * * * * * * * * * ## Hello World at Command Prompt Open up a text file and enter: // Call the console.log function. console.log("Hello World"); Save file as hello-console.js and then at the command prompt, execute: `node hello-console.js` Obviously, that produces: `Hello World` ## Hello World HTTP Server Add the following code to a file called: `hello-server.js` --- // Load the http module to create an http server. var http = require('http'); // Configure our HTTP server to respond with Hello World to all requests. var server = http.createServer(function (request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.end("Hello World\n"); }); // Listen on port 8080, IP defaults to 127.0.0.1 server.listen(8080); // Put a friendly message on the terminal console.log("Server running at http://127.0.0.1:8080/"); --- Execute the code with: `node hello-server.js` The following message will be displayed to the console: `Server running at http://127.0.0.1:8080/` Point the browser to the domain/sub domain of the server with the port included. Example: If running the server and the browser on the same machine, use: `http://localhost:8080` If the above server code is running, then the following will be displayed in the browser: `Hello World` To stop this server app, hit `Ctrl-C` at the command prompt. ## Counter Add the following code to `counter.js` --- var http = require('http'); var userCount = 0; http.createServer(function (request, response) { console.log('New connection'); userCount++; response.writeHead(200, {'Content-Type': 'text/plain'}); response.write('Hello!\n'); response.write('We have had '+userCount+' visits!\n'); response.end(); }).listen(8080); console.log('Server started'); --- Execute the code with: `node counter.js` The message displayed to the console will say: `Server started` When accessing the server at port 8080 in the browser, the following will be displayed to the browser: `Hello!` `We have had 1 visits!` Back at the server, the console display will say: `New connection` `New connection` A refresh on the browser will cause the following message to be sent by the counter.js app: `Hello!` `We have had 3 visits!` The counter increments by two. Explanation from the [article](http://www.theprojectspot.com/tutorial-post/Node-js-for-beginners-part-1-hello-world/2) : q. Note: You might see the counter going up by two for each request, this is because your browser is requesting the favicon from the server (http://localhost:8080/favicon.ico). br. br. You should also see that Node.js is logging each request it receives to the console. br. br. The main thing we're doing here is setting a 'userCount' variable and incrementing on each request. We're then writing the 'userCount' in the response text. q.. ## Hello World Module Create the file `main.js` with the following code: var hello = require('./hello'); hello.world(); In the same directory, create another file called `hello.js` with the following code: exports.world = function() { console.log('Hello World'); } Execute at the command prompt: `node main.js` The console will display the following: `Hello World` ## Parse Log File ## Express Framework `npm install express` file: `static-file-server.js` code: var express = require('express'), app = express(); app.use(express.static(__dirname + '/public')); app.listen(8080); execute: `node static-file-server.js` ## Running Node.js App as Daemon q. The purpose of Forever is to keep a child process (such as your node.js web server) running continuously and automatically restart it when it exits unexpectedly. q.. I made a change to my Ghost blog installation config file. I killed the Ghost index.js process. When I did, it automatically restarted and loaded the new config settings. `$ npm install forever` `$ forever start /home/nodejs/counter.js` ### Nginx Server Block `$ cd /etc/nginx/sites-available` `$ vim nodejs.yoursite.com` The server block file: server { listen 80; server_name nodejs.yoursite.com; location / { proxy_pass http://nodejs.yoursite.com:8080; } } `$ service restart nginx` In browser, access: http://nodejs.yoursite.com Each refresh will update the counter. Should see something like this: Hello! We have had 18 visits! #nodejs - #programming - #javascript - #howto