উবুন্টুতে Nginx ইনস্টল ও কনফিগার করার সম্পূর্ণ গাইড [শুরুয়াতি-বন্ধুত্বপূর্ণ]

目次

১. পরিচিতি

অনেক মানুষ উবুন্টুতে Nginx ব্যবহার করতে চান, তবে আপনি যদি নতুন হন, তবে কোথা থেকে শুরু করবেন তা না জানার সম্ভাবনা থাকে। এই নিবন্ধটি নবাগতদের জন্য ধাপে ধাপে গাইড প্রদান করে, যা ইনস্টলেশন ও কনফিগারেশন থেকে উবুন্টু পরিবেশে ব্যবস্থাপনা পর্যন্ত সবকিছু কভার করে।

Nginx কী?

Nginx (উচ্চারণ “ইঞ্জিন-এক্স”) একটি উচ্চ-প্রদর্শনক্ষম HTTP সার্ভার এবং রিভার্স প্রক্সি সার্ভার। এটি তার হালকা ডিজাইন ও নমনীয়তার জন্য বিশ্বব্যাপী ব্যাপকভাবে ব্যবহৃত হয়, বিশেষ করে উচ্চ ট্র্যাফিক লোড সামলানোর ক্ষমতার জন্য।

উবুন্টুতে Nginx ব্যবহারের সুবিধা

উবুন্টু একটি জনপ্রিয় লিনাক্স ডিস্ট্রিবিউশন যা Nginx এর সঙ্গে ভালভাবে কাজ করে। এর প্যাকেজ ম্যানেজমেন্ট সিস্টেম (APT) দিয়ে Nginx ইনস্টল ও আপডেট করা সহজ, এবং এটি চমৎকার স্থায়িত্ব ও নিরাপত্তা প্রদান করে।

এই নিবন্ধটি পড়ে আপনি শিখবেন:

  • উবুন্টুতে Nginx কীভাবে ইনস্টল করবেন
  • মৌলিক কনফিগারেশন এবং ব্যবস্থাপনা প্রক্রিয়া
  • পারফরম্যান্স টিউনিং এবং সমস্যার সমাধান

এখন, চলুন শুরু করা যাক।

২. উবুন্টুতে Nginx কীভাবে ইনস্টল করবেন

উবুন্টুতে Nginx চালাতে হলে প্রথমে এটি সঠিকভাবে ইনস্টল করতে হবে। এই অংশটি ইনস্টলেশন প্রক্রিয়ার একটি স্পষ্ট, ধাপে ধাপে গাইড প্রদান করে।

প্রয়োজনীয় প্যাকেজগুলি যাচাই করা

ইনস্টলেশন শুরু করার আগে, নিম্নলিখিত কমান্ডগুলি চালিয়ে আপনার সিস্টেম আপডেটেড আছে কিনা নিশ্চিত করুন:

sudo apt update
sudo apt upgrade

Nginx ইনস্টল করা

Nginx ইনস্টল করতে, নিম্নলিখিত কমান্ডটি লিখুন:

sudo apt install nginx

এই কমান্ডটি স্বয়ংক্রিয়ভাবে উবুন্টুর APT রেপোজিটরি থেকে Nginx ডাউনলোড এবং ইনস্টল করে।

ইনস্টলেশন যাচাই করা

ইনস্টলেশন সফল হয়েছে কিনা পরীক্ষা করতে, Nginx স্ট্যাটাস চেক করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

sudo systemctl status nginx

যদি আউটপুটে “active (running)” দেখায়, তবে ইনস্টলেশন সফল হয়েছে।

ফায়ারওয়াল কনফিগার করা

উবুন্টুতে UFW (Uncomplicated Firewall) অন্তর্ভুক্ত রয়েছে, যা আপনি Nginx ট্র্যাফিক অনুমোদনের জন্য ব্যবহার করতে পারেন।

sudo ufw allow 'Nginx Full'
sudo ufw enable

এখন, Nginx পোর্ট 80 (HTTP) এবং 443 (HTTPS)-এ কাজ করার জন্য সেট আপ হয়েছে।

৩. উবুন্টুতে মৌলিক Nginx কনফিগারেশন

শুধু Nginx ইনস্টল করা যথেষ্ট নয়। পরবর্তীতে, কার্যকর ব্যবহারের জন্য এটি সঠিকভাবে কনফিগার করতে হবে।

কনফিগারেশন ফাইল এবং মৌলিক গঠন

