Erros ao compilar o Nginx com o Pagespeed no CentOS 7

1

Estou tentando compilar o Nginx com o Pagespeed a partir do código-fonte e estou tendo dificuldades para resolver os erros not found que estou vendo quando adiciono as configurações de configuração. Estas são as minhas configurações de configuração:

Estou usando o CentOS 7 - 64 bits

Definir configurações:

sudo ./configure --add-module=/nginx-compile/modules/ngx_pagespeed-release-1.9.32.1-beta \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-mail \
--with-mail_ssl_module \
--with-file-aio \
--with-ipv6 \
--with-http_spdy_module \
--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector \ 
--param=ssp-buffer-size=4 -m64 -mtune=generic' \
--user=nginx \
--group=nginx

Quando adiciono o acima em ssh, estou recebendo os seguintes erros not found e no supported file AIO was found . Aqui está a lista que eu recebo:

Erros após a execução do Configure:

checking for OS
 + Linux 3.10.0-123.el7.x86_64 x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC)
checking for gcc -pipe switch ... found
checking for gcc builtin atomic operations ... not found
checking for C99 variadic macros ... not found
checking for gcc variadic macros ... not found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... not found
checking for O_PATH ... not found
checking for sendfile() ... not found
checking for sendfile64() ... not found
checking for sys/prctl.h ... found
checking for prctl(PR_SET_DUMPABLE) ... not found
checking for sched_setaffinity() ... not found
checking for crypt_r() ... not found
checking for sys/vfs.h ... found
checking for poll() ... not found
checking for /dev/poll ... not found
checking for kqueue ... not found
checking for crypt() ... not found
checking for crypt() in libcrypt ... not found
checking for F_READAHEAD ... not found
checking for posix_fadvise() ... not found
checking for O_DIRECT ... not found
checking for F_NOCACHE ... not found
checking for directio() ... not found
checking for statfs() ... not found
checking for statvfs() ... not found
checking for dlopen() ... not found
checking for dlopen() in libdl ... not found
checking for sched_yield() ... not found
checking for sched_yield() in librt ... not found
checking for SO_SETFIB ... not found
checking for SO_ACCEPTFILTER ... not found
checking for TCP_DEFER_ACCEPT ... not found
checking for TCP_KEEPIDLE ... not found
checking for TCP_FASTOPEN ... not found
checking for TCP_INFO ... not found
checking for accept4() ... not found
checking for kqueue AIO support ... not found
checking for Linux AIO support ... not found

./configure: no supported file AIO was found
Currently file AIO is supported on FreeBSD 4.3+ and Linux 2.6.22+ only

Eu também instalei as seguintes dependências antes de adicionar as configurações:

sudo yum install gcc gcc-c++ pcre-devel zlib-devel make unzip openssl-devel

A configuração que usei é semelhante às configurações que vem quando eu instalo o Nginx usando o repo embutido centos, exceto pelo fato do módulo pagespeed ter sido adicionado.

ATUALIZAÇÃO:

O problema real foi a maneira como eu dividi a linha ao passar o --params para a chamada de configuração que está incorreta e estava causando os erros. Graças a @xavierLucas answer abaixo, o erro foi resolvido assim que adicionei --with-cc-opt e --params em uma linha. / p>

EXTENDING:

Embora o motivo acima tenha sido a causa do erro, também aprendi que é bom ter as seguintes bibliotecas instaladas também para que o Nginx aproveite ao máximo seus recursos principais e tenha o módulo pagespeed instalado:

gcc 
gcc-c++ 
pcre-devel 
zlib-devel 
make 
unzip 
openssl-devel 
libaio-devel
glibc 
glibc-devel 
glibc-headers
libevent
linux-vdso.so.1
libpthread.so.0
libcrypt.so.1
libstdc++.so.6
librt.so.1
libm.so.6
libpcre.so.0
libssl.so.10
libcrypto.so.10
libdl.so.2
libz.so.1
libgcc_s.so.1
libc.so.6
/lib64/ld-linux-x86-64.so.2
libfreebl3.so
libgssapi_krb5.so.2
libkrb5.so.3
libcom_err.so.2
libk5crypto.so.3
libkrb5support.so.0
libkeyutils.so.1
libresolv.so.2
libselinux.so.1

e

yum groupinstall 'Development Tools'
    
por Neel 13.10.2014 / 10:46

3 respostas

3

Para parar um pouco o chat longínquo, aqui estão as bibliotecas C / C ++ que você precisa para uma versão compilada do nginx com o PagesPeed no CentOS:

linux-vdso.so.1
libpthread.so.0
libcrypt.so.1
libstdc++.so.6
librt.so.1
libm.so.6
libpcre.so.0
libssl.so.10
libcrypto.so.10
libdl.so.2
libz.so.1
libgcc_s.so.1
libc.so.6
/lib64/ld-linux-x86-64.so.2
libfreebl3.so
libgssapi_krb5.so.2
libkrb5.so.3
libcom_err.so.2
libk5crypto.so.3
libkrb5support.so.0
libkeyutils.so.1
libresolv.so.2
libselinux.so.1

Verifique com yum whatprovides <library> em qual pacote está disponível e verifique se você instalou tudo.

Editar : suas opções são importantes. Por exemplo, o ssp limita os ataques de stackoverflow e tem um propósito de segurança. As outras opções otimizarão o binário para que ele funcione melhor no seu arco de destino.

Depois de dar um passo para trás, pareceu-me estranho que iria falhar em uma biblioteca externa, alterando essas opções. De qualquer forma, é bom que você tenha seguido as etapas anteriores que discutimos para que você tenha as bibliotecas necessárias para obter o melhor desempenho do nginx (lembre-se, é um evento orientado, então a libevent é obrigatória!).

Seu problema real vem da maneira como você passa --params para a chamada de configuração . Você está tentando dividir em uma nova linha dentro da própria string.

--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector \ 
--param=ssp-buffer-size=4 -m64 -mtune=generic' \

Deve ser:

--with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' \

E então, prepare-se para a parede do texto:)

    
por 13.10.2014 / 17:04
1

Isto é como compilar o nginx 1.10.2 com o pagespeed 1.11.33.4 no CentOS 7

yum update
yum install wget curl gcc-c++ pcre-devel zlib-devel make unzip openssl-devel

mkdir /root/custom-nginx
cd /root/custom-nginx

NGINX_VERSION=1.10.2          ### copy and paste, place your nginx version you want to install

wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz

tar zxvf nginx-${NGINX_VERSION}.tar.gz

ls -la ### check downloaded version

cd /root/custom-nginx/nginx-${NGINX_VERSION}/src/http/modules/

link

acesse esta página para encontrar a versão mais recente

-beta não significa não versão estável, 1.11.33.4 é versão estável

NPS_VERSION=1.11.33.4        ### copy and paste, place your pagespeed version you want to install

wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip -O release-${NPS_VERSION}-beta.zip

unzip release-${NPS_VERSION}-beta.zip

mv ngx_pagespeed-release-${NPS_VERSION}-beta ngx_pagespeed
cd ngx_pagespeed

wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz
tar -xzvf ${NPS_VERSION}.tar.gz

cd /root/custom-nginx/nginx-${NGINX_VERSION}/

configuração comum (nginx instalado a partir do repo + pagepeed)

./configure --add-module=/root/custom-nginx/nginx-${NGINX_VERSION}/src/http/modules/ngx_pagespeed --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-file-aio --with-threads --with-ipv6 --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic'


make && make install

Então

nano /etc/init.d/nginx

Faça o arquivo e cole o código:

#!/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=\([^ ]*\).*//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

Verifique se a pasta / var / ngx_pagespeed_cache é criada por nginx

edite o /etc/nginx/your-domain.conf ### e coloque suas configurações

###PAGESPEED###
pagespeed on;
pagespeed FileCachePath /var/ngx_pagespeed_cache;
##EXTRA FILTERS
#--> JAVASCRIPT
pagespeed EnableFilters canonicalize_javascript_libraries,rewrite_javascript,combine_javascript,inline_javascript,make_google_analytics_async ;
#--> CSS
pagespeed EnableFilters move_css_above_scripts,move_css_to_head,rewrite_style_attributes,inline_css,inline_google_font_css ;
#--> IMAGES
pagespeed EnableFilters convert_to_webp_lossless,sprite_images,resize_mobile_images,inline_preview_images ;
#--> HTML
pagespeed EnableFilters collapse_whitespace,remove_comments,extend_cache ;
#
##EXTRA MODS
pagespeed LazyloadImagesAfterOnload off ;
pagespeed UseExperimentalJsMinifier on ;
pagespeed LowercaseHtmlNames on ;
pagespeed PreserveUrlRelativity on ;
pagespeed XHeaderValue "Modified By dimitrios" ;
#pagespeed ForceCaching on ;
###PAGESPEED###

Teste de cofiguração

/usr/sbin/nginx -V  ### must include pagespeed
/usr/sbin/nginx -t  ### syntax must be ok

Atenção! Desative seu repositório para evitar a atualização do nginx!

    
por 19.12.2016 / 18:23
0

Tente isso para instalar nossas dependências básicas, execute:

RedHat, CentOS ou Fedora

sudo yum instale o gcc-c ++ pcre-devel zlib-devel faça unzip libuuid-devel

Ubuntu ou Debian

sudo apt-get install compilação-essencial zlib1g-dev libpcre3 libpcre3-dev descompactar uuid-dev

Ref: link

    
por 30.08.2018 / 09:01