Sanya Nginx tare da Ngx_Pagespeed (Haɓaka Saurin) akan Debian da Ubuntu


A cikin labarinmu na ƙarshe, mun nuna yadda ake hanzarta aikin Nginx tare da Ngx_Pagespeed akan CentOS 7. A cikin wannan koyawa, zamuyi bayanin yadda ake shigar da Nginx tare da ngx_pagespeed akan tsarin Debian da Ubuntu don haɓaka aikin gidajen yanar gizon Nginx.

Nginx [engine x] kyauta ne kuma buɗaɗɗen tushe, sanannen uwar garken HTTP mai ƙarfi da yawa akan gidan yanar gizo: sananne saboda babban aiki da kwanciyar hankali. Hakanan yana aiki azaman wakili na baya, saƙo na gabaɗaya da uwar garken wakili na TCP/UDP, kuma ana iya tura shi azaman ma'aunin nauyi.

Ngx_pagespeed kyauta ne kuma buɗaɗɗen tushe Nginx module wanda aka yi niyya don haɓaka saurin rukunin yanar gizo tare da rage lokacin ɗaukar shafi; yana rage yawan lokacin da ake ɗauka don masu amfani don dubawa da hulɗa tare da abun ciki akan rukunin yanar gizon ku.

  • Taimakawa HTTPS tare da sarrafa URL.
  • Haɓaka hoto: cire meta-data, haɓaka mai ƙarfi, sake matsawa.
  • CSS da JavaScript minification, concatenation, inlining, and outlining.
  • Ƙananan kayan aiki.
  • Dakatad da hoto da lodin JavaScript.
  • Sake rubutawa HTML.
  • Tsawon rayuwa na cache.
  • Yana ba da damar daidaita sabar da yawa da sauran su.

Mataki 1: Shigar Nginx daga Source

1. Don shigar da Nginx tare da ngx_pagespeed daga tushen da ake buƙatar bin fakitin da za a shigar akan tsarin.

$ sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

2. Na gaba, zazzage fayilolin tushen sabon sigar Nginx (1.13.2 a lokacin wannan rubutun) ta amfani da umarnin wget kuma cire fayilolin kamar yadda aka nuna a ƙasa.

$ mkdir -p ~/make_nginx
$ cd ~/make_nginx
$ wget -c https://nginx.org/download/nginx-1.13.2.tar.gz
$ tar -xzvf nginx-1.13.2.tar.gz

3. Na gaba, sami fayilolin tushen ngx_pagespeed kuma ku cire zip ɗin da aka matsa kamar haka.

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

4. Sa'an nan kuma matsa zuwa cikin unzipped ngx_pagespeed directory kuma zazzage dakunan karatu na PageSpeed don tsara Nginx kamar haka.

$ 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

Mataki 2: Sanya kuma Haɗa Nginx tare da Ngx_Pagespeed

5. Na gaba matsawa cikin nginx-1.13.2 directory, kuma saita tushen Nginx ta amfani da umarni masu zuwa.

$ cd  ~/make_nginx/nginx-1.13.2
$ ./configure --add-module=$HOME/make_nginx/ngx_pagespeed-1.12.34.2-stable/ ${PS_NGX_EXTRA_FLAGS}

6. Na gaba, tattara kuma shigar Nginx kamar haka.

$ make
$ sudo make install

7. Bayan aikin shigarwa ya cika, gudanar da umarnin da ke ƙasa don ƙirƙirar alamun da suka dace don Nginx.

$ sudo ln -s /usr/local/nginx/conf/ /etc/nginx
$ sudo ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx

Mataki 3: Ƙirƙirar Fayil na Unit Nginx don SystemD

8. Anan, zaku ƙirƙiri fayil ɗin rukunin Nginx da hannu tunda systemd shine tsarin init akan sabbin sigogin Debian da tsarin Ubuntu.

Da farko, ƙirƙirar fayil ɗin /lib/systemd/system/nginx.service.

