কীভাবে Apache ব্যবহার করে নিরাপদ ও উচ্চ-প্রদর্শনক্ষম Ubuntu ওয়েব সার্ভার তৈরি করবেন (সম্পূর্ণ গাইড)

目次

১. পরিচিতি

উবুন্টু ওয়েব সার্ভার কী?

একটি ওয়েব সার্ভার হল একটি সিস্টেম যা ইন্টারনেটের মাধ্যমে ওয়েবসাইট সরবরাহ করে। জনপ্রিয় ওয়েব সার্ভার সফটওয়্যারের মধ্যে Apache, Nginx, এবং LiteSpeed অন্তর্ভুক্ত, তবে উবুন্টুতে সবচেয়ে বেশি ব্যবহৃত বিকল্প হল Apache
উবুন্টু হল হালকা, স্থিতিশীল, এবং ওপেন-সোর্স; যা ব্যক্তিগত ও কোম্পানিগুলোর মধ্যে জনপ্রিয়। এটি বিশেষভাবে LAMP পরিবেশ (Linux, Apache, MySQL/MariaDB, PHP) চালানোর জন্য উপযুক্ত, যা অনেক ওয়েবসাইট ও অ্যাপ্লিকেশনকে শক্তি প্রদান করে।

এই প্রবন্ধটি কার জন্য

এই গাইডটি প্রথমবার ওয়েব সার্ভার তৈরি করা শুরুকারীদের জন্য তৈরি করা হয়েছে। এটি উবুন্টুতে ওয়েব সার্ভার চালু করা, Apache ইনস্টল করা, ভার্চুয়াল হোস্ট এবং SSL সার্টিফিকেট কনফিগার করা, এবং অপ্টিমাইজেশন ও নিরাপত্তা উন্নয়ন কীভাবে করা যায় তা ব্যাখ্যা করে।

আপনি কী শিখবেন

  • উবুন্টুতে ওয়েব সার্ভার কীভাবে তৈরি করবেন (Apache ইনস্টল ও কনফিগার করা)
  • ভার্চুয়াল হোস্ট সেট আপ করা এবং একাধিক ওয়েবসাইট পরিচালনা করা
  • Let’s Encrypt দিয়ে ফ্রি SSL ইনস্টল করা
  • নিরাপত্তা শক্তিকরণ এবং পারফরম্যান্স অপ্টিমাইজেশন প্রয়োগ করা
  • সাধারণ ট্রাবলশুটিং ধাপ এবং সমাধান

২. উবুন্টু ইনস্টল করা এবং প্রাথমিক সেটআপ সম্পাদন

প্রয়োজনীয় সিস্টেম স্পেসিফিকেশন

উবুন্টুকে ওয়েব সার্ভার হিসেবে চালানোর জন্য নিম্নলিখিত ন্যূনতম স্পেসিফিকেশন সুপারিশ করা হয়:

ItemMinimum RequirementsRecommended Requirements
OSUbuntu 22.04 LTSUbuntu 22.04 LTS
CPU1GHz or higher2GHz or higher
Memory512MB2GB or higher
Storage10GB or more20GB or more
NetworkInternet connectionHigh-speed connection recommended

উবুন্টু ডাউনলোড এবং ইনস্টল করা

