LEMP সার্ভার যেভাবে সেটাপ করবেন

এঞ্জিনেক্স ওয়েব সার্ভার ইন্সটলেশনঃ

sudo apt-get update কমান্ড দিয়ে অপারেটিং সিস্টেমের প্যাকেজ রিপোজিটরি আপডেট / হালনাগাদ করে নিন। নিচের কমান্ড দিয়ে এঞ্জিনেক্স ওয়েব সার্ভার ইন্সটল করুন।

sudo apt-get install nginx

সার্ভার ফায়ারওয়ালে এঞ্জিনেক্স যাতে পোর্ট ৮০ ব্যবহার করতে পারে সে জন্য পরবর্তী কমান্ড নিচের কমান্ড দিন।

sudo ufw allow 'Nginx HTTP'

ফায়ারওয়াল ‘Nginx HTTP’ কে এলাউ করেছে কিনা জানতে নিচের কমান্ড দিন।

sudo ufw status

সার্ভারের IP এড্রেস ওয়েব ব্রাউজার থেকে এক্সেস করুন, এঞ্জিনেক্স এর ডিফল্ট পেজ দেখতে পাবেন।

MySQL ইন্সটলেশনঃ

MySQL সার্ভার ইন্সটল করার জন্য নিচের কমান্ড দিন।

sudo apt-get install mysql-server

MySQL ইন্সটলেশনের সময় MySQL সার্ভারের রুট এক্সেসের জন্য পাসওয়ার্ড সেট করুন।

PHP ইন্সটলেশনঃ

PHP এবং PHP এর MySQL এক্সটেনশন ইন্সটল করতে নিচের কমান্ড দিন।

sudo apt-get install php-fpm php-mysql

নিচের কমান্ড দিয়ে php-fpm এর কনফিগারেশন ফাইল ওপেন করুন এবং cgi.fix_pathinfo=0 সেট করুন।

sudo nano /etc/php/7.0/fpm/php.ini

নিচের কমান্ড দিয়ে php-fpm রিস্টার্ট করুন।

sudo service restart php7.0-fpm

এই এপ দিয়ে এঞ্জিনেক্স কনফিগারেশন জেনারেট করুন এবং /etc/nginx/sites-available ফোল্ডারে কনফিগারেশন সেভ করুন। এরপর নিচের কমান্ড দিয়ে /etc/nginx/sites-enabled ফোল্ডারে সিমলিংক তৈরি করুন। your.conf আপনার কনফিগারেশন ফাইলের নাম দিয়ে রিপ্লেস করুন।

sudo ln -s /etc/nginx/sites-available/your.conf /etc/nginx/sites-enabled/your.conf

sudo nginx -t কমান্ড দিয়ে কনফিগারেশন চেক করুন, যদি কোন এরর না থাকে তাহলে sudo service nginx restart কমান্ড দিয়ে এঞ্জিনেক্স সার্ভার রিস্টার্ট করুন।

Composer ?

পিএইচপি এর প্যাকেজ/ডিপেন্ডেসি ম্যানেজমেন্ট এর একটি জনপ্রিয় টুল এর নাম “কম্পোজার”। এটি একটি ওপেনসোর্স টুল।

যেভাবে ইন্সটল করবেনঃ

১। মেশিনে / সার্ভারে প্রথমেই পিএইচপি (PHP 5.3.2+) ইন্সটল করা থাকতে হবে।

২। উইন্ডোজ অপারেটিং সিস্টেমের জন্য ইন্সটলার ডাউনলোড করে ইন্সটল করুন। *nix এর জন্য কমান্ড লাইনে / টার্মিলানে নিচের কমান্ডটি দিয়ে ইন্সটল করুন। *nix এর জন্য curl ইন্সটল করা থাকতে হবে।

sudo curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

৩। কমান্ড লাইন / টার্মিনালে নিচের কমান্ডটি দিয়ে গ্লোবাল রিপো https://packagist.org সেট করে দিন, এতে প্যাকেজ ইন্সটল / আপডেটের সময় কম সময় লাগবে।

