Node.js সিম্পল ওয়েভ সার্ভার


মাত্র ৫ মিনিটে Node.js এবং Bootstrap ব্যবহার করে তৈরি করে ফেলুন একটি সিম্পল সার্ভার।

আজকে তৈরি করবো একটি খুবই সিম্পল নোড জেএস ওয়েব সার্ভার। তার আগে চলুন আমাদের কম্পিউটারে Node.js ইন্সটল করে নেই। নিচের লিংকটি ফলো করে আপনি আপনার অপারেটিং সিস্টেম অনুযায়ী Node.js ডাউনলোড এবং ইন্সটল করে নিতে পারবেন।

Installing Node.js via package manager | Node.js
The packages on this page are maintained and supported by their respective packagers, not the Node.js core team. Please…nodejs.org

ইন্সটল হয়ে গেলে Windows OS ব্যবহারকারীরা নিচের লিঙ্ক থেকে যেয়ে Git — Bash ডাউনলোড করে নিবো — 

Git – Downloads
Various Git logos in PNG (bitmap) and EPS (vector) formats are available for use in online and print projects.git-scm.com

MacOS এবং Linux ব্যবহারকারীরা নিজেদের টার্মিনাল ব্যবহার করাটাই ভালো। অথবা চাইলে Git — Bash ও ইন্সটল করে ব্যবহার করতে পারেন।

Git — Bash ইন্সটল হয়ে গেলে সেটা ওপেন করলে ঠিক এরকম একটা টার্মিনাল উইন্ডো দেখাবে — 

টার্মিনালে নিচের ২ টা কমান্ড টাইপ করে এন্টার হিট করুন — 

$ node -v

এবং

$ npm -v

এই দুইটা কমান্ড আপনাকে যথাক্রমে কম্পিউটারে ইন্সটল করা Node.js এবং npm এর ভার্শন দেখাবে।


এবার আপনার কম্পিউটারের যেকোনো ডিরেক্টরিতে simple-Serverনামক একটি ফোল্ডার তৈরি করুন। তৈরি হয় গেলে ফোল্ডারটি সিলেক্ট করে মাউসের রাইট বাটন ক্লিক করে সেখান থেকে Git Bash Hereসিলেক্ট করুন।

নিচের ছবিটার মতো একটি টার্মিনাল ওপেন হবে — 

নোড জেএস এর প্রজেক্ট তৈরি করার জন্য আমাদের এখন একটি package.jsonফাইল লাগবে, এটা বানানোর জন্য টার্মিনালে টাইপ করুন — 

$ npm init

এন্টার হিট করার পর আমাদের package.jsonফাইলটি তৈরি হয়ে যাবে, তৈরি হবার সময় আপনাকে কিছু প্রশ্ন করবে, চাইলে আপনি প্রশ্ন গুলোর উত্তর দিতে পারেন অথবা এন্টার চেপে চেপে স্কিপ করে যেতে পারেন। 

এখন প্রজেক্ট ফোল্ডারে server.jsনামক একটি জাভাস্ক্রিপ্ট ফাইল তৈরি করুন। তারপর এটিকে যেকোনো কোড এডিটর দিয়ে ওপেন করুন। এই ফাইলটিই আমাদের আসল এবং একমাত্র সার্ভার হিসেবে কাজ করবে। তো সার্ভার হিসেবে কাজ করানো জন্য প্রথমে কিছু Node Module কল করতে হবে। সেগুলো হচ্ছে http, url, path এবং fs

Node.js এ আমরা require(‘ ’) দিয়ে Node Module কল করি।

তারপর আমাদের সার্ভারটি কি কি ফাইল সাপোর্ট করবে সেটা ডিক্লায়ার করতে হবে। তার জন্য mimeTypes নামক একটি const অ্যারে তৈরি করবো এবং সেটার প্যারেন্থেসিস এর ভিতরে ফাইল টাইপ গুলো লিখবো।

const http = require('http');
const url = require('url');
const path = require('path');
const fs = require('fs');

const mimeTypes = {
    "html": "text/html",
    "jpeg": "image/jpeg",
    "jpg": "image/jpg",
    "png": "image/png",
    "js": "text/javascript",
    "css": "text/css"
};