প্রধান Nginx কনফিগারেশন ফাইলগুলি নিম্নলিখিত স্থানে অবস্থিত:

  • মূল কনফিগারেশন ফাইল: /etc/nginx/nginx.conf
  • সাইট-নির্দিষ্ট কনফিগারেশন ফাইলগুলি: /etc/nginx/sites-available/ ডিরেক্টরির ভিতরে

সাধারণত, আপনি sites-available-এ একটি ভার্চুয়াল হোস্ট কনফিগারেশন ফাইল তৈরি করেন এবং সক্রিয় করার জন্য sites-enabled-এ একটি সিম্বলিক লিংক তৈরি করেন।

ভার্চুয়াল হোস্ট সেটআপ করা

ভার্চুয়াল হোস্ট আপনাকে একক সার্ভারে একাধিক ডোমেইন বা প্রকল্প পরিচালনা করতে দেয়। নিম্নলিখিত উদাহরণটি example.com সেটআপ করে:

sudo nano /etc/nginx/sites-available/example.com

নিম্নলিখিত বিষয়বস্তু লিখুন:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

ফাইলটি সংরক্ষণ করুন এবং নিম্নলিখিত কমান্ডগুলি দিয়ে কনফিগারেশন সক্রিয় করুন:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

SSL/TLS কনফিগার করা

নিরাপদ যোগাযোগ সক্রিয় করতে, একটি SSL/TLS সার্টিফিকেট সেটআপ করুন। আপনি Let’s Encrypt ব্যবহার করে একটি ফ্রি সার্টিফিকেট পেতে পারেন।

প্রথমে, certbot ইনস্টল করুন:

sudo apt install certbot python3-certbot-nginx

এরপর, SSL সার্টিফিকেট পেতে এবং স্বয়ংক্রিয়ভাবে কনফিগার করতে নিম্নলিখিত কমান্ডটি চালান:

sudo certbot --nginx -d example.com -d www.example.com

মেয়াদ শেষ হওয়া রোধ করতে, স্বয়ংক্রিয় সার্টিফিকেট নবায়নও সেটআপ করুন।

৪. Nginx পরিচালনা ও নিয়ন্ত্রণ

Nginx ইনস্টল এবং কনফিগার করার পরে, আপনাকে শিখতে হবে কীভাবে শুরু, বন্ধ, কনফিগারেশন রিলোড এবং সমস্যার সমাধান করবেন। এই অংশটি গুরুত্বপূর্ণ ব্যবস্থাপনা কমান্ড এবং সমস্যার সমাধানের কৌশলগুলি কভার করে।

মৌলিক Nginx কমান্ড

উবুন্টুতে, আপনি systemctl কমান্ড ব্যবহার করে Nginx পরিচালনা করতে পারেন। এখানে মূল অপারেশনগুলি দেওয়া হল:

  1. Nginx শুরু করুন
sudo systemctl start nginx
  1. Nginx বন্ধ করুন
sudo systemctl stop nginx
  1. Nginx পুনরায় শুরু করুন প্রধান কনফিগারেশন পরিবর্তন করার সময় প্রয়োজন।
sudo systemctl restart nginx
  1. Nginx পুনরায় লোড করুন পুনরায় শুরু না করে কনফিগারেশন পরিবর্তন প্রয়োগ করুন।
sudo systemctl reload nginx
  1. Nginx স্থিতি পরীক্ষা করুন Nginx সঠিকভাবে চলছে কিনা যাচাই করুন।
sudo systemctl status nginx

স্বয়ংক্রিয় শুরু সক্ষম করা

সিস্টেম রিবুটের পর Nginx স্বয়ংক্রিয়ভাবে শুরু হয় তা নিশ্চিত করার জন্য:

  1. স্বয়ংক্রিয়-শুরু সক্ষম করুন
sudo systemctl enable nginx
  1. স্বয়ংক্রিয়-শুরু অক্ষম করুন (যদি প্রয়োজন হয়)
sudo systemctl disable nginx

সমস্যা সমাধানের জন্য লগ পরীক্ষা করা

যদি Nginx প্রত্যাশিতভাবে কাজ না করে, কারণ খুঁজে বের করার জন্য লগ পরীক্ষা করুন।

  1. ত্রুটি লগ দেখুন
sudo tail -f /var/log/nginx/error.log
  1. অ্যাক্সেস লগ দেখুন
sudo tail -f /var/log/nginx/access.log

৫. Nginx ফায়ারওয়াল কনফিগার করা এবং নিরাপত্তা উন্নত করা

