সার্ভার সেটআপ এবং ম্যানেজমেন্ট (Server Setup and Management)
সার্ভার সেটআপ এবং ম্যানেজমেন্ট হল সিস্টেম প্রশাসকদের মূল কাজ, যার মাধ্যমে তারা সার্ভারের কনফিগারেশন, রক্ষণাবেক্ষণ এবং পরিচালনা করেন। সঠিকভাবে সার্ভার সেটআপ এবং ম্যানেজমেন্ট করার মাধ্যমে আপনি নিরাপদ, স্থিতিশীল, এবং উচ্চ পারফরম্যান্সের সার্ভার পরিবেশ তৈরি করতে পারেন। এখানে আমরা সার্ভার সেটআপ এবং ম্যানেজমেন্টের প্রক্রিয়া এবং কিছু গুরুত্বপূর্ণ টুলস ও কৌশল নিয়ে আলোচনা করব।
1. সার্ভার সেটআপ (Server Setup)
সার্ভার সেটআপের প্রাথমিক কাজ হল সার্ভারের প্রাথমিক কনফিগারেশন, নিরাপত্তা কনফিগারেশন, নেটওয়ার্ক কনফিগারেশন, এবং প্রয়োজনীয় সফটওয়্যার বা অ্যাপ্লিকেশন ইনস্টল করা।
1.1 অপারেটিং সিস্টেম ইনস্টলেশন (OS Installation)
সার্ভার সেটআপের প্রথম ধাপ হল একটি অপারেটিং সিস্টেম ইনস্টল করা। লিনাক্সে, সাধারণত Ubuntu, CentOS, Debian, Red Hat Enterprise Linux (RHEL) ইত্যাদি অপারেটিং সিস্টেম ব্যবহার করা হয়। নিচে Ubuntu Server এর ইনস্টলেশন পদ্ধতি দেখানো হয়েছে:
- Ubuntu Server ইনস্টলেশন:
- সার্ভার ইমেজ ডাউনলোড করুন এবং সেটি একটি USB বা DVD-তে বুটেবল করে রাখুন।
- বুট মেনু থেকে Ubuntu Server বুট করুন।
- ইনস্টলেশনের সময় সিস্টেমের ভাষা, টাইমজোন, এবং কীবোর্ড লেআউট সিলেক্ট করুন।
- নেটওয়ার্ক সেটিংস কনফিগার করুন (স্ট্যাটিক IP ঠিকানা বা DHCP নির্বাচন করুন)।
- হোস্টনেম সেট করুন (যেমন,
myserverবাsatt-server)। - ডিস্ক পার্টিশনিং করুন এবং ফাইল সিস্টেম তৈরি করুন।
- ইনস্টলেশন সম্পন্ন করুন এবং সার্ভার রিবুট করুন।
1.2 নেটওয়ার্ক কনফিগারেশন (Network Configuration)
নেটওয়ার্ক সেটআপ খুবই গুরুত্বপূর্ণ। এটি সার্ভারের IP অ্যাড্রেস, DNS, এবং গেটওয়ে কনফিগার করতে সহায়ক।
- Ubuntu/Debian সিস্টেমে নেটওয়ার্ক কনফিগারেশন:
নেটওয়ার্ক কনফিগারেশন ফাইলটি
/etc/netplan/ডিরেক্টরিতে থাকে। উদাহরণস্বরূপ:sudo nano /etc/netplan/00-installer-config.yamlএখানে আপনি স্ট্যাটিক IP ঠিকানা, DNS এবং গেটওয়ে কনফিগার করতে পারেন।
- CentOS/Red Hat সিস্টেমে নেটওয়ার্ক কনফিগারেশন:
- নেটওয়ার্ক কনফিগারেশন ফাইলটি
/etc/sysconfig/network-scripts/ifcfg-eth0ফাইলে থাকে। - স্ট্যাটিক IP ঠিকানা এবং DNS সেট করতে এই ফাইলটি সম্পাদনা করুন।
- নেটওয়ার্ক কনফিগারেশন ফাইলটি
1.3 সার্ভার সিকিউরিটি (Server Security)
সার্ভারের নিরাপত্তা নিশ্চিত করা অত্যন্ত গুরুত্বপূর্ণ। এতে কিছু সাধারণ নিরাপত্তা কনফিগারেশন অন্তর্ভুক্ত থাকে:
- ফায়ারওয়াল কনফিগারেশন:
Ubuntu/Debian:
sudo ufw allow OpenSSH sudo ufw enable sudo ufw statusCentOS/Red Hat:
sudo firewall-cmd --zone=public --add-service=ssh --permanent sudo firewall-cmd --reload
- SSH সিকিউরিটি:
SSH সার্ভার কনফিগারেশন ফাইলটি
/etc/ssh/sshd_configএ থাকে। এখানে আপনি SSH পোর্ট পরিবর্তন করতে পারেন এবং পাসওয়ার্ড-ভিত্তিক লগইন নিষ্ক্রিয় করতে পারেন:sudo nano /etc/ssh/sshd_configপাসওয়ার্ড-ভিত্তিক লগইন নিষ্ক্রিয় করতে:
PasswordAuthentication noSSH সার্ভিস রিবুট:
sudo systemctl restart ssh
- অ্যাকাউন্ট লকিং:
- অজানা বা সন্দেহজনক লগইন প্রচেষ্টা বন্ধ করার জন্য
fail2banব্যবহার করা যেতে পারে।
- অজানা বা সন্দেহজনক লগইন প্রচেষ্টা বন্ধ করার জন্য
1.4 সার্ভার ডেটাবেস ইনস্টলেশন (Database Installation)
আপনার সার্ভারে যেকোনো ডেটাবেস যেমন MySQL, PostgreSQL, MongoDB ইত্যাদি ইনস্টল করা হতে পারে। উদাহরণস্বরূপ, MySQL ইনস্টল করা:
Ubuntu/Debian:
sudo apt update sudo apt install mysql-server sudo mysql_secure_installationCentOS/RHEL:
sudo yum install mysql-server sudo systemctl start mysqld sudo mysql_secure_installation
2. সার্ভার ম্যানেজমেন্ট (Server Management)
সার্ভার পরিচালনা করার সময় আপনাকে বিভিন্ন কাজে মনোযোগ দিতে হয়, যেমন সার্ভিস কন্ট্রোল, মনিটরিং, আপডেট এবং সিস্টেম মেইনটেনেন্স।
2.1 সার্ভিস ম্যানেজমেন্ট (Service Management)
লিনাক্স সিস্টেমে সিস্টেম পরিষেবা পরিচালনা করতে systemctl কমান্ড ব্যবহার করা হয়। এটি সার্ভিস শুরু, বন্ধ, রিস্টার্ট এবং রিবুট করতে সহায়ক।
সার্ভিস চালু করা:
sudo systemctl start [service_name]সার্ভিস বন্ধ করা:
sudo systemctl stop [service_name]সার্ভিস রিস্টার্ট করা:
sudo systemctl restart [service_name]সার্ভিস অবস্থা দেখা:
sudo systemctl status [service_name]সার্ভিস অটোমেটিক স্টার্ট অপশন চালু/বন্ধ করা:
sudo systemctl enable [service_name] sudo systemctl disable [service_name]
2.2 সিস্টেম মনিটরিং (System Monitoring)
সার্ভারের পারফরম্যান্স মনিটরিং অত্যন্ত গুরুত্বপূর্ণ। এতে CPU, মেমরি, ডিস্ক, নেটওয়ার্ক এবং অন্যান্য রিসোর্সের ব্যবহার মনিটর করা হয়।
top: সিস্টেমের রিয়েল-টাইম রিসোর্স ব্যবহারের রিপোর্ট দেখায়।tophtop: এটিtopএর উন্নত সংস্করণ, যা গ্রাফিকাল UI দেখায়।sudo apt install htop htopdf: ডিস্ক স্পেস ব্যবহার সম্পর্কিত তথ্য দেখায়।df -hfree: মেমরি ব্যবহারের তথ্য দেখায়।free -hnetstat: নেটওয়ার্ক সংযোগ এবং স্ট্যাটাস চেক করতে ব্যবহৃত হয়।netstat -tuln
2.3 অ্যাপ্লিকেশন আপডেট (Application Update)
সিস্টেমের সফটওয়্যার এবং প্যাকেজ আপডেট রাখা সুরক্ষিত এবং স্থিতিশীল ব্যবস্থাপনার জন্য খুবই গুরুত্বপূর্ণ।
Ubuntu/Debian:
sudo apt update sudo apt upgradeCentOS/RHEL:
sudo yum update
এটি আপনার সিস্টেমের সমস্ত প্যাকেজ এবং অ্যাপ্লিকেশন আপডেট করবে।
2.4 ব্যাকআপ (Backup)
সার্ভারের গুরুত্বপূর্ণ ডেটা এবং কনফিগারেশন ব্যাকআপ নেওয়া অপরিহার্য। আপনি rsync, tar বা অন্যান্য টুলস ব্যবহার করে ব্যাকআপ নিতে পারেন।
ব্যাকআপ নেওয়া:
rsync -av /path/to/data /path/to/backupব্যাকআপ পুনরুদ্ধার:
rsync -av /path/to/backup /path/to/restore
3. সার্ভার নিরাপত্তা (Server Security)
সার্ভারের
নিরাপত্তা সুরক্ষিত রাখার জন্য আপনাকে কিছু সাধারণ নিরাপত্তা কৌশল অনুসরণ করতে হবে:
- ফায়ারওয়াল কনফিগারেশন: সার্ভারে ফায়ারওয়াল কনফিগার করে শুধুমাত্র নির্দিষ্ট পোর্টে অ্যাক্সেস অনুমতি দিন।
- SSH কনফিগারেশন: SSH পোর্ট পরিবর্তন করুন এবং পাসওয়ার্ড লগইন নিষ্ক্রিয় করুন, শুধুমাত্র SSH কী ব্যবহার করুন।
- Fail2Ban ইনস্টলেশন: অবাঞ্ছিত লগইন প্রচেষ্টা থেকে রক্ষা পেতে fail2ban ইনস্টল করুন।
- প্যাচ ম্যানেজমেন্ট: নিয়মিত সিস্টেম প্যাচ এবং আপডেট করুন।
সারসংক্ষেপ
সার্ভার সেটআপ এবং ম্যানেজমেন্ট একটি সিস্টেম প্রশাসকের গুরুত্বপূর্ণ কাজ। সার্ভার ইনস্টলেশন, নেটওয়ার্ক কনফিগারেশন, নিরাপত্তা, অ্যাপ্লিকেশন ইনস্টলেশন, মনিটরিং এবং সার্ভিস ম্যানেজমেন্টের মাধ্যমে সার্ভার পরিচালনা করা হয়। systemctl, cron, rsync, tar ইত্যাদি কমান্ড এবং টুলস সার্ভার ব্যবস্থাপনাকে আরও সহজ এবং কার্যকর করে তোলে।
ওয়েব সার্ভার সেটআপ: Apache, Nginx
ওয়েব সার্ভার হল একটি সফটওয়্যার যা HTTP প্রোটোকলের মাধ্যমে ক্লায়েন্টের (সাধারণত ওয়েব ব্রাউজার) কাছ থেকে আসা অনুরোধ গ্রহণ করে এবং সেগুলোর জন্য প্রয়োজনীয় ফাইল, ডেটা বা অ্যাপ্লিকেশন প্রেরণ করে। ওয়েব সার্ভার দুটি জনপ্রিয় এবং শক্তিশালী সফটওয়্যার হল Apache এবং Nginx। এই দুটি ওয়েব সার্ভারই লিনাক্স/ইউনিক্স সিস্টেমে খুবই জনপ্রিয় এবং প্রযোজ্য।
এই গাইডে আমরা Apache এবং Nginx ওয়েব সার্ভার সিস্টেমে ইনস্টল এবং কনফিগার করার প্রক্রিয়া আলোচনা করব।
1. Apache ওয়েব সার্ভার সেটআপ
Apache HTTP Server একটি ওপেন সোর্স ওয়েব সার্ভার সফটওয়্যার, যা বিশ্বব্যাপী সবচেয়ে জনপ্রিয় ওয়েব সার্ভার হিসেবে পরিচিত। এটি HTTP প্রোটোকল ব্যবহার করে ওয়েব পেজের কন্টেন্ট সার্ভ করতে সক্ষম।
Apache ইনস্টল করা
Ubuntu/Debian:
sudo apt update
sudo apt install apache2CentOS/RHEL:
sudo yum install httpdApache সার্ভার চালু করা
সার্ভার চালু করা:
sudo systemctl start apache2 # Ubuntu/Debian sudo systemctl start httpd # CentOS/RHELসার্ভার স্বয়ংক্রিয়ভাবে চালু হওয়া নিশ্চিত করা:
sudo systemctl enable apache2 # Ubuntu/Debian sudo systemctl enable httpd # CentOS/RHEL
Apache কনফিগারেশন ফাইল
- Apache কনফিগারেশন ফাইল সাধারণত
/etc/apache2/apache2.conf(Ubuntu/Debian) অথবা/etc/httpd/conf/httpd.conf(CentOS/RHEL) এ থাকে। - কনফিগারেশন পরিবর্তন:
- আপনি Apache কনফিগারেশন ফাইল পরিবর্তন করে বিভিন্ন সেটিংস কাস্টমাইজ করতে পারেন, যেমন ওয়েব রুট, লগিং, ফাইল পারমিশন ইত্যাদি।
Apache ওয়েব পেজ পরীক্ষা
যদি আপনি Apache সার্ভারটি সফলভাবে ইনস্টল এবং চালু করে থাকেন, তবে আপনি আপনার ব্রাউজারে গিয়ে http://your-server-ip এ গিয়ে Apache এর ডিফল্ট ওয়েব পেজ দেখতে পাবেন। এখানে your-server-ip হল আপনার সার্ভারের IP ঠিকানা।
2. Nginx ওয়েব সার্ভার সেটআপ
Nginx (উচ্চ পারফরম্যান্স HTTP এবং রিভার্স প্রক্সি সার্ভার) একটি লাইটওয়েট এবং শক্তিশালী ওয়েব সার্ভার, যা সাধারণত গতির কারণে ব্যবহৃত হয়। Nginx কম রিসোর্স ব্যবহার করে অধিক ট্রাফিক পরিচালনা করতে সক্ষম।
Nginx ইনস্টল করা
Ubuntu/Debian:
sudo apt update
sudo apt install nginxCentOS/RHEL:
sudo yum install nginxNginx সার্ভার চালু করা
সার্ভার চালু করা:
sudo systemctl start nginxসার্ভার স্বয়ংক্রিয়ভাবে চালু হওয়া নিশ্চিত করা:
sudo systemctl enable nginx
Nginx কনফিগারেশন ফাইল
- Nginx কনফিগারেশন ফাইল সাধারণত
/etc/nginx/nginx.confএ থাকে। আপনি এই ফাইলটি কনফিগারেশন পরিবর্তন করতে ব্যবহার করতে পারেন। কনফিগারেশন ফাইল পরীক্ষা:
sudo nginx -tNginx রিস্টার্ট বা রিলোড:
কনফিগারেশন পরিবর্তন করার পর Nginx সার্ভার রিস্টার্ট বা রিলোড করতে হবে।sudo systemctl restart nginx
Nginx ওয়েব পেজ পরীক্ষা
যদি Nginx সফলভাবে ইনস্টল এবং চালু করা হয়ে থাকে, তাহলে আপনি আপনার ব্রাউজারে গিয়ে http://your-server-ip এ গিয়ে Nginx এর ডিফল্ট ওয়েব পেজ দেখতে পারবেন।
3. Apache vs Nginx
Apache এবং Nginx দুটি শক্তিশালী ওয়েব সার্ভার হলেও তাদের মধ্যে কিছু পার্থক্য রয়েছে:
Apache এর সুবিধাসমূহ:
- কাস্টমাইজেবল: Apache অনেক বেশি কাস্টমাইজযোগ্য। এটি মডিউল সাপোর্ট করে, যা সার্ভারের কার্যকারিতা বাড়ানোর জন্য ব্যবহার করা যায়।
- .htaccess ফাইল: Apache
.htaccessফাইলের মাধ্যমে বিভিন্ন কনফিগারেশন পরিবর্তন করার সুবিধা দেয়। - সাধারণ এবং প্রমাণিত: Apache অনেক পুরানো এবং বিশাল কমিউনিটি সাপোর্ট রয়েছে।
Nginx এর সুবিধাসমূহ:
- কম রিসোর্স ব্যবহার: Nginx অনেক কম রিসোর্স ব্যবহার করে এবং আরো অধিক ট্রাফিক পরিচালনা করতে সক্ষম।
- রিভার্স প্রক্সি: Nginx সহজে রিভার্স প্রক্সি হিসেবে ব্যবহার করা যায়, যা সাধারণত লোড ব্যালেন্সিং এবং কন্টেন্ট সার্ভিং এর জন্য ব্যবহৃত হয়।
- স্ট্যাটিক কন্টেন্ট সেবন: Nginx স্ট্যাটিক কন্টেন্ট সার্ভ করতে Apache এর তুলনায় অনেক দ্রুত।
4. Apache এবং Nginx একসাথে ব্যবহার করা
অনেক সময় Apache এবং Nginx একসাথে ব্যবহার করা হয়, যেখানে Nginx রিভার্স প্রক্সি হিসেবে কাজ করে এবং Apache ডাইনামিক কন্টেন্ট প্রসেসিংয়ের জন্য ব্যবহৃত হয়।
Apache এবং Nginx একসাথে কনফিগার করা:
- Nginx কনফিগার করা হয় রিভার্স প্রক্সি হিসেবে, যাতে Nginx ইনকামিং HTTP অনুরোধ গ্রহণ করে এবং ফাস্ট স্ট্যাটিক কন্টেন্ট সরবরাহ করে।
- Apache ডাইনামিক কন্টেন্ট প্রসেসিং, যেমন PHP ফাইলের জন্য ব্যবহৃত হয়।
Nginx কনফিগারেশন উদাহরণ:
Nginx কনফিগারেশন ফাইলটি /etc/nginx/sites-available/ এ থাকে এবং সেখানে রিভার্স প্রক্সি সেটআপ করা হয়।
/etc/nginx/sites-available/default:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8080; # Apache এর জন্য রিভার্স প্রক্সি
}
}এটি Nginx কে নির্দেশ দেয় যে ইনকামিং HTTP অনুরোধ Apache (যা 8080 পোর্টে চলছে) এর দিকে পাঠানো হবে।
5. অ্যাপ্লিকেশন সার্ভার কনফিগারেশন
যদি আপনি PHP, Python বা অন্যান্য ডাইনামিক কন্টেন্ট অ্যাপ্লিকেশন চালাতে চান, তবে আপনাকে বিশেষ কনফিগারেশন করতে হবে।
Apache এবং PHP:
PHP ইনস্টল করা:
sudo apt install php libapache2-mod-phpNginx এবং PHP (PHP-FPM):
PHP-FPM ইনস্টল করা:
sudo apt install php-fpmNginx কনফিগারেশন:
server {
listen 80;
server_name your-domain.com;
root /var/www/html;
index index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
}এটি Nginx কে PHP ফাইল প্রসেস করতে PHP-FPM (FastCGI Process Manager) ব্যবহার করতে নির্দেশ দেয়।
সারসংক্ষেপ
- Apache এবং Nginx দুটি জনপ্রিয় ওয়েব সার্ভার সফটওয়্যার, যা HTTP প্রোটোকল ব্যবহার করে ওয়েব পেজ সরবরাহ করতে সক্ষম।
- Apache লম্বা সময় ধরে ব্যবহৃত একটি শক্তিশালী এবং কাস্টমাইজযোগ্য ওয়েব সার্ভার।
- Nginx দ্রুত এবং কম রিসোর্স ব্যবহার করে, বিশেষত স্ট্যাটিক কন্টেন্ট সরবরাহ এবং রিভার্স প্রক্সি হিসেবে কার্যকর।
- দুইটি সার্ভার একসাথে ব্যবহার করে Apache এবং Nginx এর সুবিধাগুলো একসাথে পাওয়া যেতে পারে।
এই টিউটোরিয়াল থেকে আপনি Apache এবং Nginx ওয়েব সার্ভার সেটআপ এবং কনফিগারেশনের মৌলিক ধারণা পেয়েছেন।
ওয়েব সার্ভার সেটআপ: Apache এবং Nginx
ওয়েব সার্ভার হল একটি সফটওয়্যার প্রোগ্রাম যা HTTP প্রোটোকল ব্যবহার করে ক্লায়েন্টের (বিশেষত ওয়েব ব্রাউজার) কাছ থেকে আসা রিকোয়েস্ট গ্রহণ করে এবং যথাযথ রেসপন্স প্রদান করে, যেমন HTML পেজ, চিত্র, ভিডিও ইত্যাদি। লিনাক্স/ইউনিক্স সিস্টেমে প্রধানত Apache এবং Nginx ওয়েব সার্ভার ব্যবহার করা হয়।
1. Apache ওয়েব সার্ভার সেটআপ
Apache HTTP Server বা শুধু Apache বিশ্বের অন্যতম জনপ্রিয় ওয়েব সার্ভার, যা সাধারণত ব্যবহারকারীদের ওয়েব পেজ এবং ডেটা সার্ভ করতে ব্যবহৃত হয়। এটি ওপেন সোর্স এবং লিনাক্স/ইউনিক্স সিস্টেমের জন্য সম্পূর্ণরূপে কনফিগার করা যেতে পারে।
Apache ইনস্টল করা
Ubuntu/Debian-এ Apache ইনস্টল করতে:
sudo apt update sudo apt install apache2CentOS/RHEL-এ Apache ইনস্টল করতে:
sudo yum install httpd
Apache সার্ভার চালু এবং স্টপ করা
সার্ভার শুরু করা:
sudo systemctl start apache2 # Ubuntu/Debian sudo systemctl start httpd # CentOS/RHELসার্ভার স্টপ করা:
sudo systemctl stop apache2 # Ubuntu/Debian sudo systemctl stop httpd # CentOS/RHELসার্ভার চালু হওয়া নিশ্চিত করা:
sudo systemctl enable apache2 # Ubuntu/Debian sudo systemctl enable httpd # CentOS/RHEL
Apache কনফিগারেশন
Apache কনফিগারেশন ফাইল সাধারণত /etc/apache2/apache2.conf (Ubuntu/Debian) অথবা /etc/httpd/conf/httpd.conf (CentOS/RHEL) ফাইলে থাকে। এখানে আপনি সার্ভারের পোর্ট, ডিরেক্টরি পারমিশন, লগ ফাইল ইত্যাদি কনফিগার করতে পারেন।
ওয়েব পেজ পরীক্ষা করা
Apache ইনস্টল ও চালু করার পর, আপনার সার্ভারের আইপি অ্যাড্রেস বা ডোমেইন নাম ব্রাউজারে টাইপ করুন (যেমন http://localhost অথবা http://your_server_ip)। যদি আপনি Apache এর ডিফল্ট পেজ দেখতে পান, তবে আপনার সার্ভার সফলভাবে কাজ করছে।
2. Nginx ওয়েব সার্ভার সেটআপ
Nginx হল আরেকটি জনপ্রিয় ওপেন সোর্স ওয়েব সার্ভার যা তার দ্রুতগতির পারফরম্যান্স এবং কম রিসোর্স ব্যবহারের জন্য পরিচিত। এটি সাধারণত লোড ব্যালান্সার, রিভার্স প্রক্সি এবং HTTP ক্যাশিং সিস্টেম হিসেবেও ব্যবহৃত হয়।
Nginx ইনস্টল করা
Ubuntu/Debian-এ Nginx ইনস্টল করতে:
sudo apt update sudo apt install nginxCentOS/RHEL-এ Nginx ইনস্টল করতে:
sudo yum install nginx
Nginx সার্ভার চালু এবং স্টপ করা
সার্ভার শুরু করা:
sudo systemctl start nginxসার্ভার স্টপ করা:
sudo systemctl stop nginxসার্ভার চালু হওয়া নিশ্চিত করা:
sudo systemctl enable nginx
Nginx কনফিগারেশন
Nginx কনফিগারেশন ফাইল সাধারণত /etc/nginx/nginx.conf বা /etc/nginx/sites-available/default (Ubuntu/Debian) থাকে। আপনি এখানে ওয়েব সাইট হোস্টিং, রিভার্স প্রক্সি, অথবা অন্যান্য কনফিগারেশন পরিবর্তন করতে পারেন।
ওয়েব পেজ পরীক্ষা করা
Nginx ইনস্টল করার পর, আপনার সার্ভারের আইপি অ্যাড্রেস বা ডোমেইন নাম ব্রাউজারে টাইপ করুন (যেমন http://localhost অথবা http://your_server_ip)। আপনি যদি Nginx এর ডিফল্ট পেজ দেখতে পান, তবে আপনার সার্ভার সফলভাবে কাজ করছে।
ডাটাবেস সার্ভার: MySQL এবং PostgreSQL
ডাটাবেস সার্ভার হলো সফটওয়্যার সিস্টেম যা ডেটা সংরক্ষণ এবং ব্যবস্থাপনা করতে ব্যবহৃত হয়। MySQL এবং PostgreSQL দুটি প্রধান রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS), যা লিনাক্স সিস্টেমে সাধারণত ব্যবহৃত হয়।
1. MySQL ডাটাবেস সার্ভার
MySQL হল একটি ওপেন সোর্স রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম যা সাধারণত ওয়েব অ্যাপ্লিকেশন এবং অন্যান্য ডাটাবেস-ভিত্তিক সিস্টেমে ব্যবহৃত হয়।
MySQL ইনস্টল করা
Ubuntu/Debian-এ MySQL ইনস্টল করতে:
sudo apt update sudo apt install mysql-serverCentOS/RHEL-এ MySQL ইনস্টল করতে:
sudo yum install mysql-server
MySQL সার্ভার চালু এবং স্টপ করা
সার্ভার শুরু করা:
sudo systemctl start mysqlসার্ভার স্টপ করা:
sudo systemctl stop mysqlসার্ভার চালু হওয়া নিশ্চিত করা:
sudo systemctl enable mysql
MySQL নিরাপত্তা কনফিগারেশন
MySQL ইনস্টলেশনের পর, নিরাপত্তা সেটআপ করার জন্য mysql_secure_installation স্ক্রিপ্ট চালানো প্রয়োজন।
sudo mysql_secure_installationএটি পাসওয়ার্ড সেট করা, অ্যানোনিমাস ইউজার মুছে ফেলা, ডিফল্ট ডাটাবেস সুরক্ষা ইত্যাদি করার জন্য সাহায্য করবে।
MySQL ব্যবহার শুরু করা
MySQL সার্ভারে লগইন করতে:
sudo mysql -u root -pএটি আপনাকে MySQL সার্ভারের প্রম্পটে নিয়ে যাবে, যেখানে আপনি SQL কমান্ড চালাতে পারেন।
2. PostgreSQL ডাটাবেস সার্ভার
PostgreSQL একটি ওপেন সোর্স রিলেশনাল ডাটাবেস সিস্টেম যা উচ্চ পারফরম্যান্স এবং ফিচার সমৃদ্ধ। এটি অনেক উন্নত বৈশিষ্ট্য প্রদান করে, যেমন সম্পূর্ণ এসকিউএল প্রোফাইলিং এবং ট্রানজেকশন সাপোর্ট।
PostgreSQL ইনস্টল করা
Ubuntu/Debian-এ PostgreSQL ইনস্টল করতে:
sudo apt update sudo apt install postgresql postgresql-contribCentOS/RHEL-এ PostgreSQL ইনস্টল করতে:
sudo yum install postgresql-server postgresql-contrib
PostgreSQL সার্ভার চালু এবং স্টপ করা
সার্ভার শুরু করা:
sudo systemctl start postgresqlসার্ভার স্টপ করা:
sudo systemctl stop postgresqlসার্ভার চালু হওয়া নিশ্চিত করা:
sudo systemctl enable postgresql
PostgreSQL ব্যবহার শুরু করা
PostgreSQL ইনস্টল করার পর, PostgreSQL কমান্ড লাইন টুল চালানোর জন্য psql ব্যবহার করা হয়।
PostgreSQL প্রম্পটে লগইন করা:
sudo -u postgres psql
এটি আপনাকে PostgreSQL ডাটাবেসে নিয়ে যাবে, যেখানে আপনি SQL কমান্ড রান করতে পারবেন।
সারসংক্ষেপ
- Apache এবং Nginx হল দুটি জনপ্রিয় ওয়েব সার্ভার যা সিস্টেমে ওয়েব অ্যাপ্লিকেশন এবং পেজ সরবরাহ করতে ব্যবহৃত হয়। Apache সিস্টেমে খুবই সাধারণ এবং বহুল ব্যবহৃত, তবে Nginx আরও দ্রুত এবং কম রিসোর্স ব্যবহার করে।
- MySQL এবং PostgreSQL হল দুটি প্রধান ডাটাবেস সার্ভার, যা ওয়েব অ্যাপ্লিকেশন এবং অন্যান্য সিস্টেমে ডেটা সংরক্ষণ এবং পরিচালনা করার জন্য ব্যবহৃত হয়।
- উভয় ওয়েব সার্ভার এবং ডাটাবেস সার্ভার সঠিক
ভাবে কনফিগার এবং নিরাপদভাবে পরিচালনা করা সিস্টেমের নিরাপত্তা এবং কার্যকারিতা নিশ্চিত করতে সহায়ক।
এই সার্ভারগুলির সঠিক সেটআপ এবং কনফিগারেশন আপনার সিস্টেমের স্থিতিশীলতা এবং স্কেলেবিলিটি উন্নত করবে।
FTP সার্ভার সেটআপ এবং ব্যবস্থাপনা
FTP (File Transfer Protocol) একটি নেটওয়ার্ক প্রোটোকল যা দুটি সিস্টেমের মধ্যে ফাইল স্থানান্তর করার জন্য ব্যবহৃত হয়। FTP সার্ভার সেটআপ এবং ব্যবস্থাপনা একটি সিস্টেম অ্যাডমিনিস্ট্রেটরের জন্য গুরুত্বপূর্ণ কাজ, বিশেষ করে যখন আপনি নেটওয়ার্কে ফাইল শেয়ারিং এবং স্থানান্তর করতে চান। FTP সার্ভার সেটআপ করার জন্য বেশ কিছু জনপ্রিয় সফটওয়্যার রয়েছে, যেমন vsftpd, ProFTPD, এবং Pure-FTPd। এই টিউটোরিয়ালে আমরা vsftpd (Very Secure FTP Daemon) ব্যবহার করে FTP সার্ভার সেটআপ এবং ব্যবস্থাপনা দেখব।
1. vsftpd ইনস্টল করা
vsftpd হল একটি জনপ্রিয়, নিরাপদ এবং সহজে কনফিগারযোগ্য FTP সার্ভার সফটওয়্যার। এটি নিরাপত্তার দিক থেকে খুব শক্তিশালী এবং অনেক সিস্টেমে এটি ডিফল্ট FTP সার্ভার হিসেবে ব্যবহৃত হয়।
১.১: vsftpd ইনস্টল করা
Ubuntu/Debian-এ:
sudo apt update
sudo apt install vsftpdCentOS/RHEL-এ:
sudo yum install vsftpdFedora-এ:
sudo dnf install vsftpd১.২: vsftpd সার্ভিস চালু করা
vsftpd ইনস্টল করার পর, আপনাকে সার্ভারটি চালু এবং সিস্টেম স্টার্টআপে চালু করতে হবে।
sudo systemctl start vsftpd
sudo systemctl enable vsftpdvsftpd সঠিকভাবে চলছে কিনা তা নিশ্চিত করতে:
sudo systemctl status vsftpd2. vsftpd কনফিগারেশন
vsftpd কনফিগারেশন ফাইলটি **/etc/vsftpd.conf**। এই ফাইলটি সম্পাদনা করে আপনি FTP সার্ভারের বিভিন্ন সেটিংস কনফিগার করতে পারেন।
২.১: vsftpd কনফিগারেশন ফাইল সম্পাদনা
sudo nano /etc/vsftpd.confনীচে কিছু সাধারণ কনফিগারেশন অপশন উল্লেখ করা হলো:
anonymous_enable=NO: এটি অ্যানোনিমাস লগইন নিষিদ্ধ করবে। এই সেটিংটি নিরাপত্তার জন্য গুরুত্বপূর্ণ।anonymous_enable=NOlocal_enable=YES: এটি লোকাল ব্যবহারকারীদের FTP সার্ভারে লগইন করতে অনুমতি দেয়।local_enable=YESwrite_enable=YES: এটি ব্যবহারকারীদের ফাইল আপলোড করতে এবং মডিফাই করতে অনুমতি দেয়।write_enable=YESchroot_local_user=YES: এটি ব্যবহারকারীকে তাদের হোম ডিরেক্টরিতে সীমাবদ্ধ রাখে, যাতে তারা শুধুমাত্র তাদের নিজের ফাইল অ্যাক্সেস করতে পারে।chroot_local_user=YESpasv_enable=YESএবংpasv_min_port=10000এবংpasv_max_port=10100: এটি প্যাসিভ মোডে FTP সার্ভার পরিচালনার জন্য নির্দিষ্ট পোর্ট রেঞ্জ সংরক্ষণ করে।pasv_enable=YES pasv_min_port=10000 pasv_max_port=10100
২.২: vsftpd কনফিগারেশন পরিবর্তন পরবর্তী রিস্টার্ট
কনফিগারেশন পরিবর্তন করার পর সার্ভিস রিস্টার্ট করতে হবে:
sudo systemctl restart vsftpd3. ফায়ারওয়াল কনফিগারেশন
FTP সার্ভারের জন্য, ফায়ারওয়াল সেটআপ করা অপরিহার্য, যাতে নির্দিষ্ট পোর্টের ট্রাফিক অনুমতি পাওয়া যায়।
৩.১: ufw (Uncomplicated Firewall) ব্যবহার করে পোর্ট খোলা
Ubuntu/Debian-এ ufw ফায়ারওয়াল ব্যবহার করলে, আপনাকে পোর্ট 21 (FTP) এবং 10000-10100 (Passive FTP) খুলতে হবে।
sudo ufw allow 21/tcp
sudo ufw allow 10000:10100/tcpএর পর, ফায়ারওয়াল রুলগুলো পুনরায় লোড করতে:
sudo ufw reload৩.২: firewalld ব্যবহার করে পোর্ট খোলা (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=10000-10100/tcp
sudo firewall-cmd --reload4. ব্যবহারকারী তৈরি এবং FTP অ্যাক্সেস দেওয়া
আপনি যেসব ব্যবহারকারীকে FTP সার্ভারে অ্যাক্সেস দিতে চান তাদের জন্য ব্যবহারকারী তৈরি করতে পারেন এবং তাদের হোম ডিরেক্টরি নির্ধারণ করতে পারেন।
৪.১: নতুন ব্যবহারকারী তৈরি করা
sudo useradd -m username
sudo passwd usernameএখানে, username হলো নতুন ব্যবহারকারীর নাম, এবং আপনাকে passwd কমান্ড দিয়ে পাসওয়ার্ড সেট করতে হবে।
৪.২: ব্যবহারকারী FTP ব্যবহার করতে পারবে এমন নিশ্চিত করা
যেহেতু chroot_local_user=YES কনফিগারেশনটি স্থানীয় ব্যবহারকারীকে তাদের হোম ডিরেক্টরির মধ্যে সীমাবদ্ধ করে, সুতরাং নতুন ব্যবহারকারীও কেবল তাদের হোম ডিরেক্টরিতে প্রবেশ করতে পারবে।
5. FTP ক্লায়েন্ট দিয়ে সংযোগ
FTP সার্ভারের সাথে সংযোগ স্থাপন করতে আপনি কমান্ড লাইন FTP ক্লায়েন্ট ব্যবহার করতে পারেন অথবা একটি গ্রাফিকাল FTP ক্লায়েন্ট যেমন FileZilla ব্যবহার করতে পারেন।
৫.১: কমান্ড লাইন FTP ক্লায়েন্ট ব্যবহার করে সংযোগ
ftp server_ip_addressএটি server_ip_address এ সংযোগ করতে সাহায্য করবে। আপনি লগইন করতে হলে ব্যবহারকারীর নাম এবং পাসওয়ার্ড প্রম্পট পাবেন।
6. FTP সার্ভারের নিরাপত্তা
FTP নিজেই নিরাপদ নয়, কারণ এটি ডেটা এবং পাসওয়ার্ড প্লেইন টেক্সটে পাঠায়। সুতরাং FTPS (FTP Secure) বা SFTP (SSH File Transfer Protocol) ব্যবহারের জন্য সুপারিশ করা হয়।
৬.১: SFTP সেটআপ করা
SFTP সেটআপ করতে SSH এর সাথে সংযুক্ত হওয়া প্রয়োজন এবং এটি sshd সার্ভিস ব্যবহার করে সুরক্ষিত ফাইল স্থানান্তর নিশ্চিত করে।
sudo systemctl start ssh
sudo systemctl enable sshএটি FTP এর চেয়ে বেশি নিরাপদ বিকল্প, কারণ এটি SSH ব্যবহার করে ফাইল ট্রান্সফার করে।
সারসংক্ষেপ
FTP সার্ভার vsftpd ব্যবহার করে সেটআপ করা একটি সহজ এবং নিরাপদ পদ্ধতি, যা LINUX এবং UNIX সিস্টেমে ফাইল শেয়ারিং এবং স্থানান্তরের জন্য ব্যবহৃত হয়। vsftpd সার্ভারের মাধ্যমে আপনি FTP সার্ভার কনফিগার করতে পারেন, ব্যবহারকারী তৈরি করতে পারেন, ফায়ারওয়াল কনফিগারেশন সেট করতে পারেন এবং নির্দিষ্ট সময়ে নিরাপত্তা নিশ্চিত করার জন্য FTPS বা SFTP ব্যবহার করতে পারেন।
ফাইল শেয়ারিং: NFS এবং Samba
ফাইল শেয়ারিং সিস্টেমগুলি লিনাক্স বা ইউনিক্স সিস্টেমে অনেক গুরুত্বপূর্ণ, বিশেষ করে যখন একাধিক কম্পিউটার বা সার্ভার একই নেটওয়ার্কে কাজ করে এবং তাদের মধ্যে ডেটা শেয়ার করতে হয়। NFS (Network File System) এবং Samba দুটি জনপ্রিয় ফাইল শেয়ারিং পদ্ধতি, তবে তারা ভিন্ন ভিন্ন প্রোটোকল ব্যবহার করে এবং বিভিন্ন পরিবেশে ব্যবহৃত হয়। নিচে NFS এবং Samba এর মধ্যে পার্থক্য, ব্যবহারের পদ্ধতি এবং কনফিগারেশন পদ্ধতি আলোচনা করা হয়েছে।
1. NFS (Network File System)
NFS একটি প্রোটোকল যা লিনাক্স/ইউনিক্স সিস্টেমে ব্যবহৃত হয় ফাইল শেয়ার করার জন্য। এটি একটি ক্লায়েন্ট-সার্ভার ফাইল শেয়ারিং সিস্টেম যেখানে একটি সিস্টেম বা সার্ভার একটি ফাইল সিস্টেম রপ্তানি (export) করে এবং অন্য সিস্টেমগুলি সেই ফাইল সিস্টেমে অ্যাক্সেস করতে পারে।
NFS-এর বৈশিষ্ট্য:
- Linux/UNIX এর জন্য আদর্শ: NFS মূলত লিনাক্স এবং ইউনিক্স সিস্টেমে ব্যবহৃত হয়, তবে কিছু পরিপূরক সফটওয়্যার দিয়ে Windows-এও ব্যবহার করা যায়।
- একই নেটওয়ার্কে ফাইল শেয়ারিং: এটি একই নেটওয়ার্কে থাকা ক্লায়েন্টদের মধ্যে ফাইল শেয়ার করতে ব্যবহৃত হয়।
- ফাইল অ্যাক্সেস: ক্লায়েন্ট সিস্টেম গুলি সরাসরি ফাইল সিস্টেম অ্যাক্সেস করতে পারে, যেমন তারা স্থানীয় ফাইল সিস্টেম অ্যাক্সেস করছে।
NFS কনফিগারেশন:
- NFS সার্ভার ইনস্টল করা:
Ubuntu/Debian:
sudo apt update sudo apt install nfs-kernel-serverCentOS/RHEL:
sudo yum install nfs-utils
ফাইল শেয়ার করার জন্য ডিরেক্টরি তৈরি করা:
sudo mkdir /mnt/nfs_share sudo chmod 777 /mnt/nfs_shareNFS শেয়ার কনফিগার করা:
/etc/exportsফাইলে ফাইল শেয়ারের তথ্য যুক্ত করুন:sudo nano /etc/exportsতারপর এই লাইনটি যোগ করুন:
/mnt/nfs_share *(rw,sync,no_subtree_check)NFS সার্ভার রিস্টার্ট করা:
sudo systemctl restart nfs-kernel-server- NFS শেয়ার মাউন্ট করা (ক্লায়েন্ট সাইড):
ক্লায়েন্ট সিস্টেমে NFS শেয়ার মাউন্ট করার জন্য:
sudo mount -t nfs <server-ip>:/mnt/nfs_share /mnt
2. Samba
Samba হল একটি ফাইল শেয়ারিং সিস্টেম যা মূলত Windows এবং Linux/UNIX সিস্টেমের মধ্যে ফাইল শেয়ার করতে ব্যবহৃত হয়। এটি SMB (Server Message Block) প্রোটোকল ব্যবহার করে, যা Windows সিস্টেমে ফাইল শেয়ারিং প্রোটোকল হিসেবে ব্যবহৃত হয়।
Samba-এর বৈশিষ্ট্য:
- Windows এবং Linux এর মধ্যে ফাইল শেয়ারিং: Samba প্রধানত Windows সিস্টেমের সাথে ফাইল শেয়ারিং করার জন্য ব্যবহৃত হয়।
- Windows এর সাথে সামঞ্জস্যপূর্ণ: SMB প্রোটোকলটি Windows-এর ফাইল শেয়ারিং প্রোটোকলের সাথে সামঞ্জস্যপূর্ণ।
- কাস্টম ব্যবহারকারী অনুমতি: Samba ব্যবহারকারীদের জন্য পাসওয়ার্ড এবং ফাইল শেয়ার করার সময় কাস্টম অনুমতি প্রদান করার সুযোগ দেয়।
Samba কনফিগারেশন:
- Samba ইনস্টল করা:
Ubuntu/Debian:
sudo apt update sudo apt install sambaCentOS/RHEL:
sudo yum install samba samba-client samba-common
ফাইল শেয়ার করার জন্য ডিরেক্টরি তৈরি করা:
sudo mkdir /mnt/samba_share sudo chmod 777 /mnt/samba_shareSamba কনফিগারেশন ফাইল এডিট করা:
/etc/samba/smb.confফাইলটি এডিট করুন:sudo nano /etc/samba/smb.confএরপর এই সেকশনটি যোগ করুন:
[shared] path = /mnt/samba_share read only = no browsable = yes guest ok = yesSamba ব্যবহারকারী তৈরি করা (যদি প্রয়োজন হয়):
sudo smbpasswd -a usernameSamba সার্ভিস রিস্টার্ট করা:
sudo systemctl restart smbdSamba শেয়ার মাউন্ট করা (Windows ক্লায়েন্ট):
Windows ক্লায়েন্টে Samba শেয়ার এক্সেস করতে,\\<server-ip>\sharedব্যবহার করুন।উদাহরণ:
\\192.168.1.100\shared
NFS এবং Samba এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | NFS | Samba |
|---|---|---|
| প্রোটোকল | NFS (Network File System) | SMB (Server Message Block) |
| প্ল্যাটফর্ম | Linux/UNIX-এ ব্যবহৃত | Windows এবং Linux/UNIX-এ ব্যবহৃত |
| প্রধান ব্যবহার | মূলত Linux/UNIX সিস্টেমে ব্যবহৃত | Linux/Windows সিস্টেমের মধ্যে ফাইল শেয়ারিং |
| অ্যাথেনটিকেশন | NFS পাসওয়ার্ড ছাড়া কাজ করে, তবে IP ঠিকানা ভিত্তিক অ্যাক্সেস নিয়ন্ত্রণ। | Samba পাসওয়ার্ড এবং ব্যবহারকারী ভিত্তিক নিরাপত্তা সরবরাহ করে। |
| পারফরম্যান্স | দ্রুত, কারণ এটি স্থানীয় ফাইল সিস্টেমের মতো কাজ করে | তুলনামূলকভাবে ধীর হতে পারে, কারণ SMB প্রোটোকলটি অতিরিক্ত অ্যাভয়েস নির্ভর। |
| ফাইল সিস্টেম | NFS শুধুমাত্র Unix/Linux ফাইল সিস্টেমের জন্য আদর্শ | Samba Windows ফাইল সিস্টেমের জন্য আদর্শ। |
সারসংক্ষেপ
NFS এবং Samba দুটি শক্তিশালী ফাইল শেয়ারিং প্রোটোকল, তবে NFS মূলত Linux/UNIX সিস্টেমে ব্যবহৃত হয় এবং Samba Windows সিস্টেমের সাথে ফাইল শেয়ার করার জন্য আদর্শ। আপনি যদি Windows এবং Linux বা UNIX সিস্টেমের মধ্যে ফাইল শেয়ার করতে চান তবে Samba একটি ভাল পছন্দ, আর যদি আপনি শুধুমাত্র Linux/UNIX সিস্টেমের মধ্যে শেয়ার করতে চান, তবে NFS একটি কার্যকরী পছন্দ।
Read more