CentOS 7'de Ngx_Pagespeed ile Nginx Performansını Hızlandırın
Nginx [engine x], C dilinde yazılmış ücretsiz ve açık kaynaklı, çapraz platformlu, güçlü bir web sunucusu ve ters proxy yazılımıdır. Aynı zamanda standart bir IMAP/POP3 ve TCP/UDP proxy sunucusudur, ve yük dengeleyici olarak kullanılabilir.
Nginx, web üzerindeki çok sayıda siteye güç sağlayan, iyi bilinen bir HTTP sunucusudur (Apache HTTP sunucusuyla karşılaştırılabilir); yüksek performansı ve kararlılığı nedeniyle popülerdir.
Site hızı ve sayfa hızı (sayfa yükleme süresi olarak da bilinir) dahil olmak üzere, sitenizdeki kullanıcı deneyimini geliştirmek istediğinizde göz önünde bulundurmanız gereken çeşitli önemli faktörler vardır. Siteniz Nginx tarafından destekleniyorsa bu amaçla ngx_pagespeed'i kullanabilirsiniz.
Önerilen Okuma: Apache Sunucu Performansını Artırmak için Mod_Pagespeed'i yükleyin
Ngx_pagespeed, sitelerin hızını artırmanın yanı sıra sayfa yükleme süresini kısaltmak için kullanılan ücretsiz ve açık kaynaklı bir Nginx modülüdür. Kullanıcıların site içeriğinizi görmesi ve bunlarla etkileşimde bulunması için gereken süreyi önemli ölçüde azaltır.
Ngx_pagespeed Özellikleri:
- HTTPS ve URL kontrolü desteği.
- Görüntü optimizasyonu: meta verilerin çıkarılması, dinamik yeniden boyutlandırma, yeniden sıkıştırma.
- CSS ve JavaScript küçültme, birleştirme, satır içi ve ana hat oluşturma.
- Küçük kaynak satır içi.
- Resim ve JavaScript yüklemesi erteleniyor.
- HTML'nin yeniden yazılması.
- Önbellek kullanım ömrünün uzatılması.
- Birden fazla sunucu ve diğerleri için yapılandırmaya izin verir.
Bu eğitimde Nginx'in ngx_pagespeed ile nasıl kurulacağını göstereceğiz ve tüm kurulumu RHEL/CentOS 7 üzerinde test edeceğiz.
Dikkat: Debian ve Ubuntu kullanıcıları, Nginx Performansını Artırmak için Ngx_Pagespeed Kurulumu için bu kılavuzu takip edebilir.
Adım 1: Nginx'i Kaynaktan Yükleyin
1. Nginx'i ngx_pagespeed ile yüklemek için onu kaynaktan derlemeniz gerekir. Öncelikle Nginx'i bu şekilde kaynaktan derlemek için gereken tüm paketleri kurun.
yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel
OR
yum group install "Development Tools"
2. Daha sonra, wget komutunu kullanarak Nginx'in en son sürümünün (1.13.2) kaynak dosyalarını edinin ve indirilen tar topunu aşağıdaki gibi çıkarın. .
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. Ardından, ngx_pagespeed kaynak dosyalarını indirin ve sıkıştırılmış dosyaları açın.
wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
unzip v1.12.34.2-stable.zip
4. Şimdi sıkıştırılmış ngx_pagespeed dizinine geçin ve PageSpeed optimizasyon kitaplıklarının Nginx'i aşağıdaki gibi derlemesini sağlayın.
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
Adım 2: Nginx'i Ngx_Pagespeed ile Yapılandırma ve Derleme
5. Şimdi nginx-1.13.2 dizinine gidin ve aşağıdaki komutları çalıştırarak Nginx kaynağını yapılandırın.
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. Ardından Nginx'i aşağıdaki gibi derleyin ve yükleyin.
make
make install
7. Kurulum işlemi tamamlandığında Nginx için gerekli tüm sembolik bağlantıları oluşturun.
ln -s /usr/local/nginx/conf/ /etc/nginx/
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
Adım 3: SystemD için Nginx Birim Dosyası Oluşturma
8. Daha sonra systemd, CentOS 7'deki init sistemi olduğundan, Nginx birimini manuel olarak oluşturmanız gerekir. bunun için dosya.
Öncelikle /lib/systemd/system/nginx.service dosyasını oluşturun, ardından NGINX systemd hizmet dosyasını alın, birim dosya yapılandırmasını aşağıdaki dosyaya yapıştırın.
vi /lib/systemd/system/nginx.service
Nginx'i yapılandırırken ve derlerken ayarladığınız PIDFile ve NGINX ikili dosyasının konumunu not edin; bunları aşağıda gösterildiği gibi birim dosyasındaki uygun değişkenlere ayarlayacaksınız. :
[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
Dosyayı kaydedin ve kapatın.
9. Bu noktada ortalama süre için nginx hizmetini başlatın ve aşağıdaki komutları çalıştırarak sistem açılışında başlamasını sağlayın.
systemctl start nginx
systemctl enable nginx
systemctl status nginx
Adım 4: Nginx'i Pagespeed Modülüyle Yapılandırma
10. Nginx yüklendikten sonra Ngx_pagespeed modülünü etkinleştirmeniz gerekir. Modülün web siteniz için dosyaları önbelleğe alacağı bir dizin oluşturarak başlayın ve aşağıdaki komutlarla bu dizinde uygun izinleri ayarlayın.
mkdir -p /var/ngx_pagespeed_cache
chown -R nobody:nobody /var/ngx_pagespeed_cache
11. Şimdi Ngx_pagespeed modülünü etkinleştirmenin, Nginx yapılandırma dosyasını açmanın ve aşağıdaki satırları eklemenin zamanı geldi.
Önemli: Sunucuda herhangi bir nginx sanal ana bilgisayarını yapılandırdıysanız, her sitede Ngx_pagespeed'i etkinleştirmek için yukarıdaki sayfa hızı yönergelerini her sunucu bloğuna ekleyin.
vi /etc/nginx/nginx.conf
Sunucu bloğunun içine aşağıdaki Ngx_pagespeed yapılandırma satırlarını ekleyin.
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şağıda, varsayılan sanal ana bilgisayarda Ngx_pagespeed'in etkin olduğu Nginx yapılandırma dosyasının çalışan bir örneği bulunmaktadır.
#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. Daha sonra aşağıdaki komutu çalıştırarak Nginx config dosyasının hatasız olduğundan emin olun, her şey yolundaysa aşağıdaki çıktıyı göreceksiniz.
nginx -t
13. Son olarak değişikliklerin etkili olması için Nginx sunucusunu yeniden başlatın.
systemctl restart nginx
Adım 5: Nginx'i Ngx_pagespeed ile test etme
14. Ngx_pagespeed'in artık Nginx ile birlikte çalışıp çalışmadığını bilmek için X-Page-Speed başlığında görünmesi gerekir.
curl -I -p http://localhost
Yukarıdaki başlığı göremediyseniz 11. adıma geri dönün ve sonraki adımlarda Ngx-pagespeed'i etkinleştirmek için talimatları dikkatlice izleyin.
Ngx-pagespeed Github deposu: https://github.com/pagespeed/ngx_pagespeed
Hepsi bu! Bu eğitimde, site performansını optimize etmek, geliştirmek ve sayfa yükleme süresini azaltmak için Nginx'in Ngx_pagespeed modülü ile nasıl kurulacağını ve yapılandırılacağını gösterdik.
Nginx web sunucusunun güvenliğini sağlamak için bu makaleyi okuyun – Nginx Web Sunucusunun Güvenliğini Sağlamak, Güçlendirmek ve Performansını Artırmak için En İyi Kılavuz.
Her zaman olduğu gibi, bu eğitimle ilgili sorularınızı veya düşüncelerinizi bize bildirmekten çekinmeyin.