Nginx চালানোর সময় নিরাপত্তা অত্যন্ত গুরুত্বপূর্ণ। এই বিভাগে Ubuntu-এর ফায়ারওয়াল (UFW) ব্যবহার করে পোর্ট কনফিগার করা এবং Nginx নিরাপত্তা শক্তিশালী করার ব্যাখ্যা করা হয়েছে।

UFW ব্যবহার করে পোর্ট খোলা

UFW (Uncomplicated Firewall) হলো Ubuntu-তে ডিফল্টভাবে অন্তর্ভুক্ত একটি ফায়ারওয়াল টুল। Nginx সঠিকভাবে কাজ করার জন্য, আপনাকে পোর্ট ৮০ (HTTP) এবং ৪৪৩ (HTTPS) খুলতে হবে।

  1. বর্তমান UFW স্থিতি পরীক্ষা করুন
sudo ufw status
  1. Nginx ট্রাফিক অনুমোদন করুন প্রয়োজনীয় পোর্ট খোলার জন্য নিম্নলিখিত কমান্ড চালান:
sudo ufw allow 'Nginx Full'
  1. UFW সক্ষম করুন যদি ফায়ারওয়াল অক্ষম থাকে, তা সক্ষম করুন:
sudo ufw enable

অতিরিক্ত নিরাপত্তা উন্নয়ন

  1. অপ্রয়োজনীয় HTTP পদ্ধতি অক্ষম করুন নিরাপত্তা উন্নত করার জন্য, Nginx কনফিগারেশন ফাইলে নিম্নলিখিত যোগ করুন:
if ($request_method !~ ^(GET|POST|HEAD)$) {
    return 444;
}
  1. ডিরেক্টরি তালিকাভুক্তি অক্ষম করুন ডিরেক্টরি সামগ্রীকে সর্বজনীনভাবে অ্যাক্সেসযোগ্য হওয়া থেকে রোধ করার জন্য যোগ করুন:
autoindex off;
  1. SSL/TLS শক্তিশালী করুন আপনার SSL কনফিগারেশনে শক্তিশালী এনক্রিপশন সেটিংস ব্যবহার করুন:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;

৬. Nginx পারফরম্যান্স টিউনিং এবং সমস্যা সমাধান

Nginx তার উচ্চ পারফরম্যান্সের জন্য ব্যাপকভাবে পরিচিত, কিন্তু সঠিক টিউনিং তার দক্ষতা আরও উন্নত করতে পারে। এই বিভাগে অপ্টিমাইজেশন কৌশল এবং সাধারণ সমস্যা সমাধানের সমাধান কভার করা হয়েছে।

পারফরম্যান্স টিউনিং

১. Worker প্রক্রিয়া কনফিগার করা

Nginx একটি মাল্টি-প্রসেস আর্কিটেকচার অনুসরণ করে। উপযুক্ত সংখ্যক worker প্রক্রিয়া সেট করা পারফরম্যান্স অপ্টিমাইজ করে।

কনফিগারেশন ফাইল /etc/nginx/nginx.conf সম্পাদনা করুন এবং সেট করুন:

worker_processes auto;

“auto” সেটিং CPU কোরের উপর ভিত্তি করে worker প্রক্রিয়ার সংখ্যা স্বয়ংক্রিয়ভাবে সামঞ্জস্য করে।

২. Worker সংযোগ বাড়ান

ডিফল্টভাবে, প্রত্যেক worker প্রক্রিয়ার সীমিত সংখ্যক সংযোগ থাকে। এই মান বাড়ানো উচ্চ ট্রাফিক লোড হ্যান্ডলিং উন্নত করে।

কনফিগারেশন ফাইলে নিম্নলিখিত লাইন যোগ করুন বা পরিবর্তন করুন:

worker_connections 1024;

৩. HTTP/2 সক্ষম করুন

HTTP/2 সক্ষম করা যোগাযোগ দক্ষতা উন্নত করে এবং ওয়েবসাইট লোডিং গতি বাড়ায়।

/etc/nginx/sites-available/example.com ফাইল পরিবর্তন করুন এবং listen ডিরেক্টিভ নিম্নরূপ পরিবর্তন করুন:

listen 443 ssl http2;

তারপর Nginx পুনরায় লোড করুন:

sudo systemctl reload nginx

৪. কনটেন্ট কম্প্রেশন সক্ষম করুন

ফাইলগুলি পাঠানোর আগে কম্প্রেস করা ব্যান্ডউইথ ব্যবহার কমায় এবং লোডিং সময় উন্নত করে।

নিম্নলিখিত সেটিংস যোগ করুন বা সক্ষম করুন:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

৫. ক্যাশিং কনফিগার করুন

