Ngx-pagespeed, sitenizi hızlandırmak ve sayfa yükleme süresini kısaltmak için kullanılabilecek ücretsiz ve açık bir Nginx modülüdür. Mevcut içeriğinizi veya iş akışınızı değiştirmeniz gerekmeden web performansı en iyi uygulamalarını sayfalara ve ilişkili varlıklara otomatik olarak uygulayarak çalışır. Ngx-pagespeed modülünü kullanarak CSS, HTML, png ve jpg gibi çeşitli dosyaları kolayca optimize edebilirsiniz.

Kuruluma geçelim

Nginx'i derlemek için bazı paketler yüklemeniz gerekecek. Aşağıdaki komutu çalıştırarak tüm bu paketleri yükleyebilirsiniz:

sudo yum install gcc cmake unzip wget gcc-c++ pcre-devel zlib-devel -y


Nginx kaynağını indirmeniz gerekecek. Aşağıdaki komutu çalıştırarak indirebilirsiniz:

wget http://nginx.org/download/nginx-1.12.0.tar.gz


Ardından ngx_pagespeed i indirmeniz gerek . Aşağıdaki komutu çalıştırarak indirebilirsiniz:

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


Her iki paket de indirildikten sonra, bunları aşağıdaki komutla arşivi açın.

tar -xvzf nginx-1.12.0.tar.gz
tar -xvzf v1.12.34.2-stable.zip


Ardından, Nginx'i derlemek için PageSpeed optimizasyon kütüphanelerini de indirmeniz gerekecektir. Aşağıdaki komutla indirebilirsiniz:

cd ngx_pagespeed-1.12.34.2-stable
wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -xvzf 1.12.34.2-x64.tar.gz
cd ..


Şimdi, Nginx'i pagepeed modülü ile derlemeye başlayalım.
İlk olarak, aşağıdaki komutla dizini Nginx kaynak dizinine değiştirin:

cd nginx-1.12.0


Ardından, Nginx paketini aşağıdaki komutla yapılandırın:

sudo ./configure --add-module=$HOME/ngx_pagespeed-1.12.34.2-stable --user=nobody --group=nobody --pid-path=/var/run/nginx.pid ${PS_NGX_EXTRA_FLAGS}


Yapılandırma tamamlandığında, aşağıdaki komutu çalıştırarak Nginx'i derleyin:

sudo make


Yukarıdaki komut birkaç dakika alacaktır. Bundan sonra aşağıdaki komutu çalıştırarak nginx'i yükleyebilirsiniz:

sudo make install


Nginx yüklendikten sonra, Nginx için bir sembolik link oluşturmanız gerekir:

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


Nginx'i durdurmak ve başlatmak için Nginx için bir başlangıç scriptini oluşturmanız da gerekecektir. /Etc/init.d dizininde nginx dosyası oluşturarak bunu yapabilirsiniz:

sudo nano /etc/init.d/nginx


Aşağıdaki satırları ekleyin:

#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: NGINX is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

nginx="/usr/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs() {
# make required directories
user=`$nginx -V 2>&1 | grep "configure arguments:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
if [ -n "$user" ]; then
if [ -z "`grep $user /etc/passwd`" ]; then
useradd -M -s /bin/nologin $user
fi
options=`$nginx -V 2>&1 | grep 'configure arguments:'`
for opt in $options; do
if [ `echo $opt | grep '.*-temp-path'` ]; then
value=`echo $opt | cut -d "=" -f 2`
if [ ! -d "$value" ]; then
# echo "creating" $value
mkdir -p $value && chown -R $user $value
fi
fi
done
fi
}

start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
sleep 1
start
}

reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}

force_reload() {
restart
}

configtest() {
$nginx -t -c $NGINX_CONF_FILE
}

rh_status() {
status $prog
}

rh_status_q() {
rh_status >/dev/null 2>&1
}

case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac



İşiniz bittiğinde dosyayı kaydedin ve kapatın, ardından çalıştırma iznini verin:

sudo chmod +x /etc/init.d/nginx


Şimdi nginx hizmetini başlatın ve aşağıdaki komutla önyükleme zamanında başlamasını sağlayın:

sudo systemctl start nginx
sudo systemctl enable nginx


Ardından, ngx-pagespeed için bir önbellek dizini oluşturmanız ve izinlerini düzeltmeniz gerekir .

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


Ardından, /etc/nginx/nginx.conf dosyasında bazı değişiklikler yapmanız gerekecektir.

sudo nano /etc/nginx/nginx.conf


Server bloğu arasına aşağıdaki kodu 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ğıdaki komutla herhangi bir yapılandırma hatası için Nginx'i kontrol edin:

sudo nginx -t


Her şey yolundaysa, aşağıdaki çıktıyı görmelisiniz:


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


Son olarak, değişikliklerin etkili olması için Nginx'i yeniden başlatın:

sudo systemctl restart nginx