উবুন্টু অফিসিয়াল ওয়েবসাইট (https://ubuntu.com/download/server) থেকে ডাউনলোড করা যায়। ISO ফাইলটি ডাউনলোড করুন এবং তা VirtualBox বা VMware এর মতো ভার্চুয়াল মেশিনে, অথবা ডেডিকেটেড সার্ভার বা VPS এ ইনস্টল করুন।

ইনস্টলেশন ধাপসমূহ:

  1. ইনস্টলেশন মিডিয়া তৈরি করুন
  • USB ড্রাইভ (Rufus এর মতো টুল ব্যবহার করে)
  • ভার্চুয়াল মেশিনে ISO ফাইল মাউন্ট করুন
  1. ইনস্টলেশন উইজার্ড অনুসরণ করুন
  • আপনার পছন্দের ভাষা নির্বাচন করুন
  • নেটওয়ার্ক সংযোগ যাচাই করুন
  • ইউজারনেম এবং পাসওয়ার্ড সেট করুন
  • SSH সার্ভার ইনস্টল করুন (ঐচ্ছিক—আপনি পরে ইনস্টল করতে পারেন)
  1. ইনস্টলেশন সম্পন্ন হলে রিবুট করুন
  2. লগইন করুন এবং প্রাথমিক কনফিগারেশন শুরু করুন

মৌলিক প্রাথমিক সেটআপ

ইনস্টলেশনের পরে, নিম্নলিখিত প্রাথমিক সেটআপ ধাপগুলো সম্পন্ন করুন।

  1. সকল প্যাকেজ আপডেট করুন
    sudo apt update && sudo apt upgrade -y
    

→ নিরাপত্তা প্যাচ প্রয়োগ করে এবং সফটওয়্যার প্যাকেজ আপডেট করে।

  1. টাইমজোন সেট করুন
    sudo timedatectl set-timezone Asia/Tokyo
    

→ সিস্টেমের সময়কে জাপান স্ট্যান্ডার্ড টাইম (JST) এ সেট করে।

  1. ফায়ারওয়াল সক্রিয় করুন
    sudo ufw enable
    

→ অননুমোদিত প্রবেশ থেকে সিস্টেমকে রক্ষা করার জন্য ফায়ারওয়াল সক্রিয় করে।

  1. SSH কনফিগার করুন (রিমোট ম্যানেজমেন্টের জন্য)
  • SSH সক্রিয় আছে কিনা পরীক্ষা করুন sudo systemctl status ssh
  • যদি নিষ্ক্রিয় থাকে, সক্রিয় করুন sudo systemctl enable --now ssh

এই ধাপগুলো সম্পন্ন করার পরে, আপনার উবুন্টু সার্ভার সম্পূর্ণ কার্যকরী ওয়েব সার্ভার হিসেবে সেট আপ করার জন্য প্রস্তুত।

৩. Apache ইনস্টল এবং কনফিগার করা

Apache কী?

Apache (Apache HTTP Server) হল একটি ওপেন-সোর্স ওয়েব সার্ভার, যা তার স্থিতিশীলতা, সম্প্রসারণযোগ্যতা এবং শক্তিশালী নিরাপত্তা বৈশিষ্ট্যের জন্য পরিচিত। বিশ্বব্যাপী প্রায় ৩০% সার্ভার Apache ব্যবহার করে

মূল বৈশিষ্ট্যসমূহ:

  • ফ্রি এবং ওপেন-সোর্স
  • মডুলার আর্কিটেকচার সহজ এক্সটেনশনের জন্য
  • SSL/TLS সাপোর্ট HTTPS কনফিগারেশনের জন্য
  • ভার্চুয়াল হোস্ট একাধিক ওয়েবসাইট হোস্ট করার জন্য

Apache ইনস্টল করা

উবুন্টুতে, apt প্যাকেজ ম্যানেজার ব্যবহার করে সহজে Apache ইনস্টল করা যায়।

Apache ইনস্টল করুন

Apache ইনস্টল করতে নিম্নলিখিত কমান্ডগুলো চালান:

sudo apt update
sudo apt install apache2 -y

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

ইনস্টলেশনের পরে, Apache সংস্করণ পরীক্ষা করুন:

apache2 -v

উদাহরণ আউটপুট:

Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-07-01T12:34:56

যদি সংস্করণ তথ্য প্রদর্শিত হয়, তবে Apache সঠিকভাবে ইনস্টল হয়েছে।

Apache শুরু, বন্ধ এবং পুনরায় চালু করা

Apache systemctl কমান্ড ব্যবহার করে পরিচালিত হয়।

Apache শুরু করুন

sudo systemctl start apache2

এখন Apache ওয়েব রিকোয়েস্ট গ্রহণ শুরু করবে।

স্বয়ংক্রিয় স্টার্টআপ সক্রিয় করুন

sudo systemctl enable apache2

Apache অবস্থা পরীক্ষা করুন

Apache চালু আছে কিনা যাচাই করার জন্য এই কমান্ডটি ব্যবহার করুন:

sudo systemctl status apache2

উদাহরণ আউটপুট:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since ...

Apache পুনরায় চালু বা বন্ধ করুন

কনফিগারেশন সেটিংস পরিবর্তনের পরে Apache পুনরায় চালু করুন:

sudo systemctl restart apache2

অস্থায়ীভাবে Apache বন্ধ করতে:

sudo systemctl stop apache2

Apache অপারেশন যাচাই করা

Apache সঠিকভাবে চলছে কিনা নিশ্চিত করতে, সার্ভারের IP ঠিকানায় প্রবেশ করুন

১. আপনার সার্ভারের IP ঠিকানা পরীক্ষা করুন

hostname -I

অথবা বাহ্যিক IP পরীক্ষা করুন:

curl ifconfig.me

২. ওয়েব ব্রাউজারে যাচাই করুন

আপনার ব্রাউজারে নিম্নলিখিতটি লিখুন:

http://<your-server-ip>/

স্থানীয় সেটআপের জন্য:

http://localhost/

আপনি Apache-এর ডিফল্ট পৃষ্ঠা (/var/www/html/index.html) দেখতে পাবেন।

উদাহরণ ডিফল্ট পৃষ্ঠা:

Apache2 Ubuntu Default Page
It works!

যদি এই বার্তাটি দেখা যায়, তবে Apache সঠিকভাবে কাজ করছে।

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

Ubuntu ফায়ারওয়াল নিয়ম পরিচালনার জন্য UFW (Uncomplicated Firewall) ব্যবহার করে।
Apache ইনস্টল করার পরে, HTTP (পোর্ট 80) এবং HTTPS (পোর্ট 443) এর বাহ্যিক অ্যাক্সেস এখনও ব্লক থাকতে পারে।

ফায়ারওয়ালের মাধ্যমে Apache অনুমোদন করুন

sudo ufw allow 'Apache'

HTTPS-ও অনুমোদন করতে:

sudo ufw allow 'Apache Full'

ফায়ারওয়াল স্ট্যাটাস পরীক্ষা করুন

sudo ufw status

উদাহরণ আউটপুট:

Status: active

To                         Action      From
--                         ------      ----
Apache                     ALLOW       Anywhere
Apache (v6)                ALLOW       Anywhere (v6)

এটি দেখা গেলে, Apache ট্র্যাফিক ফায়ারওয়ালের মাধ্যমে অনুমোদিত হয়েছে।

সারাংশ

এখন পর্যন্ত, আপনি Ubuntu-তে Apache ইনস্টল করেছেন এবং প্রয়োজনীয় সেটআপ ধাপগুলি সম্পন্ন করেছেন
কভার করা মূল পয়েন্টগুলো:

  • কীভাবে Apache ইনস্টল করবেন
  • কীভাবে Apache চালু এবং সক্রিয় করবেন
  • ব্রাউজারে Apache অপারেশন কীভাবে যাচাই করবেন
  • UFW ফায়ারওয়াল নিয়ম কীভাবে কনফিগার করবেন
  • Apache-এর মৌলিক কনফিগারেশন ফাইলগুলোর সংক্ষিপ্ত বিবরণ

৪. ভার্চুয়াল হোস্ট কনফিগার করা (একাধিক সাইট পরিচালনা করা)

ভার্চুয়াল হোস্ট কী?

ভার্চুয়াল হোস্ট আপনাকে একটি Apache সার্ভারে একাধিক ডোমেইন (বা সাবডোমেইন) হোস্ট করতে সক্ষম করে।
উদাহরণস্বরূপ, একটি সার্ভার example.com এবং test.com উভয়ই হোস্ট করতে পারে।

দুটি ধরনের ভার্চুয়াল হোস্ট রয়েছে:

  1. নাম-ভিত্তিক ভার্চুয়াল হোস্ট
  • একাধিক সাইট একই IP ঠিকানা শেয়ার করে
  • সবচেয়ে সাধারণ পদ্ধতি
  1. IP-ভিত্তিক ভার্চুয়াল হোস্ট
  • প্রতিটি সাইট একটি ভিন্ন IP ঠিকানা ব্যবহার করে
  • একটি সার্ভারে একাধিক নেটওয়ার্ক ইন্টারফেস প্রয়োজন

বেশিরভাগ ক্ষেত্রে, নাম-ভিত্তিক ভার্চুয়াল হোস্ট ব্যবহার করা হয়।

ভার্চুয়াল হোস্ট কনফিগার করার ধাপগুলো

১. প্রয়োজনীয় ডিরেক্টরি তৈরি করুন

প্রতিটি ওয়েবসাইটের জন্য একটি আলাদা ডিরেক্টরি তৈরি করুন:

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

২. ডিরেক্টরি মালিকানা পরিবর্তন করুন

www-data-কে মালিক হিসেবে সেট করে Apache ফাইলগুলো পড়তে পারে তা নিশ্চিত করুন:

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/test.com/public_html

৩. প্লেসহোল্ডার HTML ফাইল তৈরি করুন

পরীক্ষার জন্য একটি মৌলিক index.html ফাইল তৈরি করুন:

echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Welcome to test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html

৪. ভার্চুয়াল হোস্ট কনফিগারেশন ফাইল তৈরি করুন

ভার্চুয়াল হোস্ট কনফিগারেশন ফাইলগুলি /etc/apache2/sites-available/ ডিরেক্টরিতে সংরক্ষিত হয়।

example.com এর জন্য ভার্চুয়াল হোস্ট কনফিগারেশন

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

sudo nano /etc/apache2/sites-available/example.com.conf

কনফিগারেশন ফাইলের বিষয়বস্তু:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

test.com এর জন্য ভার্চুয়াল হোস্ট কনফিগারেশন

sudo nano /etc/apache2/sites-available/test.com.conf

নিম্নলিখিত বিষয়বস্তু যোগ করুন:

<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html

    <Directory /var/www/test.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
    CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>

5. ভার্চুয়াল হোস্ট সক্রিয় করুন

কনফিগারেশন ফাইলগুলি তৈরি করার পরে, a2ensite ব্যবহার করে ভার্চুয়াল হোস্ট সক্রিয় করুন:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Apache কনফিগারেশন পরীক্ষা করুন

সিনট্যাক্স ত্রুটি পরীক্ষা করুন:

sudo apachectl configtest

উদাহরণ আউটপুট:

Syntax OK

কোনো ত্রুটি না থাকলে, Apache পুনরায় চালু করুন:

sudo systemctl restart apache2

6. লোকালি যাচাই করুন (hosts ফাইল সম্পাদনা করুন)

লোকালি ভার্চুয়াল হোস্ট পরীক্ষা করতে, আপনার PC এর hosts ফাইল সম্পাদনা করুন।

sudo nano /etc/hosts

নিম্নলিখিত লাইনগুলি যোগ করুন:

127.0.0.1 example.com
127.0.0.1 test.com

ফাইলটি সংরক্ষণ করুন, তারপর একটি ব্রাউজার খুলে ভিজিট করুন:

http://example.com/

আপনি দেখতে পাবেন “Welcome to example.com”

অনুরূপভাবে, ভিজিট করলে:

http://test.com/

দেখাবে “Welcome to test.com”

7. ভার্চুয়াল হোস্ট ট্রাবলশুটিং

যদি ভার্চুয়াল হোস্ট সঠিকভাবে কাজ না করে, নিম্নলিখিত বিষয়গুলি পরীক্ষা করুন:

1. Apache ত্রুটি লগ পরীক্ষা করুন

sudo tail -f /var/log/apache2/error.log

2. কনফিগারেশন ফাইলগুলি সক্রিয় আছে কিনা নিশ্চিত করুন

ls /etc/apache2/sites-enabled/

যদি সঠিক .conf ফাইলগুলি তালিকাভুক্ত থাকে, তবে ভার্চুয়াল হোস্ট সক্রিয়।

3. Apache পোর্ট সেটিংস পরীক্ষা করুন

নিশ্চিত করুন যে পোর্ট 80 (HTTP) কনফিগার করা আছে:

sudo nano /etc/apache2/ports.conf

নিম্নলিখিত লাইনটি আছে কিনা নিশ্চিত করুন:

Listen 80

সারাংশ

এই অংশে ব্যাখ্যা করা হয়েছে কিভাবে Ubuntu-তে Apache-এ ভার্চুয়াল হোস্ট কনফিগার করতে হয়
মূল বিষয়গুলো:

  • ভার্চুয়াল হোস্টের ধারণা এবং উদ্দেশ্য
  • প্রতিটি সাইটের জন্য ডিরেক্টরি তৈরি করা
  • ভার্চুয়াল হোস্ট কনফিগারেশন ফাইল তৈরি ও সক্রিয় করা
  • hosts ফাইল ব্যবহার করে লোকাল টেস্টিং পদ্ধতি
  • সাধারণ সমস্যার ট্রাবলশুটিং

5. SSL/TLS পরিচিতি (HTTPS সক্রিয় করা)

SSL/TLS কী?

SSL (Secure Sockets Layer) এবং TLS (Transport Layer Security) হল এনক্রিপশন প্রযুক্তি, যা ইন্টারনেটে নিরাপদ যোগাযোগ নিশ্চিত করে।

SSL/TLS সক্রিয় করার সুবিধা

যোগাযোগ এনক্রিপ্ট করে (ডেটা আটকানো বা পরিবর্তনের ঝুঁকি কমায়)
গুগল SEO র‍্যাঙ্কিং উন্নত করে (HTTPS সাইটগুলোকে অগ্রাধিকার দেয়)
ব্রাউজার সিকিউরিটি ওয়ার্নিং প্রতিরোধ করে (HTTP সাইটে “Not Secure” দেখায়)
লগইন ক্রেডেনশিয়াল এবং অনলাইন লেনদেন রক্ষা করে

আজকাল, TLS (TLS 1.2 / 1.3) সুপারিশ করা হয়, এবং পুরনো SSL সংস্করণ (SSL 3.0 এবং তার পূর্বের) অব্যবহৃত।

Let’s Encrypt দিয়ে ফ্রি SSL সার্টিফিকেট পাওয়া

Let’s Encrypt হল একটি সার্টিফিকেশন অথরিটি (CA), যা ফ্রি SSL সার্টিফিকেট প্রদান করে।
certbot ব্যবহার করে, আপনি সহজে একটি সার্টিফিকেট ইস্যু করে Apache-এ কনফিগার করতে পারেন।

Let’s Encrypt ক্লায়েন্ট (Certbot) ইনস্টল করুন

certbot ইনস্টল করুন, অফিসিয়াল Let’s Encrypt ক্লায়েন্ট:

sudo apt update
sudo apt install certbot python3-certbot-apache -y

Apache SSL কনফিগারেশন স্বয়ংক্রিয় করুন

আপনি নিম্নলিখিত কমান্ড ব্যবহার করে Apache স্বয়ংক্রিয়ভাবে কনফিগার করতে পারেন:

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

এই কমান্ডটি নিম্নলিখিত কাজগুলি সম্পাদন করে:

  1. ডোমেইন যাচাই (HTTP-01 চ্যালেঞ্জ)
  2. SSL সার্টিফিকেট ইস্যু
  3. স্বয়ংক্রিয় Apache SSL কনফিগারেশন
  4. ঐচ্ছিকভাবে HTTP থেকে HTTPS-এ রিডাইরেক্ট

SSL অপারেশন যাচাই করুন

HTTPS সক্রিয় আছে কিনা নিশ্চিত করতে নিম্নলিখিত URL-এ প্রবেশ করুন:

https://example.com/

যদি আপনার ব্রাউজার প্যাডলক আইকন দেখায়, তবে SSL সফলভাবে প্রয়োগ হয়েছে।

Apache-এ ম্যানুয়ালি SSL কনফিগার করা

certbot --apache ব্যবহার করতে না চাইলে, আপনি ম্যানুয়ালি SSL কনফিগার করতে পারেন।

১. Apache-র SSL মডিউল সক্রিয় করুন

sudo a2enmod ssl
sudo systemctl restart apache2

২. SSL ভার্চুয়াল হোস্ট কনফিগার করুন

SSL কনফিগারেশন ফাইল /etc/apache2/sites-available/example.com-le-ssl.conf সম্পাদনা করুন:

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

কনফিগারেশন উদাহরণ:

<VirtualHost *:443>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

৩. SSL কনফিগারেশন সক্রিয় করুন এবং Apache রিস্টার্ট করুন

sudo a2ensite example.com-le-ssl.conf
sudo systemctl restart apache2

SSL সার্টিফিকেটের স্বয়ংক্রিয় নবায়ন

Let’s Encrypt সার্টিফিকেটের বৈধতা ৯০ দিন। ম্যানুয়াল নবায়ন এড়াতে, স্বয়ংক্রিয় আপডেট কনফিগার করুন।

১. Certbot স্বয়ংক্রিয় নবায়ন পরীক্ষা করুন

sudo certbot renew --dry-run

২. নবায়ন সময়সূচি পরীক্ষা করুন

Certbot-এর স্বয়ংক্রিয় নবায়ন সময়সূচি /etc/cron.d/certbot-এ সংরক্ষিত থাকে।

sudo systemctl list-timers | grep certbot

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

১. SSL সার্টিফিকেট প্রয়োগ হয়নি

সমাধান: Apache রিস্টার্ট করুন এবং কনফিগারেশন যাচাই করুন

sudo systemctl restart apache2
sudo apachectl configtest

২. সার্টিফিকেটের মেয়াদ শেষ হয়েছে

sudo certbot renew --force-renewal

৩. Let’s Encrypt যাচাই ত্রুটি

সমাধান: ফায়ারওয়াল নিয়মগুলি পরীক্ষা করুন

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

সারাংশ

এই অংশে ব্যাখ্যা করা হয়েছে কীভাবে Let’s Encrypt ব্যবহার করে ফ্রি SSL ইনস্টল এবং কনফিগার করা যায়
কী মূল বিষয়গুলো:

  • SSL/TLS এর মৌলিক বিষয়
  • Let’s Encrypt দিয়ে Apache কনফিগার করা
  • ম্যানুয়াল SSL কনফিগারেশন
  • স্বয়ংক্রিয় সার্টিফিকেট নবায়ন
  • SSL সমস্যার সমাধান

৬. ওয়েব সার্ভার নিরাপত্তা বৃদ্ধি

ফায়ারওয়াল কনফিগারেশন (UFW)

Ubuntu UFW (Uncomplicated Firewall) ব্যবহার করে অপ্রয়োজনীয় ট্র্যাফিক ব্লক করে এবং সার্ভারকে সুরক্ষিত রাখে।

বর্তমান ফায়ারওয়াল সেটিংস পরীক্ষা করুন

sudo ufw status

শুধুমাত্র প্রয়োজনীয় পোর্টগুলি অনুমোদন করুন

ডিফল্টভাবে, সব ইনকামিং ট্র্যাফিক ব্লক করুন এবং শুধুমাত্র প্রয়োজনীয় পোর্টগুলি অনুমোদন করুন:

sudo ufw default deny incoming
sudo ufw default allow outgoing

প্রয়োজনীয় পোর্টগুলি খুলুন:

  • SSH (পোর্ট ২২)
    sudo ufw allow 22/tcp
    
  • HTTP (পোর্ট ৮০)
    sudo ufw allow 80/tcp
    
  • HTTPS (পোর্ট ৪৪৩)
    sudo ufw allow 443/tcp
    

ফায়ারওয়াল সক্রিয় করুন

sudo ufw enable

SSH নিরাপত্তা শক্তিশালীকরণ

ডিফল্ট সেটিংস রেখে দিলে SSH ব্রুট-ফোর্স আক্রমণের সাধারণ লক্ষ্য হয়। সঠিক কনফিগারেশন প্রয়োগ করে নিরাপত্তা শক্তিশালী করুন।

SSH পোর্ট পরিবর্তন করুন

sudo nano /etc/ssh/sshd_config

এই লাইনগুলি পরিবর্তন করুন:

Port 2222  # Change from 22 to any unused port
PermitRootLogin no  # Disable root login
PasswordAuthentication no  # Disable password login (use SSH keys only)

SSH রিস্টার্ট করুন:

sudo systemctl restart ssh

Fail2Ban ইনস্টল করুন

Fail2Ban আপনার সার্ভারকে সুরক্ষিত করে, পুনরাবৃত্ত SSH লগইন ব্যর্থতার চেষ্টা করা IP ঠিকানাগুলোকে সাময়িকভাবে ব্যান করে।

sudo apt install fail2ban -y

কনফিগারেশন সম্পাদনা করুন:

sudo nano /etc/fail2ban/jail.local

নিম্নলিখিতটি যোগ করুন:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 600

Fail2Ban সক্রিয় করুন:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Apache সুরক্ষিতকরণ

Apache সংস্করণ তথ্য লুকান

sudo nano /etc/apache2/conf-available/security.conf

নিম্নলিখিত সেটিংস পরিবর্তন করুন:

ServerTokens Prod
ServerSignature Off

পরিবর্তনগুলি প্রয়োগ করুন:

sudo systemctl restart apache2

ডিরেক্টরি তালিকা নিষ্ক্রিয় করুন

sudo nano /etc/apache2/apache2.conf

ডিরেক্টরি ব্লকটি খুঁজে বের করে আপডেট করুন:

<Directory /var/www/>
    Options -Indexes +FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Apache পুনরায় চালু করুন:

sudo systemctl restart apache2

অপ্রয়োজনীয় Apache মডিউল নিষ্ক্রিয় করুন

sudo a2dismod autoindex
sudo a2dismod status
sudo systemctl restart apache2

সিকিউরিটি হেডার যোগ করা

সিকিউরিটি হেডার আপনার ওয়েবসাইটকে ক্রস-সাইট স্ক্রিপ্টিং এবং ক্লিকজ্যাকিংয়ের মতো আক্রমণ থেকে রক্ষা করে।

mod_headers সক্রিয় করুন

sudo a2enmod headers
sudo systemctl restart apache2

সিকিউরিটি হেডার যোগ করুন

sudo nano /etc/apache2/sites-available/example.com.conf

<VirtualHost> ব্লকের ভিতরে নিম্নলিখিতটি যোগ করুন:

<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

Apache পুনরায় চালু করুন:

sudo systemctl restart apache2

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

ফায়ারওয়াল সেটিংস পরীক্ষা করুন

sudo ufw status

Apache কনফিগারেশন ত্রুটির জন্য পরীক্ষা করুন

sudo apachectl configtest

আউটপুট উদাহরণ:

Syntax OK

পোর্ট পরিবর্তনের পরে SSH-এ সংযোগ করা যাচ্ছে না

পোর্ট পরিবর্তনের পরে যদি SSH সংযোগ না করে, সংযোগের সময় নতুন পোর্ট নির্দিষ্ট করুন:

ssh -p 2222 user@server-ip

সারাংশ

এই বিভাগে আপনার ওয়েব সার্ভারের নিরাপত্তা কীভাবে শক্তিশালী করবেন তা ব্যাখ্যা করা হয়েছে।
মূল বিষয়গুলো:

  • UFW ফায়ারওয়াল নিয়ম কনফিগার করা
  • SSH সুরক্ষিত করা (পোর্ট পরিবর্তন, Fail2Ban)
  • Apache নিরাপত্তা শক্তিকরণ (সংস্করণ তথ্য লুকানো, তালিকা নিষ্ক্রিয় করা)
  • সিকিউরিটি হেডার যোগ করা

7. পারফরম্যান্স অপ্টিমাইজেশন

Apache টিউনিং

ডিফল্ট Apache কনফিগারেশন সর্বোত্তম পারফরম্যান্স নাও দিতে পারে। নিম্নলিখিত সমন্বয়গুলি প্রয়োগ করে আপনি গুরুতরভাবে উচ্চতর পারফরম্যান্স অর্জন করতে পারেন।

MPM (মাল্টি-প্রসেসিং মডিউল) অপ্টিমাইজ করা

MPM (মাল্টি-প্রসেসিং মডিউল) নির্ধারণ করে Apache কীভাবে রিকোয়েস্ট হ্যান্ডল করে।

বর্তমান MPM পরীক্ষা করুন:

apachectl -M | grep mpm

উদাহরণ আউটপুট:

mpm_prefork_module (shared)

যদি mpm_prefork_module সক্রিয় থাকে, mpm_event-এ পরিবর্তন করলে পারফরম্যান্স উন্নত হতে পারে।

MPM পরিবর্তন করুন:

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

KeepAlive সক্রিয় করুন

KeepAlive (ধারাবাহিক সংযোগ) ক্লায়েন্টকে বিদ্যমান সংযোগ পুনরায় ব্যবহার করতে দেয়, ফলে রিকোয়েস্ট ওভারহেড কমে।

কনফিগারেশন ফাইল সম্পাদনা করুন:

sudo nano /etc/apache2/apache2.conf

নিম্নলিখিত সেটিংস নিশ্চিত করুন:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Apache পুনরায় চালু করুন:

sudo systemctl restart apache2

ক্যাশ ব্যবহার করা

ব্রাউজার ক্যাশ এবং সার্ভার-সাইড ক্যাশ ব্যবহার করে আপনি অপ্রয়োজনীয় রিকোয়েস্ট কমাতে এবং প্রতিক্রিয়া গতি উল্লেখযোগ্যভাবে বাড়াতে পারেন।

mod_expires (ব্রাউজার ক্যাশ) সক্রিয় করুন

sudo a2enmod expires
sudo systemctl restart apache2

/etc/apache2/sites-available/example.com.conf-এ নিম্নলিখিতটি যোগ করুন:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

Apache পুনরায় চালু করুন:

sudo systemctl restart apache2

mod_cache সক্রিয় করুন (সার্ভার ক্যাশে)

sudo a2enmod cache cache_disk
sudo systemctl restart apache2

নিম্নলিখিতটি /etc/apache2/sites-available/example.com.conf-এ যোগ করুন:

<IfModule mod_cache.c>
    CacheEnable disk /
    CacheRoot /var/cache/apache2/mod_cache_disk
    CacheDefaultExpire 86400
</IfModule>

Apache পুনরায় চালু করুন:

sudo systemctl restart apache2

কম্প্রেশন সক্রিয় করুন

ওয়েবসাইটের ডেটা কম্প্রেস করতে এবং ট্রান্সফার সাইজ কমাতে mod_deflate ব্যবহার করুন।

mod_deflate সক্রিয় করুন

sudo a2enmod deflate
sudo systemctl restart apache2

নিম্নলিখিতটি /etc/apache2/sites-available/example.com.conf-এ যোগ করুন:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Apache পুনরায় চালু করুন:

sudo systemctl restart apache2

রিসোর্স সীমাবদ্ধতা

ভারী ট্র্যাফিক বা সম্ভাব্য ক্ষতিকারক অ্যাক্সেসের জন্য প্রস্তুত হতে, Apache মডিউল ব্যবহার করে রিসোর্স সীমা সেট করুন।

mod_ratelimit সক্রিয় করুন

sudo a2enmod ratelimit
sudo systemctl restart apache2

নিম্নলিখিতটি /etc/apache2/sites-available/example.com.conf-এ যোগ করুন:

<Location />
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</Location>

Apache পুনরায় চালু করুন:

sudo systemctl restart apache2

পারফরম্যান্স সমস্যার সমাধান

Apache ত্রুটি লগ পরীক্ষা করুন

sudo tail -f /var/log/apache2/error.log

Apache লোড স্ট্যাটাস পরীক্ষা করুন

sudo apachectl status

CPU এবং মেমরি ব্যবহার পরীক্ষা করুন

অথবা

top
htop

যদি htop ইনস্টল না থাকে:

sudo apt install htop

সারাংশ

এই বিভাগে কীভাবে ওয়েব সার্ভার পারফরম্যান্স অপ্টিমাইজ করা যায় তা ব্যাখ্যা করা হয়েছে।
মূল বিষয়গুলো:

  • Apache টিউনিং (MPM অপ্টিমাইজেশন এবং KeepAlive সেটিংস)
  • ক্যাশে ব্যবহার (ব্রাউজার ক্যাশে এবং সার্ভার ক্যাশে)
  • mod_deflate দিয়ে ডেটা কম্প্রেশন
  • mod_ratelimit ব্যবহার করে রিসোর্স নিয়ন্ত্রণ

8. সমস্যার সমাধান

Apache শুরু হচ্ছে না

যদি Apache শুরু না হয়, তবে কনফিগারেশন ত্রুটি সবচেয়ে সাধারণ কারণ।

১. ত্রুটি বার্তা পরীক্ষা করুন

sudo systemctl status apache2

২. কনফিগারেশন পরীক্ষা করুন

sudo apachectl configtest

যদি আউটপুটে “Syntax error” থাকে, তবে ত্রুটি বার্তায় তালিকাভুক্ত পথ বা সেটিংস যাচাই করুন।

৩. Apache পুনরায় চালু করুন

sudo systemctl restart apache2

সার্ভার অ্যাক্সেস করা যাচ্ছে না

যদি ব্রাউজারে সার্ভার অ্যাক্সেস করা না যায়, তবে নিম্নলিখিত বিষয়গুলো যাচাই করুন।

১. ফায়ারওয়াল সেটিংস পরীক্ষা করুন

sudo ufw status

নিশ্চিত করুন যে পোর্ট 80 এবং 443 অনুমোদিত।

২. Apache স্ট্যাটাস পরীক্ষা করুন

sudo systemctl status apache2

৩. সার্ভার IP ঠিকানা পরীক্ষা করুন

hostname -I

ভার্চুয়াল হোস্ট কাজ করছে না

যদি ভার্চুয়াল হোস্ট প্রত্যাশিতভাবে কাজ না করে, তবে কনফিগারেশন পুনরায় পরীক্ষা করুন।

১. ভার্চুয়াল হোস্ট ফাইলগুলি সক্রিয় আছে কিনা নিশ্চিত করুন

ls /etc/apache2/sites-enabled/

যদি আপনার .conf তালিকাভুক্ত না থাকে, তবে এটি সক্রিয় করুন:

sudo a2ensite example.com.conf
sudo systemctl restart apache2

২. হোস্টনেম রেজোলিউশন পরীক্ষা করুন

লোকালি টেস্ট করলে, নিশ্চিত করুন যে /etc/hosts ফাইলে রয়েছে:

127.0.0.1 example.com

৩. DocumentRoot পথ পরীক্ষা করুন

ভুল পথ প্রায়শই ভার্চুয়াল হোস্ট সমস্যার কারণ হয়।

DocumentRoot /var/www/example.com/public_html

SSL সার্টিফিকেট সমস্যাগুলি

১. HTTPS কাজ করছে না

নিশ্চিত করুন SSL সক্রিয় আছে:

sudo apachectl -M | grep ssl

প্রয়োজনে সক্ষম করুন:

sudo a2enmod ssl
sudo systemctl restart apache2

২. সার্টিফিকেটের মেয়াদ শেষ হয়েছে

sudo certbot renew

৩. লেটস এনক্রিপ্ট যাচাই ব্যর্থ হয়

HTTP যাচাইয়ের জন্য পোর্ট ৮০ খোলা থাকতে হবে।

sudo ufw allow 80/tcp
sudo systemctl restart apache2

ধীর ওয়েবসাইট পারফরম্যান্স

১. সার্ভার লোড চেক করুন

top

২. অ্যাপাচি লগ পর্যালোচনা করুন

sudo tail -f /var/log/apache2/access.log

৩. ক্যাশ সেটিংস নিশ্চিত করুন

নিশ্চিত করুন mod_expires, mod_cache, এবং mod_deflate সক্ষম করা আছে।

অনুমতি ত্রুটি (৪০৩ নিষিদ্ধ)

এই ত্রুটি সাধারণত ভুল ফাইল বা ডিরেক্টরি অনুমতি নির্দেশ করে।

১. ডিরেক্টরি মালিকানা চেক করুন

sudo chown -R www-data:www-data /var/www/example.com

২. ডিরেক্টরি অনুমতি চেক করুন

sudo chmod -R 755 /var/www/example.com

ত্রুটি লগ মনিটরিং

ট্রাবলশুটিংয়ের সময় সর্বদা ত্রুটি লগ মনিটর করুন:

sudo tail -f /var/log/apache2/error.log

সারাংশ

এই বিভাগটি আপনার উবুন্টু ওয়েব সার্ভারের সাধারণ সমস্যাগুলির ট্রাবলশুটিংয়ের জন্য পদ্ধতি প্রদান করেছে
মূল পয়েন্টসমূহ:

  • অ্যাপাচি স্টার্টআপ ত্রুটি এবং কনফিগারেশন চেক
  • ফায়ারওয়াল এবং নেটওয়ার্ক-সম্পর্কিত সমস্যা
  • ভার্চুয়াল হোস্ট কনফিগারেশন সমস্যা
  • এসএসএল সার্টিফিকেট ত্রুটি এবং নবায়ন
  • পারফরম্যান্স এবং অনুমতি ট্রাবলশুটিং

৯. সারাংশ

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

এই গাইড অনুসরণ করে, আপনি স্থিতিশীল, নিরাপদ এবং উচ্চ-পারফরম্যান্স ওয়েব সার্ভার পরিচালনা করতে পারবেন যা ব্যক্তিগত প্রকল্প এবং ব্যবসায়িক-গ্রেড অ্যাপ্লিকেশনের জন্য উপযুক্ত।

✔ এই গাইডে আচ্ছাদিত মূল পয়েন্টসমূহ

  • উবুন্টু ইনস্টল করা এবং প্রাথমিক সিস্টেম কনফিগারেশন সম্পাদন
  • অ্যাপাচি ইনস্টল এবং কনফিগার করা
  • একাধিক ওয়েবসাইট পরিচালনার জন্য ভার্চুয়াল হোস্ট সেটআপ
  • লেটস এনক্রিপ্ট থেকে বিনামূল্যে এসএসএল সার্টিফিকেট ব্যবহার করে এইচটিটিপিএস সক্ষম করা
  • সার্ভার নিরাপত্তা উন্নয়ন (ইউএফডব্লিউ, এসএসএচ হার্ডেনিং, অ্যাপাচি সেটিংস)
  • পারফরম্যান্স উন্নয়ন (ক্যাশিং, কম্প্রেশন, এমপিএম টিউনিং)
  • সার্ভার অপারেশনের সময় সাধারণ সমস্যা ট্রাবলশুটিং

✔ এই গাইড সম্পূর্ণ করার পর আপনি যা অর্জন করতে পারবেন

  • একক উবুন্টু সার্ভারে একাধিক ওয়েবসাইট হোস্ট করুন
  • আধুনিক এসএসএল/টিএলএস ব্যবহার করে নিরাপদ যোগাযোগ নিশ্চিত করুন
  • ক্যাশিং এবং কম্প্রেশন ব্যবহার করে সাইটের গতি এবং নির্ভরযোগ্যতা উন্নত করুন
  • অ্যাপাচি লগ এবং সিস্টেম টুলস ব্যবহার করে দ্রুত সমস্যা নির্ণয় এবং সমাধান করুন

✔ প্রস্তাবিত পরবর্তী পদক্ষেপসমূহ

  • সম্পূর্ণ ল্যাম্প পরিবেশ তৈরির জন্য পিএইচপি এবং মাইএসকিউএল/মারিয়াডিবি ইনস্টল করুন
  • ওয়ার্ডপ্রেস বা অন্যান্য সিএমএস মোতায়েন করুন
  • স্বয়ংক্রিয় ব্যাকআপ সমাধান বাস্তবায়ন করুন
  • ক্লাউড সার্ভিস ব্যবহার বিবেচনা করুন (এডব্লিউএস, জিসিপি, অ্যাজুর, ইত্যাদি)

সঠিক কনফিগারেশন এবং রক্ষণাবেক্ষণের সাথে, একটি উবুন্টু ওয়েব সার্ভার দীর্ঘমেয়াদী স্থিতিশীলতা এবং অসাধারণ পারফরম্যান্স প্রদান করতে পারে।
আমরা আশা করি এই গাইডটি আপনাকে একটি নির্ভরযোগ্য এবং নিরাপদ সার্ভার পরিবেশ তৈরি করতে সাহায্য করবে।