এবার আমরা createServer ফাংশন ম্যাথোড ব্যবহার করে একটি সার্ভার তৈরি করবো যেটা Request এবং Response রিসিব করবে।

http.createServer(function(req, res){
});

createServer ফাংশনের ভিতরে আমরা এখন parse মড্যুল ব্যবহার করে path name সহ url request করবো এবং সেটাকে স্টোর করবো uri নামক ভ্যারিয়েবলে। এরপর process.cwd() ফাংশন ব্যবহার করে fileName নামক আরেকটি ভ্যারিয়েবল তৈরি করবো যেখানে আমরা uri ভ্যারিয়েবলকে unescape এর ভিতর দিয়ে কল করবো। তারপর uri কে কনসোল লগে দেখাবো এবং stats নামক আরেকটি ভ্যারিয়েবল তৈরি করবো।

var uri = uri.parse(req.url).pathname;
var fileName = path.join(process.cwd()), unescape(uri));
console.log('Loading' + uri);
var stats;

এখন আমাদের সার্ভারে অনেক অপ্রত্যাশিত রিকুয়েস্ট আসতে পারে। যেমন কেও page.html খুজলো কিন্তু সার্ভারে সেটা নেই, তখন এই রিকুয়েস্টটা সার্ভার কীভাবে হ্যান্ডেল করবে? এটার জন্য আমরা Try and Catch ম্যাথোড ব্যবহার করবো, যেটা চেক করবে ফাইলটি আমাদের সার্ভারে আছে কিনা, থাকলে সে রিকুয়েস্ট এক্সেপ্ট করবে আর না থাকলে 404 Not Found এরর দেখাবে।

try {        
stats = fs.lstatSync(fileName);
} catch(e) {
res.writeHead(404, {'Content-type': 'text/plain'});
res.write('404 Not Found\n');
res.end();
return;
}

তারপর আমরা if — else if — else ম্যাথোড ব্যবহার করে যথাক্রমে চেক করবো সার্ভারের রিক্যুয়েস্টটা file এর নাকি directory এর। file এর হলে সার্ভারটি mimeTypes অ্যারেকে কল করবে। directory এর হলে index.html কে কল করবে এবং কোনোটাই না হলে 500 Internal Error দেখাবে। 

if(stats.isFile()) {
    var mimeType = mimeTypes[path.extname(fileName).split(".").reverse()[0]];
    res.writeHead(200, {'Content-type': mimeType});

    var fileStream = fs.createReadStream(fileName);
    fileStream.pipe(res);
} else if (stats.isDirectory()) {
    res.writeHead(302, {
        'Location': 'index.html'
    });
    res.end();
} else {
    res.writeHead(500, {'Content-type': 'text/plain'});
    res.write('500 Internal Error\n');
}

আমাদের সার্ভার তৈরি করা শেষ কিন্তু এখন এটাকে আমাদের লোকালহোস্টে হোস্ট করতে হবে। তার জন্য createServer ফাংশনের শেষে আমরা নিচের কোডটি লিখবো — 

.listen(3000);

সবগুলো কোড একসাথে করলে নিচের ফাইলটার মতোন হবে — 

const http = require('http');
const url = require('url');
const path = require('path');
const fs = require('fs');

const mimeTypes = {
    "html": "text/html",
    "jpeg": "image/jpeg",
    "jpg": "image/jpg",
    "png": "image/png",
    "js": "text/javascript",
    "css": "text/css"
};

http.createServer(function(req, res){
    var uri = url.parse(req.url).pathname;
    var fileName = path.join(process.cwd(), unescape(uri));
    console.log('Loading ' + uri);

    var stats; 

    try {
        stats = fs.lstatSync(fileName);
    } catch (e) {
        res.writeHead(404, {'Content-type': 'text/plain'});
        res.write('404 Not Found\n');
        res.end();
        return;
    }

    if(stats.isFile()) {
        var mimeType = mimeTypes[path.extname(fileName).split(".").reverse()[0]];
        res.writeHead(200, {'Content-type': mimeType});

        var fileStream = fs.createReadStream(fileName);
        fileStream.pipe(res);
    } else if (stats.isDirectory()) {
        res.writeHead(302, {
            'Location': 'index.html'
        });
        res.end();
    } else {
        res.writeHead(500, {'Content-type': 'text/plain'});
        res.write('500 Internal Error\n');
    }
}).listen(3000);