composer config --global repo.packagist composer https://packagist.org

৪। টেস্ট করতে কমান্ডলাইনে composer -v কমান্ড দিয়ে দেখুন।

যেভাবে সার্ভারে সোয়াপ যুক্ত করবেন

লিনাক্স কার্নেল ভিত্তিক অপারেটিং সিস্টেমের ফিজিক্যাল ম্যামোরি (RAM) এর স্পেস এলোকেট / ফুল হয়ে গেলে ফিজিক্যাল ম্যামোরিতে লোড করা কিছু ডাটা সরিয়ে অন্য যায়গায় (ভার্চুয়াল মেমেরি) রাখে। এই ভার্চুয়াল মেমোরি “সোয়াপ” /  “সোয়াপ স্পেস” নামে পরিচিত।

যেভাবে সোয়াপ স্পেস যুক্ত করবেনঃ 

এই কোড উবুন্টুতে টেস্ট করা হয়েছে।

নিচের কোড টুকু আপনার সার্ভারে swap.sh নামে সেভ করুন।

#!/bin/bash
echo "Size of swap file (GB):"
read size
sudo fallocate -l ${size}G /swapfile
ls -lh /swapfile
sudo chmod 600 /swapfile
ls -lh /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
free -m
echo "/swapfile none swap sw 0 0" >> /etc/fstab
cat /proc/sys/vm/swappiness
sudo sysctl vm.swappiness=10
echo "vm.swappiness=10" >> /etc/sysctl.conf
cat /proc/sys/vm/vfs_cache_pressure
sudo sysctl vm.vfs_cache_pressure=50
echo "vm.vfs_cache_pressure=50" >> /etc/sysctl.conf
free -m
echo "Viola , Job Done !"
view raw swap.sh hosted with ❤ by GitHub

এর পর টার্মিনালে নিচের কমান্ড লিখুন

sudo bash swap.sh

এবার আপনার সোয়াপ ফাইলের সাইজ উল্লেখ করুন (গিগা হিসাবে)। এর পর সিস্টেম রিবুট করুন। `free -m` কমাড দিয়ে দেখুন আপনার সিস্টেমের সোয়াপ মেমোরি দেখাচ্ছে কিনা।  

পিএইচপি ৭ এ যেভাবে আপগ্রেড করবেন

পিএইচপি ৭ রিলিজ হয়েছে গত ৩ ডিসেম্বর ২০১৫ তে , পিএইচপির এই ভার্শনের সবচাইতে আলোচিত ব্যাপার হচ্ছে স্পিড। এই পোস্টে দেখানো হয়েছে কিভাবে এ্যপাচি / এঞ্জিনেক্স সার্ভারে পিএইচপি ৭ ব্যবহার / যুক্ত করতে  হবে।

এই প্রক্রিয়া উবুন্টু ১৪.০৪ এ টেস্ট করা হয়েছে।

যা যা লাগবেঃ

এ্যপাচি / এঞ্জিনেক্স সার্ভার (পিএইচপি ৫.এক্স) , রুট এক্সেস।

যেভাবে করবেনঃ

প্রথমেই পিএইচপি ৭.০ উবুন্টুর পার্সোনাল প্যাকেজ আর্কাইভে যুক্ত করতে হবে। এর পর লোকাল প্যাকেজ ক্যাশে নতুন যুক্ত করা প্যাকেজ ইনক্লুড করতে হবে।

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update

সার্ভার এপ্যাচি হলেঃ

sudo apt-get install php7.0-cli
sudo apt-get install php7.0
sudo apt-get install php7.0-mysql
sudo service apache restart

এপ্যাচি সার্ভারে পিএইচপি ৭.০ এর কনফিগারেশন ফাইল পাওয়া যাবে ‘/etc/php/7.0’ এই পাথে।

সার্ভার এঞ্জিনেক্স হলেঃ

sudo apt-get install php7.0-cli
sudo apt-get install php7.0-fpm 
sudo apt-get install php7.0-mysql

