CentOS 7-de Ngx_Pagespeed bilen Nginx öndürijiligini çaltlaşdyryň


Nginx [motor x] erkin we açyk çeşme, platforma, güýçli web serweri we C-de ýazylan ters proksi programma üpjünçiligi. Şeýle hem adaty IMAP/POP3 we TCP/UDP proksi serweri bolup, ýük hökmünde ulanylyp bilner balanser.

Nginx, internetdäki köp sanly sahypany işleýän meşhur HTTP serweridir (Apache HTTP serweri bilen deňeşdirip bolýar); ýokary öndürijiligi we durnuklylygy bilen meşhurdyr.

Sahypaňyzda ulanyjy tejribesini ýokarlandyrmak isläniňizde göz öňünde tutmaly dürli möhüm faktorlar bar, şol sanda sahypanyň tizligi we sahypanyň tizligi (sahypa ýüklenýän wagt hem diýilýär). Sahypaňyz Nginx bilen işleýän bolsa, bu maksat bilen ngx_pagespeed ulanyp bilersiňiz.

Ngx_pagespeed, saýtlaryň tizligini ýokarlandyrmak we sahypanyň ýükleniş wagtyny azaltmak üçin ulanylýan mugt we açyk çeşme Nginx moduly. Ulanyjylaryň sahypaňyzyň mazmunyny görmek we täsirleşmek üçin alýan wagtyny ep-esli azaldar.

  • HTTPS we URL dolandyryşy üçin goldaw.
  • Surat optimizasiýasy: meta-maglumatlary aýyrmak, dinamiki ölçeg üýtgetmek, rekompressiýa.
  • CSS & JavaScript kiçeltmek, birleşdirmek, çyzgy we çyzgy.
  • Ownuk çeşme çyzgysy.
  • Surat we JavaScript ýüklemesini yza süýşürmek.
  • HTML gaýtadan ýazmak.
  • Keşiň ömri uzaldyldy.
  • Birnäçe serwer we başgalar üçin sazlamaga mümkinçilik berýär.

Bu gollanmada, Nginx-ni ngx_pagespeed bilen nädip gurmalydygyny we ähli gurnamany RHEL/CentOS 7-de synap görjekdigimizi görkezeris.

Üns beriň: Debian we Ubuntu ulanyjylary, Nginx öndürijiligini gowulandyrmak üçin Ngx_Pagespeed gurmak üçin bu gollanmany yzarlap bilerler.

1-nji ädim: Çeşmeden Nginx guruň

1. Nginx-ni ngx_pagespeed bilen gurmak üçin ony çeşmeden düzmegiňizi talap edýär. Ilki bilen Nginx-i şuňa meňzeş çeşmeden düzmek üçin zerur bolan ähli paketleri guruň.

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

2. Ondan soň, wget buýrugyny ulanyp, Nginx-iň iň soňky wersiýasynyň (bu ýazylan wagty 1.13.2) çeşme faýllaryny alyň we göçürilen tar topuny aşakdaky ýaly çykaryň.

# 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. Ondan soň, ngx_pagespeed çeşme faýllaryny göçürip alyň we gysylan faýllary açyň.

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

4. Indi açylmadyk ngx_pagespeed katalogyna geçiň we Nginx-i aşakdaky ýaly düzmek üçin PageSpeed optimizasiýa kitaphanalaryny alyň.

# 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

2-nji ädim: Ngx_Pagespeed bilen Nginx-i düzüň we düzüň

5. Indi nginx-1.13.2 katalogyna giriň we aşakdaky buýruklary işledip Nginx çeşmesini düzüň.

# 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. Ondan soň, Nginx-i aşakdaky ýaly düzüň we guruň.

# make
# make install

7. Gurmak prosesi gutarandan soň, Nginx üçin ähli zerur baglanyşyklary dörediň.

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

3-nji ädim: SystemD üçin Nginx birlik faýly döretmek

8. Ondan soň, systemd CentOS 7-de init ulgamy bolany üçin, onuň üçin Nginx birlik faýlyny el bilen döretmeli.

Fisrt, /lib/systemd/system/nginx.service faýly dörediň, soňra NGINX systemd hyzmat faýlyny ele alyň, birlik faýl konfigurasiýasyny aşakdaky faýla goýuň.

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

Nginx sazlanylanda we düzülende düzen PIDFile we NGINX ikili ýerleşişine üns beriň, aşakda görkezilişi ýaly birlik faýlynda degişli üýtgeýjilere bellärsiňiz:

[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

Faýly ýazdyryň we ýapyň.

9. Bu wagt ortaça wagt üçin nginx hyzmatyny başlaň we aşakdaky buýruklary işledip ulgam ýüklemesinden başlamaga mümkinçilik beriň.

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

4-nji ädim: “Nginx” -ni “Pagespeed” moduly bilen sazlaň

10. Nginx gurlansoň, indiki, Ngx_pagespeed modulyny işletmeli. Modulyň web sahypaňyzdaky faýllary keşde saklaýan we aşakdaky buýruklar bilen bu bukjada degişli rugsatlary bellän katalog döretmekden başlaň.

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

11. Indi Ngx_pagespeed modulyny işletmegiň, Nginx konfigurasiýa faýlyny açmagyň we aşakdaky setirleri goşmagyň wagty geldi.

Üns beriň: Serwerde islendik nginx wirtual hostyny düzen bolsaňyz, her sahypada Ngx_pagespeed-i işletmek üçin ýokardaky sahypa çalt görkezmelerini her serwer blokyna goşuň.

# vi /etc/nginx/nginx.conf

Serwer blokynyň içinde aşakdaky Ngx_pagespeed konfigurasiýa setirlerini goşuň.

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

Aşakda, adaty wirtual hostda işledilen Ngx_pagespeed bilen Nginx konfigurasiýa faýlynyň iş mysaly.

#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. Ondan soň, aşakdaky buýrugy ýerine ýetirip, Nginx konfigurasiýa faýlynyň ýalňyşdygyna göz ýetiriň, hemmesi gowy bolsa aşakdaky çykyşy görersiňiz.

# nginx -t

13. Netijede, üýtgeşmeleriň güýje girmegi üçin Nginx serwerini täzeden açyň.

# systemctl restart nginx

5-nji ädim: Nginx-ni Ngx_pagespeed bilen barlamak

14. Ngx_pagespeed-iň indi Nginx bilen bilelikde işleýändigini ýa-da ýokdugyny bilmek üçin X-Page-Speed sözbaşysynda görkezilmeli.

# curl -I -p http://localhost

Aboveokardaky sözbaşy görüp bilmedik bolsaňyz, 11-nji ädime gaýdyp geliň we indiki ädimler bilen Ngx-sahypa sahypasyny açmak üçin görkezmeleri üns bilen ýerine ýetiriň.

Ngx-pagepeed Github ammary: https://github.com/pagespeed/ngx_pagespeed

Hemmesi bu! Bu gollanmada, sahypanyň işleýşini gowulandyrmak we gowulandyrmak we sahypanyň ýükleniş wagtyny azaltmak üçin Nginx-ni Ngx_pagespeed moduly bilen nädip gurmalydygyny we sazlamalydygyny görkezdik.

Nginx web serwerini goramak üçin şu makalany okaň - Nginx web serweriniň howpsuzlygyny üpjün etmek, berkitmek we öndürijiligini gowulandyrmak üçin iň soňky gollanma.

Hemişe bolşy ýaly, bu gollanma bilen baglanyşykly haýsydyr bir sorag ýa-da pikir bize habar bermekden çekinmäň.