এবার Git Bash টার্মিনালে যেয়ে নিচের কমান্ডটি লিখে ফেলুন — 

npm start

অথবা

node server.js

ফলাফলে টার্মিনাল আপনাকে দেখাবে যে সার্ভারটি শুরু হয়েছে। আপনার ব্রাউসার থেকে localhost:3000লোকেশনে গেলে দেখবেন যে মাত্র বানানো সার্ভারটি রান হচ্ছে।

এবার চলুন একটি সিম্পল ওয়েবসাইট যুক্ত করি আমাদের সার্ভারে। এর জন্য প্রজেক্ট ফোল্ডারে index.html নামক একটি ফাইল তৈরি করুন। আমরা বুটস্ট্রাপের স্টার্টার টেমপ্লেট ব্যবহার করে এই ওয়েভসাইটটি বানাবো। টেমপ্লেটটি ডাউনলোড করতে পারবেন নিচের লিংক থেকে — 

Starter Template for Bootstrap
Edit descriptiongetbootstrap.com

অথবা চাইলে নিচের html কোডটি কপি পেস্ট করে নিতে পারেন — 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Welcome Page</title>
    <link rel="stylesheet" href="/css/bootstrap.css">
</head>
<body>
    <nav class="navbar navbar-expand-md navbar-dark bg-dark">
        <a class="navbar-brand" href="#">Simple Server</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault"
            aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>
    
        <div class="collapse navbar-collapse" id="navbarsExampleDefault">
            <ul class="navbar-nav mr-auto">
                <li class="nav-item active">
                    <a class="nav-link" href="index.html">Home <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="about.html">About</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="service.html">Service</a>
                </li>
            </ul>
        </div>
    </nav>
    
    <main role="main" class="container">
    
        <div class="starter-template">
            <h1>A Simple Welcome Page</h1>
            <p class="lead">First nodejs website.<br> All you get is this text and a mostly
                barebones HTML document.</p>
        </div>
    
    </main><!-- /.container -->
</body>
</html>

এখন নিচের লিঙ্ক থেকে বুটস্ট্র্যাপ এর Compiled CSS and JS প্যাকেজটি ডাউনলোড করে নিতে হবে — 

Download
Download Bootstrap to get the compiled CSS and JavaScript, source code, or include it with your favorite package…getbootstrap.com

ডাউনলোড হয়ে গেলে Winrar দিয়ে ফাইলটিকে unzip করে css ফোল্ডার থেকে bootstrap.css ফাইলটিকে কপি করে আপনার প্রজেক্ট ফোল্ডারে cssনামক আরেকটি ফোল্ডার তৈরি করে সেটাতে পেস্ট করে দিন।

এবার Git Bash টার্মিনালে যেয়ে CTRL + Cচেপে বর্তমানে চলমান আমাদের নোড সার্ভারটাকে বন্ধ করতে হবে। তারপর আবার 

npm start

অথবা

node server.js

কমান্ড দিয়ে সার্ভারটি চালু করতে হবে। এখন ব্রাউসারের localhost:3000লোকেশনে গেলে দেখবেন আমাদের তৈরি করা ওয়েবসাইটটি সার্ভারে রান হচ্ছে। 


আমার ব্যাক্তিগত ব্লগ — 

বাংলা ভার্শন —  https://with.dibakar.me/

ইংলিশ ভার্শন —  https://with.dibakar.me/en/

আমাকে পাবেন — 

ফেসবুকে — https://www.facebook.com/dipu.dibakar

টুইটারে —  https://twitter.com/iamdibakardipu

ইনস্টাগ্রামে —  https://www.instagram.com/dibakardipu/

গিটহাবে — https://github.com/dibakarsutradhar

লিঙ্কডইনে —  https://linkedin.com/in/dibakardipu/

ধন্যবাদ,

দিবাকর সূত্রধর।

Posts created 18

মন্তব্য করুন

আপনার ই-মেইল এ্যাড্রেস প্রকাশিত হবে না। * চিহ্নিত বিষয়গুলো আবশ্যক।

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top
Scroll Up