Ongeza kasi ya Utendaji wa Nginx ukitumia Ngx_Pagespeed kwenye CentOS 7


Nginx [injini x] ni chanzo huria na huria, jukwaa-msingi, seva ya wavuti yenye nguvu na programu ya proksi ya kurudi nyuma iliyoandikwa katika C. Pia ni seva ya kawaida ya IMAP/POP3 na TCP/UDP, na inaweza kutumika kama mzigo. msawazishaji.

Nginx ni seva inayojulikana ya HTTP (inayolinganishwa na seva ya Apache HTTP) inayoendesha tovuti nyingi kwenye wavuti; ni maarufu kwa utendaji wake wa juu na utulivu.

Kuna mambo mbalimbali muhimu ya kuzingatia unapotaka kuboresha matumizi ya mtumiaji kwenye tovuti yako, ikijumuisha kasi ya tovuti na kasi ya ukurasa (pia inajulikana kama muda wa kupakia ukurasa). Ikiwa tovuti yako inaendeshwa na Nginx, basi unaweza kutumia ngx_pagespeed kwa kusudi hili.

Ngx_pagespeed ni moduli ya bure na huria ya Nginx inayotumika kuongeza kasi ya tovuti na kupunguza muda wa upakiaji wa ukurasa. Inapunguza kwa kiasi kikubwa muda unaochukua kwa watumiaji kuona na kuingiliana na maudhui ya tovuti yako.

  • Usaidizi wa HTTPS na udhibiti wa URL.
  • Uboreshaji wa picha: kuondoa meta-data, kubadilisha ukubwa kwa nguvu, ukandamizaji upya.
  • Upunguzaji wa CSS na JavaScript, uunganishaji, ujumuishaji, na muhtasari.
  • Uingizaji wa rasilimali ndogo.
  • Inaahirisha picha na upakiaji wa JavaScript.
  • Kuandika upya kwa HTML.
  • Kiendelezi cha akiba cha maisha yote.
  • Huruhusu kusanidi kwa seva nyingi na zingine nyingi.

Katika somo hili, tutaonyesha jinsi ya kusakinisha Nginx na ngx_pagespeed na kujaribu usakinishaji mzima kwenye RHEL/CentOS 7.

Makini: Watumiaji wa Debian na Ubuntu wanaweza kufuata mwongozo huu ili Kusakinisha Ngx_Pagespeed ili Kuboresha Utendaji wa Nginx.

Hatua ya 1: Sakinisha Nginx kutoka Chanzo

1. Ili kusakinisha Nginx na ngx_pagespeed inahitaji uikusanye kutoka kwa chanzo. Kwanza sasisha vifurushi vyote vinavyohitajika kuunda Nginx kutoka kwa chanzo kama hiki.

# yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel
OR
# yum group install "Development Tools"

2. Kisha, pata faili chanzo za toleo jipya zaidi la Nginx (1.13.2 wakati wa uandishi huu) ukitumia amri ya wget na utoe mpira wa lami uliopakuliwa kama ilivyo hapo chini.

# mkdir ~/downloads
# cd ~/downloads
# wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
# tar -xzvf nginx-1.13.2.tar.gz

3. Kisha, pakua faili za chanzo za ngx_pagespeed na ufungue faili zilizobanwa.

# wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
# unzip v1.12.34.2-stable.zip

4. Sasa nenda kwenye saraka ya ngx_pagespeed ambayo haijafunguliwa na upate maktaba za uboreshaji wa PageSpeed ili kukusanya Nginx kama ifuatavyo.

# 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

Hatua ya 2: Sanidi na Unganisha Nginx na Ngx_Pagespeed

5. Sasa nenda kwenye saraka ya nginx-1.13.2, na usanidi chanzo cha Nginx kwa kuendesha amri hapa chini.

# 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}

6. Ifuatayo, kusanya na usakinishe Nginx kama ifuatavyo.

# make
# make install

7. Wakati mchakato wa usakinishaji ukamilika, unda ulinganifu wote muhimu kwa Nginx.