এবার এঞ্জিনেক্স এর ডিফল্ট কনফিগারেশনে পিএইচপি এর সকেট পাথ পরিবর্তন করতে হবে। “/var/run/php5-fpm.sock” এর পরিবর্তে “/var/run/php/php7.0-fpm.sock” এটি ব্যবহার করুন। এর পর এঞ্জিনেক্স সার্ভার রিস্টার্ট করুন।

sudo service nginx restart

যেভাবে বুঝবেন পিএইচপি ৭ ইন্সটল হয়েছেঃ

php -v

পিএইচপি ৫ যেভাবে রিমুভ করবেঃ

এঞ্জিনেক্সঃ

apt-get purge php5-fpm && apt-get --purge autoremove

এপ্যাচিঃ

apt-get purge php5 && apt-get --purge autoremove

ওয়ার্ডপ্রেস সিকিউরিটি ট্রিকস

প্লাগিন আপডেট / ইন্সটল বন্ধ করতে wp-config.php তে নিচের লাইন লিখুন

define('DISALLOW_FILE_MODS',true);

কোড এডিটর অফ করে দিতে wp-config.php তে নিচের লাইন লিখুন

define( 'DISALLOW_FILE_EDIT', true);

wp-config.php তে এক্সেস রেস্টিক্টেড করুন , এর জন্য .htaccess এ নিচের লাইনগুলো লিখুন

# protect wpconfig.php
<files wp-config.php>
    order allow,deny
    deny from all
</files>

স্ক্রিপ্ট ইঞ্জেকশন থেকে বাঁচার জন্য .htaccess এ নিচের লাইনগুলো লিখুন

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

ফাইল পারমিশন ফিক্স করতে নিচের কোড টি .php এক্সটেনশন দিয়ে সেভ করে পর পর ২ বার ভিজিট করুন

<!DOCTYPE HTML>
<html>
<body>
<head><title>WP File Permission Changer</title></head>
<?php
/*
Script Name: File Permission Changer
Version: 1.0
Author: Saiful Islam
Author URI: http://saiful.im/
License: GPL2
*/
function c_f_p($file,$per){
if (file_exists($file)) {
$c_f=substr(decoct(fileperms("$file")),2);
$per1=octdec($per);
if($per!==$c_f){
@chmod($file, $per1);
$c_f=substr(decoct(fileperms("$file")),2);
echo "<tr><td>$file</td><td><font color=\"#FF0000\">$c_f</font></td></tr>";
}
else {echo "<tr><td>$file</td><td><font color=\"#008800\">$c_f</font></td></tr>";}
}
}
//echo substr(decoct(fileperms("xx.php")),2);
echo '<table border="1"><tr><td>File Name</td><td>Status</td></tr>';
c_f_p(".htaccess","0404");
c_f_p("wp-config.php","0400");
c_f_p("index.php","0400");
c_f_p("wp-blog-header.php","0400");
c_f_p("../","705");
c_f_p("wp-admin/","705");
c_f_p("wp-includes/","705");
c_f_p("wp-content/","705");
echo '<table>';
?>
</body>
</html>

Malicious URL রিকোয়েস্ট থেকে সাইট বাঁচাতে নিচের কোড কপি করে সেভ করুন প্লাগিন হিসাবে।

<?php
/*
Plugin Name: Malicious URL Block
Plugin URI: http://saiful.im
Description: Protect WordPress Against Malicious URL Requests
Author URI: http://saiful.im
Author: Saiful Isalm
Version: 0.1
*/
global $user_ID;
if($user_ID) {
if(!current_user_can('level_10')) {
if (strlen($_SERVER['REQUEST_URI']) > 255 ||
strpos($_SERVER['REQUEST_URI'], "eval(") ||
strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
strpos($_SERVER['REQUEST_URI'], "SELECT+*") ||
strpos($_SERVER['REQUEST_URI'], "base64")) {
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
}
}
}
?>


Notice: ob_end_flush(): failed to send buffer of zlib output compression (0) in /home/saiful/public_html/wp-includes/functions.php on line 5464