$ sudo vi /lib/systemd/system/nginx.service

Sannan zazzage fayil ɗin sabis na tsarin NGINX manna tsarin fayil ɗin naúrar cikin fayil ɗin.

[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

Ajiye fayil ɗin kuma rufe shi.

9. Yanzu, fara sabis na nginx don lokacin, kuma kunna shi don farawa a boot boot ta amfani da umarnin da ke ƙasa.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Muhimmi: Bayan fara sabis na Nginx, kuna iya ganin kuskure kamar yadda aka nuna a hoton allo na ƙasa.

systemd[1]: nginx.service: PID file /run/nginx.pid not readable (yet?) after start: No such file or directory 

Don warware shi, buɗe fayil ɗin Nginx /etc/nginx/nginx.conf kuma saka layin da ke gaba.

#pid  logs/nginx.pid;
to
pid  /run/nginx.pid;

A ƙarshe sake kunna sabis na nginx.

$ sudo systemctl daemon-reload
$ sudo systemctl start nginx
$ sudo systemctl status nginx

Mataki 4: Sanya Nginx Tare da Module Gudun Shafuka

10. Yanzu da aka shigar da Nginx kuma yana aiki akan tsarin ku, kuna buƙatar kunna Ngx_pagespeed module. Da farko ƙirƙirar kundin adireshi inda tsarin zai adana fayilolin don gidan yanar gizon ku kuma saita izini masu dacewa akan wannan kundin adireshi kamar haka.

$ sudo mkdir -p /var/ngx_pagespeed_cache
$ sudo chown -R nobody:nogroup /var/ngx_pagespeed_cache

11. Don kunna Ngx_pagespeed module, buɗe fayil ɗin sanyi na Nginx.

$ sudo vi /etc/nginx/nginx.conf

Ƙara waɗannan layin daidaitawar Ngx_pagespeed a cikin toshe uwar garken.

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

Lura: Idan kun tura duk wani runduna mai kama da nginx akan uwar garken, ƙara umarnin saurin shafi na sama zuwa kowane shingen uwar garken don kunna Ngx_pagespeed akan kowane rukunin yanar gizo.

Mai zuwa shine misalin aiki na fayil ɗin sanyi na Nginx tare da kunna Ngx_pagespeed a cikin tsoho mai ɗaukar hoto.

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
pid   /run/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;
    #    }
    #}
}

Ajiye kuma rufe fayil ɗin.

12. Sa'an nan kuma duba idan syntax na fayil na Nginx ba shi da kuskure ta hanyar gudanar da umarnin da ke ƙasa, idan daidai ne, za ku ga fitarwa a ƙasa:

$ sudo nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

13. Bayan haka sake kunna uwar garken Nginx don aiwatar da canje-canjen kwanan nan.

$ sudo systemctl restart nginx

Mataki 5: Gwajin Nginx tare da Ngx_pagespeed

14. Yanzu gwada ko Ngx-pagespeed yanzu yana aiki tare da Nginx ta amfani da umarnin cURL da ke ƙasa.

$ curl -I -p http://localhost

Idan kun kasa ganin rubutun da ke sama, to koma zuwa mataki na 10 kuma a hankali ku bi umarnin don kunna Ngx-pagespeed tare da matakai masu zuwa.

Ma'ajiyar Ngx-pagespeed Github: https://github.com/pagespeed/ngx_pagespeed

Idan kuna son tabbatar da sabar gidan yanar gizon Nginx, to muna ba da shawarar karantawa ta wannan koyawa mai amfani: Jagorar Ƙarshen don Amintacce, Harden da Inganta Ayyukan Nginx.

Shi ke nan! A cikin wannan koyawa, mun bayyana yadda ake shigar da Nginx tare da ngx_pagespeed akan Debian da Ubuntu. Idan kuna da wata tambaya ku aiko mana ta amfani da fam ɗin sharhinmu na ƙasa.