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äň.