আমার ওয়ার্ডপ্রেস পারফরম্যান্স এবং ক্যাচিং স্ট্যাক
নিম্ন থেকে মাঝের পরিসরের একক সার্ভার বা ভিপিএসের জন্য এটি সেরা ওয়ার্ডপ্রেস পারফরম্যান্স স্ট্যাক। আমি মাঝারি পরিসীমাটিকে প্রায় এক জি মেমরি এবং মোটামুটি দ্রুত ড্রাইভ সহ একক কোর হিসাবে শ্রেণিবদ্ধ করছি।
সার্ভার স্ট্যাক
- লিনাক্স - হয় দেবিয়ান লেনি বা উবুন্টু
- এনগিনেক্স - বিপরীত প্রক্সি স্ট্যাটিক ফাইল ক্যাশে হিসাবে কনফিগার করা হয়েছে
- অ্যাপাচি - অ্যাপাচি বিকল্প পোর্টে এনগিনেক্স দ্বারা লোড করা পিএইচপি পরিচালনা করবে
- মাইএসকিউএল - ডাব্লুপি দ্বারা প্রয়োজনীয়, আপনার সর্বশেষতম স্থিতিশীল সংস্করণ চলছে কিনা তা নিশ্চিত করুন
- পিএইচপি - 5.2 বা 5.3 শাখার সর্বশেষ স্থিতিশীল সংস্করণ
পিএইচপি ক্যাশে
- এপিসি - এটি এমএমএপ মেমরি এবং কমপক্ষে 128 এম এর shm আকারের সাথে কনফিগার করুন
ওয়ার্ডপ্রেস পারফরম্যান্স প্লাগিন স্ট্যাক
ডাব্লু 3 মোট ক্যাশে দিয়ে আমরা পৃষ্ঠা ক্যাশে এবং মিনিফাইটির জন্য ডিস্ক ব্যবহার করছি কারণ এনগিনেক্স আমাদের স্ট্যাটিক ফাইলগুলি খুব দ্রুত পরিবেশন করবে।
স্ট্যাটিক ফাইলগুলি পরিবেশন করতে Nginx কীভাবে কনফিগার করবেন এবং পিএইচপি অ্যাপাচে পাস করবেন
একা অ্যাপাচি ব্যবহার করে সমস্যা হ'ল এটি একটি সংযোগ খোলে এবং স্ট্যাটিক ফাইলের জন্য এমনকি প্রতিটি অনুরোধে পিএইচপি হিট করে। এটি সংযোগগুলি অপচয় করে কারণ অ্যাপাচি এগুলিকে উন্মুক্ত রাখবে এবং আপনার প্রচুর ট্র্যাফিক থাকলে আপনার সংযোগগুলি ব্যবহার না করা সত্ত্বেও তা বন্ধ হয়ে যাবে।
ডিফল্টরূপে অ্যাপাচি 80 পোর্টে অনুরোধের জন্য শোনায় যা ডিফল্ট ওয়েব পোর্ট। প্রথমে আমরা 8080 পোর্টে শোনার জন্য আমাদের অ্যাপাচি কনফ এবং ভার্চুয়াল হোস্ট ফাইলগুলিতে পরিবর্তন করতে যাচ্ছি।
অ্যাপাচি কনফিগার
httpd.conf
কিপএলাইভ বন্ধ রাখুন
ports.conf
NameVirtualHost *:8080
Listen 8080
ভার্চুয়াল হোস্ট প্রতি সাইট
<VirtualHost 127.0.0.1:8080>
ServerAdmin info@yoursite.com
ServerName yoursite.com
ServerAlias www.yoursite.com
DocumentRoot /srv/www/yoursite.com/public_html/
ErrorLog /srv/www/yoursite.com/logs/error.log
CustomLog /srv/www/yoursite.com/logs/access.log combined
</VirtualHost>
আপনার মোডগুলিতে আপনার দর্শনার্থীদের আসল আইপি ঠিকানা থাকবে তাই আপনার মোড_আরপাফ ইনস্টল করা উচিত । যদি না হয় তবে আপনার লগগুলিতে 127.0.0.1 এর উত্সপ্রাপ্ত আইপি ঠিকানা হিসাবে থাকবে।
এনগিনেক্স কনফিগারেশন
ডেবিয়ানে আপনি ইনস্টল করতে সংগ্রহস্থলগুলি ব্যবহার করতে পারেন তবে সেগুলিতে কেবল 0.6.33 সংস্করণ রয়েছে। পরবর্তী সংস্করণ ইনস্টল করতে আপনাকে লেনি ব্যাকপোর্ট প্যাকেজ যুক্ত করতে হবে
$ nano /etc/apt/sources.list
এই লাইনটি ফাইলটিতে যুক্ত করুন deb http://www.backports.org/debian lenny-backports main
$ nano /etc/apt/preferences
ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করুন:
Package: nginx
Pin: release a=lenny-backports
Pin-Priority: 999
প্যাকেজগুলি যাচাই করতে এবং আপনার সিস্টেমের প্যাকেজ ডাটাবেস আপডেট করতে ব্যাকপোর্টস.আর্গ থেকে কীটি আমদানি করতে নিম্নলিখিত কমান্ডগুলি জারি করুন:
$ wget -O - http://backports.org/debian/archive.key | apt-key add -
$ apt-get update
এখন অ্যাপটি-গেট দিয়ে ইনস্টল করুন
apt-get install nginx
উত্স থেকে সংকলনের চেয়ে এটি অনেক সহজ।
Nginx কনফার্ট এবং সার্ভার ফাইল কনফিগার
nginx.conf
user www-data;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
client_body_temp_path /var/lib/nginx/body 1 2;
gzip_buffers 32 8k;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_comp_level 6;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/html text/css image/x-icon
application/x-javascript application/javascript text/javascript application/atom+xml application/xml ;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
এখন আপনাকে আপনার এনগিনেক্স ভার্চুয়াল হোস্টিং সেট আপ করতে হবে। সাইট-উপলভ্য ডিরেক্টরিতে কোনও ফাইলের সাথে লিঙ্কযুক্ত প্রতিটি ভি হোস্ট সিমের সাথে সাইট-সক্ষম পদ্ধতিটি ব্যবহার করতে চাই।
$ mkdir /etc/nginx/sites-available
$ mkdir /etc/nginx/sites-enabled
$ touch /etc/nginx/sites-available/yourservername.conf
$ touch /etc/nginx/sites-available/default.conf
$ ln -s /etc/nginx/sites-available /etc/nginx/sites-enabled
$ nano /etc/nginx/sites-enabled/default.conf
default.conf
বিঃদ্রঃ:
নিম্নলিখিত ফাইলগুলিতে স্থির ক্যাশে সেটিংস কেবল তখনই কাজ করবে যদি এনগিনেক্স প্রক্সি ক্যাশে ইন্টিগ্রেটার প্লাগইন সক্ষম থাকে।
proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=staticfilecache:180m max_size=500m;
proxy_temp_path /var/lib/nginx/proxy;
proxy_connect_timeout 30;
proxy_read_timeout 120;
proxy_send_timeout 120;
#IMPORTANT - this sets the basic cache key that's used in the static file cache.
proxy_cache_key "$scheme://$host$request_uri";
upstream wordpressapache {
#The upstream apache server. You can have many of these and weight them accordingly,
#allowing nginx to function as a caching load balancer
server 127.0.0.1:8080 weight=1 fail_timeout=120s;
}
প্রতি ওয়ার্ডপ্রেস সাইট কনফ (মাল্টি সাইটের জন্য আপনার কেবল একটি ভোস্টের প্রয়োজন হবে)
server {
#Only cache 200 responses, and for a default of 20 minutes.
proxy_cache_valid 200 20m;
#Listen to your public IP
listen 80;
#Probably not needed, as the proxy will pass back the host in "proxy_set_header"
server_name www.yoursite.com yoursite.com;
access_log /var/log/nginx/yoursite.proxied.log;
# "combined" matches apache's concept of "combined". Neat.
access_log /var/log/apache2/nginx-access.log combined;
# Set the real IP.
proxy_set_header X-Real-IP $remote_addr;
# Set the hostname
proxy_set_header Host $host;
#Set the forwarded-for header.
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
# If logged in, don't cache.
if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
set $do_not_cache 1;
}
proxy_cache_key "$scheme://$host$request_uri $do_not_cache";
proxy_cache staticfilecache;
proxy_pass http://wordpressapache;
}
location ~* wp\-.*\.php|wp\-admin {
# Don't static file cache admin-looking things.
proxy_pass http://wordpressapache;
}
location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
# Cache static-looking files for 120 minutes, setting a 10 day expiry time in the HTTP header,
# whether logged in or not (may be too heavy-handed).
proxy_cache_valid 200 120m;
expires 864000;
proxy_pass http://wordpressapache;
proxy_cache staticfilecache;
}
location ~* \/[^\/]+\/(feed|\.xml)\/? {
# Cache RSS looking feeds for 45 minutes unless logged in.
if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
set $do_not_cache 1;
}
proxy_cache_key "$scheme://$host$request_uri $do_not_cache";
proxy_cache_valid 200 45m;
proxy_cache staticfilecache;
proxy_pass http://wordpressapache;
}
location = /50x.html {
root /var/www/nginx-default;
}
# No access to .htaccess files.
location ~ /\.ht {
deny all;
}
}
স্ব হোস্টেড সিডিএন কনফ
আপনার স্ব-হোস্ট করা সিডিএন কনফের জন্য আপনাকে কেবল প্রক্সি পাস ছাড়াই স্থির ফাইলগুলি পরিবেশন করতে এটি সেট আপ করতে হবে
server {
proxy_cache_valid 200 20m;
listen 80;
server_name yourcdndomain.com;
access_log /srv/www/yourcdndomain.com/logs/access.log;
root /srv/www/yourcdndomain.com/public_html/;
proxy_set_header X-Real-IP $remote_addr;
location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {
# Cache static-looking files for 120 minutes, setting a 10 day expiry time in the HTTP header,
# whether logged in or not (may be too heavy-handed).
proxy_cache_valid 200 120m;
expires 7776000;
proxy_cache staticfilecache;
}
location = /50x.html {
root /var/www/nginx-default;
}
# No access to .htaccess files.
location ~ /\.ht {
deny all;
}
}
এখন সার্ভারগুলি শুরু করুন
$ /etc/init.d/apache2 restart
$/etc/init.d/nginx start
বেঞ্চমার্ক ফলাফল
অ্যাপাচি বেঞ্চে এই সেটআপটি তাত্ত্বিকভাবে প্রতি সেকেন্ডে 1833.56 টি অনুরোধ সরবরাহ করতে পারে
$ ab -n 1000 -c 20 http://yoursite.com/