# ln -s /usr/local/nginx/conf/ /etc/nginx/
# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

Hatua ya 3: Kuunda Faili ya Kitengo cha Nginx kwa SystemD

8. Kisha, kwa kuwa systemd ni mfumo wa init katika CentOS 7, unahitaji kuunda faili ya kitengo cha Nginx kwa ajili yake.

Kwanza, unda faili /lib/systemd/system/nginx.service, kisha unyakue faili ya NGINX systemd bandika usanidi wa faili ya kitengo kwenye faili iliyo hapa chini.

# vi /lib/systemd/system/nginx.service

Zingatia eneo la PIDFile na binary ya NGINX ambayo umeweka wakati wa kusanidi na kuandaa Nginx, utaziweka katika anuwai zinazofaa kwenye faili ya kitengo kama inavyoonyeshwa hapa chini:

[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

Hifadhi faili na uifunge.

9. Katika hatua hii, anza huduma ya nginx kwa muda wa wastani na uwezeshe kuanza kwenye mfumo wa kuwasha kwa kuendesha amri zilizo hapa chini.

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

Hatua ya 4: Sanidi Nginx Ukitumia Moduli ya Kasi ya Kurasa

10. Na Nginx imewekwa, ifuatayo, unahitaji kuwezesha moduli ya Ngx_pagespeed. Anza kwa kuunda saraka ambapo moduli itahifadhi faili za tovuti yako na kuweka ruhusa zinazofaa kwenye saraka hii na amri zilizo hapa chini.

# mkdir -p /var/ngx_pagespeed_cache
# chown -R nobody:nobody /var/ngx_pagespeed_cache

11. Sasa ni wakati wa kuwezesha moduli ya Ngx_pagespeed, fungua faili ya usanidi ya Nginx na uongeze mistari iliyo hapa chini.

Muhimu: Ikiwa umesanidi wapangishi wowote wa nginx kwenye seva, ongeza maagizo ya kasi ya kurasa hapo juu kwa kila kizuizi cha seva ili kuwezesha Ngx_pagespeed kwenye kila tovuti.

# vi /etc/nginx/nginx.conf

Ongeza mistari ifuatayo ya usanidi wa Ngx_pagespeed ndani ya kizuizi cha seva.

# 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" { }

Ufuatao ni mfano wa kufanya kazi wa faili ya usanidi wa Nginx na Ngx_pagespeed imewezeshwa katika seva pangishi chaguo-msingi.

#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;
    #    }
    #}

}

12. Baadaye, hakikisha kwamba faili ya usanidi wa Nginx haina makosa kwa kuendesha amri iliyo hapa chini, utaona matokeo ikiwa yote ni sawa.

# nginx -t

13. Hatimaye, anzisha upya seva ya Nginx ili mabadiliko yaanze kutumika.

# systemctl restart nginx

Hatua ya 5: Kujaribu Nginx kwa Ngx_pagespeed

14. Ili kujua kama Ngx_pagespeed sasa inafanya kazi kwa kushirikiana na Nginx, lazima ionekane kwenye kichwa cha Kasi ya X-Page.

# curl -I -p http://localhost

Iwapo umeshindwa kuona kichwa hapo juu, kisha rudi kwa hatua ya 11 na ufuate kwa uangalifu maagizo ili kuwezesha Ngx-pagespeed na hatua zinazofuata.

Ngx-pagespeed Github hazina: https://github.com/pagespeed/ngx_pagespeed

Ni hayo tu! Katika somo hili, tulionyesha jinsi ya kusakinisha na kusanidi Nginx na moduli ya Ngx_pagespeed ili kuboresha na kuboresha utendakazi wa tovuti na kupunguza muda wa kupakia ukurasa.

Ili kupata seva ya wavuti ya Nginx, soma nakala hii - Mwongozo wa Mwisho wa Kulinda, Kuimarisha na Kuboresha Utendaji wa Seva ya Wavuti ya Nginx.

Kama kawaida, usisite kutufahamisha maswali au mawazo yoyote kuhusu mafunzo haya.