ক্যাশিং সেটআপ স্ট্যাটিক রিসোর্সের জন্য পুনরাবৃত্তি অনুরোধ কমায়।

নিম্নলিখিত কনফিগারেশন যোগ করুন:

location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
    expires 30d;
    access_log off;
}

সাধারণ সমস্যা সমাধান

১. উচ্চ লোডের অধীনে ধীর অনুরোধ হ্যান্ডলিং

  • কারণ: অপর্যাপ্ত কর্মী প্রক্রিয়া বা সংযোগ সীমা।
  • সমাধান: কর্মী প্রক্রিয়া এবং সংযোগগুলি সামঞ্জস্য করুন, অথবা লোড ব্যালেন্সার ব্যবহারের কথা বিবেচনা করুন।

২. “403 Forbidden” ত্রুটি

  • কারণ: কনফিগারেশন ফাইলে ভুল root নির্দেশনা বা ভুল ফাইল অনুমতি।
  • সমাধান: root নির্দেশনা পরীক্ষা করুন এবং ফাইল অনুমতিগুলি আপডেট করুন:
sudo chmod -R 755 /var/www/example.com/html
sudo chown -R www-data:www-data /var/www/example.com/html

৩. সার্ভার টাইমআউট সমস্যা

  • কারণ: দীর্ঘ অনুরোধ প্রক্রিয়াকরণ সময়।
  • সমাধান: টাইমআউট সেটিংস সামঞ্জস্য করুন:
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_send_timeout 300;

৪. Nginx পুনরায় চালু ত্রুটি

  • কারণ: কনফিগারেশন ফাইলের ত্রুটি।
  • সমাধান: পুনরায় চালু করার আগে কনফিগারেশন পরীক্ষা করুন:
sudo nginx -t

৭. সারাংশ এবং পরবর্তী ধাপ

এই গাইডে, আমরা Ubuntu-তে Nginx ইনস্টল, কনফিগার এবং পরিচালনা করার পদ্ধতি আলোচনা করেছি। চলুন আমরা যা শিখেছি তা পুনরায় পর্যালোচনা করি এবং পরবর্তী ধাপগুলি অন্বেষণ করি।

মূল পয়েন্টগুলোর সারাংশ

১. Ubuntu-তে Nginx ইনস্টল করা

  • প্রয়োজনীয় প্যাকেজগুলি প্রস্তুত করা এবং APT ব্যবহার করে Nginx ইনস্টল করা।
  • Nginx ট্র্যাফিক অনুমোদনের জন্য ফায়ারওয়াল কনফিগার করা।

২. মৌলিক কনফিগারেশন

  • Nginx-এর কনফিগারেশন ফাইলের গঠন বোঝা এবং ভার্চুয়াল হোস্ট ও SSL/TLS সেট আপ করা।

৩. Nginx পরিচালনা

  • Nginx শুরু, বন্ধ এবং রিলোড করার জন্য প্রয়োজনীয় কমান্ড শিখা।
  • সমস্যার সমাধানের জন্য লগ পরীক্ষা করা।

৪. নিরাপত্তা উন্নয়ন

  • UFW কনফিগার করা এবং অতিরিক্ত নিরাপত্তা সেটিংস প্রয়োগ করা।

৫. পারফরম্যান্স টিউনিং এবং সমস্যার সমাধান

  • কর্মী প্রক্রিয়াগুলি অপ্টিমাইজ করা, HTTP/2 সক্রিয় করা এবং ক্যাশিং সেট আপ করা।
  • সাধারণ Nginx সমস্যাগুলি সমাধান করা।

পরবর্তী ধাপ

এখন আপনি Ubuntu-তে Nginx-এর মৌলিক বিষয়গুলি জানেন, নিম্নলিখিত পরবর্তী ধাপগুলি বিবেচনা করুন:

  • লোড ব্যালেন্সিং এবং রিভার্স প্রক্সি মতো উন্নত কনফিগারেশন শিখুন।
  • WAF এবং অতিরিক্ত Nginx নিরাপত্তা মডিউল দিয়ে নিরাপত্তা বাড়ান।
  • Ansible বা Docker ব্যবহার করে ডিপ্লয়মেন্ট স্বয়ংক্রিয় করুন।
  • Prometheus এবং Grafana মতো টুল দিয়ে পারফরম্যান্স মনিটর করুন।

এই ধারণাগুলি প্রয়োগ করে, আপনি Ubuntu-তে Nginx দিয়ে একটি উচ্চ-প্রদর্শনশীল ওয়েব সার্ভার কার্যকরভাবে চালাতে এবং পরিচালনা করতে পারবেন।