اطلاعیه

بستن
No announcement yet.

افزایش سرعت و کارایی Nginx با استفاده از Ngx_Pagespeed روی CentOS 7

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    افزایش سرعت و کارایی Nginx با استفاده از Ngx_Pagespeed روی CentOS 7

    Nginx (یا engin x - انجین ایکس) یک وب سرور قدرتمند چند پلتفرومه، رایگان و Open Source و همچنین نرم افزار reverse proxy میباشد که به زبان C نوشته شده است. همچنین یک پراکسی سرور IMAP/POP3 و TCP/UDP میباشد، همچنین میتواند به عنوان یک Load Balancer مورد استفاده قرار گیرد.

    انجین ایکس یک سرور HTTP شناخته شده (قابل مقایسه با سرور HTTP آپاچی) است که بسیاری از سایت های روی وب از آن بهره میبرند و در حقیقت این وب سرور به دلیل ثبات و کارایی بالا بسیار معروف میباشد.

    زمانیکه شما میخواهید تجربه کاربری روی سایت خود را افزایش دهید فاکتورهای مهم و گوناگونی هستند که باید بررسی کنید، شامل سرعت سایت و سرعت صفحه (همچنین با عنوان زمان لود صفحه نیز شناخته میشود). اگر سایت شما از Nginx استفاده میکند در نتیجه شما میتوانید برای دسترسی به هدف بالا از ابزار ngx_pagespeed استفاده کنید.


    همچنین پیشنهاد میشود مطالعه کنید.

    نصب Mod_Pagespeed برای بهبود کارایی سرور آپاچی (به زودی)

    نصب Ngx_Pagespeed برای بالا بردن سرعت Nginx در اوبونتو و دبیان


    ابزار Ngx_Pagespeed یک ماژول رایگان و اوپن سورس برای Nginx میباشد که برای افزایش سرعت سایت ها و کاهش زمان لود صفحه مورد استفاده قرار میگیرد. این ابزار به طور چشم گیری مدت زمانیکه طول میکشد تا کاربران محتوای سایت را ببینند و یا دیتایی در سایت وارد یا از آن دریافت کنند، را کاهش میدهد.


    قابلیت های Ngx_Pagespeed
    • پشتیبانی از HTTPS و کنترل URL
    • بهینه سازی تصاویر : جدا سازی meta-data، تغییر سایز داینامیک، فشرده سازی مجدد
    • معادله، تلفیق، ورودی و خروجی CSS و JavaScript
    • resource پایین ورودی
    • به تاخیر انداختن لود تصویر و JavaScript
    • دوباره نویسی HTML
    • تمدید مدت زمان Cache
    • امکان config برای چندین سرور و تعداد زیاد دیگر


    در این مقاله ما به شما نحوه نصب Nginx به همراه ngx_pagespeed و تست کامل روی RedHat/CentOS 7 نشان خواهیم داد.



    مرحله اول : نصب Nginx از Source

    1 - برای نصب انجین اکس به همراه ngx_pagespeed شما باید آنرا از سورس کامپایل کنید. در ابتدا تمام پکیج های مورد نیاز برای کامپایل Nginx از سورس کد را همانند زیر نصب کنید.
    کد PHP:
    # yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel

    # yum group install "Development Tools" 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	1-Install-Development-Tools-on-CentOS-7.png نمایش ها:	1 اندازه:	15.2 KB شناسه:	22143


    2 - سپس source فایل آخرین ورژن Nginx (که در حال حاضر آخرین ورژن 1.13.2 میباشد) را با استفاده از دستور wget دانلود و سپس با استفاده از دستور tar همانند زیر آنرا extract کنید.
    کد PHP:
    # mkdir ~/downloads
    # cd ~/downloads
    # wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
    # tar -xzvf nginx-1.13.2.tar.gz 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	2-Download-Nginx-Source-Files.png نمایش ها:	1 اندازه:	14.1 KB شناسه:	22144


    3 - سپس، فایل سورس ngx_pagespeed را دانلود و همانند زیر با استفاده از دستور unzip فایل را از حالت فشرده خارج کنید.
    کد PHP:
    # wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
    # unzip v1.12.34.2-stable.zip 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	3-Download-Ngx_pagespeed.png نمایش ها:	1 اندازه:	18.5 KB شناسه:	22145


    4 - اکنون به دایرکتوری اکسترکت شده ngx_pagespeed وارد شده و Library های بهینه سازی pagespeed به منظور کامپایل Nginx را دانلود کنید.

    توجه : لینک library های بهینه سازی pagespeed که در دستور زیر آماده است، فیلتر میباشد و برای دانلود باید از vpn یا فیلترشکن استفاده کنید.
    کد PHP:
    # cd ngx_pagespeed-1.12.34.2-stable/
    # wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
    # tar -xvzf 1.12.34.2-x64.tar.gz 



    مرحله دوم : کانفیگ و کامپایل Nginx به همراه Ngx_Pagespeed

    5 - اکنون به دایرکتوری nginx-1.13.2 وارد شده و سورس Nginx را با اجرای دستور زیر کانفیگ میکنیم.
    کد PHP:
    # cd ~/downloads/nginx-1.13.2
    # ./configure  --add-module=$HOME/downloads/ngx_pagespeed-1.12.34.2-stable/  --user=nobody --group=nobody --error-log-path=/var/log/nginx/error.log  --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid  ${PS_NGX_EXTRA_FLAGS} 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	5-Configure-Nginx-with-Ngx_Pagespeed.png نمایش ها:	1 اندازه:	15.0 KB شناسه:	22146


    6 - سپس Nginx را همانند زیر کامپایل و نصب میکنیم.
    کد PHP:
    # make
    # make install 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	6-Compile-Nginx-with-Ngx_Pagespeed.png نمایش ها:	1 اندازه:	10.6 KB شناسه:	22147


    7 - زمانیکه مرحله نصب کامل شد، همه symlink های لازم برای انجین ایکس را ایجاد میکنیم.
    کد PHP:
    # mkdir /etc/nginx
    # ln -s /usr/local/nginx/conf/ /etc/nginx/
    # ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	7-Create-Nginx-Symlinks.png نمایش ها:	1 اندازه:	3.7 KB شناسه:	22148


    مرحله سوم : ایجاد فایل Unit انجین ایکس برای SystemD

    8 - سپس، از آنجایی که در CentOS 7 سرویس systemd در حقیقت جایگزین سیستم init شده است، شما باید به صورت دستی فایل Unit انجین ایکس را ایجاد کنید.

    ابتدا فایل /lib/systemd/system/nginx.service را ایجاد، و سپس فایل سرویس Nginx در systemd را کپی و در فایلی که ایجاد کردیم paste میکنیم.
    کد PHP:
    # vi /lib/systemd/system/nginx.service 
    به مسیر PIDFile و باینری Nginx که به هنگام کانفیگ و کامپایل Nginx تعریف کردید توجه داشته باشید، شما آنها را در متغییرهای مناسب در فایل Unit همانند زیر تعریف خواهید کرد.
    کد PHP:
    [Unit]
    Description=The NGINX HTTP and reverse proxy server
    After
    =syslog.target network.target remote-fs.target nss-lookup.target

    [Service]
    Type=forking
    PIDFile
    =/var/run/nginx.pid
    ExecStartPre
    =/usr/sbin/nginx -t
    ExecStart
    =/usr/sbin/nginx
    ExecReload
    =/bin/kill -s HUP $MAINPID
    ExecStop
    =/bin/kill -s QUIT $MAINPID
    PrivateTmp
    =true

    [Install]
    WantedBy=multi-user.target 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	8-Nginx-Systemd-Service-Unit-File.png نمایش ها:	1 اندازه:	11.6 KB شناسه:	22149

    فایل را ذخیره و از آن خارج شوید.


    9 - در اینجا سرویس Nginx را start کنید و آنرا به منظور start شدن به هنگام Boot سیستم با استفاده از دستورات زیر فعال کنید.
    کد PHP:
    # systemctl start nginx
    # systemctl enable nginx
    # systemctl status nginx 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	9-Start-and-Enable-Nginx.png نمایش ها:	1 اندازه:	18.2 KB شناسه:	22150


    مرحله چهارم : کانفیگ Nginx به همراه ماژول Pagespeed

    10 - بعد از نصب Nginx، شما باید ماژول Ngx_Pagespeed را فعال کنید. کار را با ایجاد دایرکتوری که ماژول فایل ها را برای وب سایت شما cache خواهد کرد آغاز میکنیم و پرمیژن های مناسب را روی این دایرکتوری با دستورات زیر تعریف میکنیم.
    کد PHP:
    # mkdir -p /var/ngx_pagespeed_cache
    # chown -R nobody:nobody /var/ngx_pagespeed_cache 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	10-Create-Nginx-Cache-Directory.png نمایش ها:	1 اندازه:	3.9 KB شناسه:	22151


    11 - اکنون زمان فعال سازی ماژول Ngx_Pagespeed رسیده است، فایل کانفیگ انجین ایکس را باز کنید و خط های زیر را به آن اضافه کنید.

    نکته : اگر شما هر گونه virtual host ی روی سرور کانفیگ کرده اید فراموش نکنید که بخش pagespeed بالا را به هر بلاک سرور اضافه کنید تا Ngx_Pagespeed را روی همه سایت ها فعال کنید.
    کد PHP:
    # vi /etc/nginx/conf/nginx.conf 
    خطوط کانفیگ Ngx_Pagespeed را درون بلاک Server اضافه کنید.
    کد PHP:
    # Pagespeed main settings
    pagespeed on;
    pagespeed FileCachePath /var/ngx_pagespeed_cache;
    # Ensure requests for pagespeed optimized resources go to the pagespeed
    # handler and no extraneous headers get set.
    location "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" add_header "" ""; }
    location "^/ngx_pagespeed_static/" { }
    location "^/ngx_pagespeed_beacon" { } 
    در زیر یک نمونه در حال کار از فایل کانفیگ Nginx را مشاهده میکنید که ماژول Ngx_Pagespeed در ویرچوال هاست پیش فرض فعال شده است.
    کد PHP:
    #user  nobody;
    worker_processes  1;
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    #pid        logs/nginx.pid;
    events {
    worker_connections  1024;
    }
    http {
    include       
    mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;
    server {
    listen       80;
    server_name  localhost;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;



    # Pagespeed main settings
    pagespeed on;
    pagespeed FileCachePath /var/ngx_pagespeed_cache;
    # Ensure requests for pagespeed optimized resources go to the pagespeed
    # handler and no extraneous headers get set.
    location "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" add_header "" ""; }
    location "^/ngx_pagespeed_static/" { }
    location "^/ngx_pagespeed_beacon" { }



    location / {
    root   html;
    index  index.html index.htm;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    root   html;
    }
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}
    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
    }
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	10-1-Nginx-Configuration-with-Ngx_pagespeedpng.png نمایش ها:	1 اندازه:	26.6 KB شناسه:	22152


    12 - سپس، با اجرای دستور زیر مطمئن شوید که فایل کانفیگ Nginx عاری از هرگونه Error ی باشد، اگر همه چیز OK باشد خروجی شبیه به زیر مشاهده خواهید کرد.
    کد PHP:
    # nginx -t 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	11-Check-Nginx-Configuration-for-Errors.png نمایش ها:	1 اندازه:	4.6 KB شناسه:	22153


    13 - در نهایت سرور Nginx را برای اعمال تغییرات restart کنید.
    کد PHP:
    # systemctl restart nginx 


    مرحله پنجم : تست Nginx به همراه Ngx_Pagespeed

    14 - برای اینکه از درست کارکردن Ngx_Pagespeed در ترکیب با Nginx مطمئن شویم باید در هدر X-Page-Speed موجود باشد.
    کد PHP:
    # curl -I -p http://localhost 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	12-Test-Nginx-with-Ngx_Pagespeed.png نمایش ها:	1 اندازه:	9.2 KB شناسه:	22154


    اگر شما خروجی هدر بالا را مشاهده نکردید سپس مجدد به مرحله 11 برگردید و با دقت بیشتر دستورالعمل فعال سازی Ngx_Pagespeed با استفاده از مراحل بعدی کار را دنبال کنید.


    ریپازیتوری Github Ngx_Pagespeed :
    https://github.com/pagespeed/ngx_pagespeed

    در این مقاله ما به شما نحوه نصب و کانفیگ Nginx به همراه ماژول Ngx_Pagespeed برای بهینه سازی و افزایش سرعت و عملکرد سایت و کاهش مدت زمان لود صفحه را نمایش دادیم.


    به منظور امن کردن وب سرور انجین ایکس پیشنهاد میشود پست زیر را مطالعه کنید.

    راهنمای امن کردن و بالا بردن سرعت عملکرد وب سرور انجین ایکس


    همانند همیشه سوال و یا نظرات مرتبط به این پست را با ما به اشتراک بگذارید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-11-2020, 08:06 PM.

درباره انجمن منطقه لینوکسی ها

انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

شبکه های اجتماعی

ایمیل مدیریت

Habili@linux-zone.org

در حال انجام ...
X