سلام
این روش برای سایت های بزرگ که مراجعه کننده زیادی دارند و همزمان از صفحات دیتامیک و استاتیک استفاده می کنند می تونه خیلی مفید باشه . دستورات بنده برای centos7 هست .
تست خودم تا ده برابر در بهینه مصرف کردن منابع و سرعت سایت اثر داره .
مختصر و مفید این آموزش این هست :
درخواست ها برای تسفیر ابتدا به Varnish فرستاده می شوند ، در صورتی که در سیستم کش این درخواست موجود بود که به کاربر نشون داده می شه ولی در غیر این صورت وظیفه تفسیر درخواست به nginx فرستاده می شه حالا این جا آموزش دو حالت می شه یکی اینکه خود nginx فایل ها استاتیک رو به کاربر نشون بده و فقط وظیفه تفسیر صفحات دینامیک رو به apache بفرسته یک حالت هم اینه nginx فقط وظیفه مدیریت کانکشن رو داشته باشه و کل درخواست ها رو بدون در نظر گرفتن نوع آنها به apache بفرسته .
مرحله اول نصب Varnish :
توضیح کوتاهی درباره این شبه وب سرور :
وارنیش (Varnish) یک سیستم کشینگ برای وب سرور است. سیستم کشینگ وارنیش اطلاعات استاتیک وب سایت شما را روی حافظه سرور هاست ذخیره میکند و به سرعت به درخواستهای ارسال شده از سمت کاربران پاسخ میدهد.مزیت دیگر این سیستم کاهش پردازش CPU و پایین آمدن میزان CPU Usage ، افزایش سرعت نمایش فایل ها و اطلاعاتی از دیتابیس است که لازم نیست بصورت لحظه ای و آنی اطلاعات آنها استخراج و نمایش داده شود. البته عیبش هم اینه که ssl رو پیشتیبانی نمی کنه . منبع
برای نصب این سیستم دستورات زیر را اعمال کنید :
کد:
yum install -y epel-release
yum install -y varnish
systemctl start varnish
systemctl enable varnish
کانفیگش باشه برای بعد .
مرحله بعد نصب nginx :
حالا چرا از nginx استتفاده کنیم . ی
ک نکته قبلش برای افرادی که آپاچی رو دوست دارند . بله حرف شما درست هست آپاچی در صورت کانفینگ بهینه شاید از nginx هم بهتر جواب بده ولی یک چیزی که شاید هممون تصدیق کنیم پایداری بهتر nginx در تعداد در خواست های بالاست که باعث می شه سرور کمتر هنگ کنه .
کد:
yum install -y nginx
systemctl start nginx
systemctl enable nginx
البته من در این آموزش از nginx تنها به عنوان ****** مع*** استفاده می کنم به دو صورت که کانفیگش رو بعدا می گم .
خب می ریم سراغ کانفیگ :
- port 80 برای varnish رزو خواهد شد .
- port 8080 برای apache رزو خواهد شد .
- port 8088 برای nginx رزو خواهد شد .
پس برید این پورت ها رو توی فایروال باز کنید در ابتدا .
اول می خوایم درخواست های port هشتاد رو بفرستیم به varnish پس باید ابتدا apache رو برای تغییر پورت کانفیگ کنید .
در صورتی که از سرور cpanel استفاده می کنید از قسمت : Tweak settings گزینه Apache non-SSL IP/port رو به مقدار 0.0.0.0:8080 تغییر بدید .
حالا varnish رو کانفینگ می کنیم .
فایل زیر رو ویرایش کنید :
کد:
nano /etc/varnish/varnish.params
مقدار VARNISH_LISTEN_PORT=80 رو قرار بدید تا varnish به درخواست های پورت 80 جواب بده .
بعد فایل زیر رو ویرایش کنید :
کد:
nano /etc/varnish/default.vcl
در کمترین حالت باید محتوای این فایل مثل گزینه زیر باشه :
کد:
vcl 4.0;
backend default {
.host = "5.196.xx.xx";
.port = "8088";
}
حتما به جای ip سرور من 5.196.xx.xx ، مقدار ip خارجی سرور خودتون رو بگذارید . ( از ip لوکال 172.0.0.1 بر روی سرور cpanel استفاده نکنید )
ما در این فایل به varnish دستور دادیم درخواست هایی رو که خودت جوابی براش نداری رو بفرست به پورت 8088 که برای nginx رزرو کرده ایم .
مرحله بعد کانفینگ nginx هست .
حالت یک که ساده تر هست اینه که nginx تمام ورودی ها رو به آپاچی منتقل کنه : برای این حالت فایل زیر را ایجاد یا ویرایش می کنید .
کد:
nano /etc/nginx/conf.d/default.conf
محتویات این فایل در کمترین حالت شامل موارد زیر است :
کد:
server {
listen 8088;
location / {
*****_pass http://your_server_ip:8080;
*****_set_header Host $host;
*****_set_header X-Real-IP $remote_addr;
*****_set_header X-Forwarded-For $*****_add_x_forwarded_for;
*****_set_header X-Forwarded-Proto $scheme;
}
}
بجای your_server_ip مقدار ip سرور خودتون رو جایگذاری کنید .
خب در این جالت دیگه کارمون تموم شد و با دستور زیر عنوان تاپیک رو انجام داده اید :
کد:
service nginx restart
در حالت دوم شما به nginx فرمان می دید که فایل های استاتیک رو به کاربر نشون بده ولی فایل های php رو برای تفسیر به آپاچی بفرسته :
یک فایل کانفینگ برای دامنه خودتون ایجاد کنید : بجای domain نام دامنه خودتون رو بگذارید .
کد:
nano /etc/nginx/conf.d/domain.com.conf
محتویات این فایل در کمترین حالت :
کد:
server {
listen 8088;
server_name domain.com www.domain.com;
root /home/user/public_html;
index index.php index.htm index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
*****_pass http://5.196.71.182:8080;
*****_set_header Host $host;
*****_set_header X-Real-IP $remote_addr;
*****_set_header X-Forwarded-For $*****_add_x_forwarded_for;
*****_set_header X-Forwarded-Proto $scheme;
}
location ~ /\. {
deny all;
}
}
بجای user نام کاربری که برای سی پنل هست و بجای domain دامنه خودتون رو قرار بدید .
با دستور زیر nginxx رو ریستارت کنید .
کد:
service nginx restart
خب تبریک می گم ما با موفقیت کار رو انجام دادید . تنها مورد مهمی که نباید فراموش کنید اینه که این آموزش برای کمترین کانفینگ ممکن بود در صورتی که می خواید واقعا بهینه باشه سرورتون باید nginx ، varnish و apache و در نهایت php رو حرفه ای کانفیک کنید .
می تونید پیام بدید اگر به مشکل برخوردید .
در انتها در صورتی که می خواید این آموزش رو در سایتتون قرار بدید منبع رو aliwebhosting.com جهت حفظ کپی رایت ذکر کنید .
- - - Updated - - -
آقا این ستاره ها که می بینید همون prox-y خستند که اینجا فیل--ترشدن
.