Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rodrigopasc/baaf95d0b7e339a4e8498e00eb8e313d to your computer and use it in GitHub Desktop.
Save rodrigopasc/baaf95d0b7e339a4e8498e00eb8e313d to your computer and use it in GitHub Desktop.
Instalando nginx com os módulos Passenger e PageSpeed no Ubuntu [PT]

Instalar nginx com os módulos Passenger e PageSpeed

Português | English

Preparando

Bibliotecas essenciais

Você precisará garantir que as seguintes bibliotecas estão instaladas:

$ sudo apt-get -y update
$ sudo apt-get install -y build-essential libcurl4-openssl-dev unzip software-properties-common git libpcre3-dev libpcre3 uuid-dev libssh2-1-dev
$ cd && mkdir sources && cd sources
$ wget https://downloads.sourceforge.net/project/pcre/pcre/8.41/pcre-8.41.tar.gz && tar xzvf pcre-8.41.tar.gz
$ wget http://www.zlib.net/zlib-1.2.11.tar.gz && tar xzvf zlib-1.2.11.tar.gz
$ wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz && tar xzvf openssl-1.1.0f.tar.gz

Você também irá precisar do banco de dados MaxMind.

$ sudo add-apt-repository ppa:maxmind/ppa
$ sudo apt update
$ sudo apt install libmaxminddb0 libmaxminddb-dev mmdb-bin

RVM

É hora de instalar o RVM.

$ sudo apt-add-repository -y ppa:rael-gc/rvm
$ sudo apt-get update
$ sudo apt-get install -y rvm
$ source /etc/profile.d/rvm.sh

Passenger

Instale a gem do Phusion Passenger.

gem install passenger

Módulos

Diretório

Crie o diretório modules para que possa clonar os repositórios.

$ cd ~/ && mkdir modules && cd modules

Sources

Clone-os dentro de module que acabamos de criar.

$ git clone https://github.com/bpaquet/ngx_http_enhanced_memcached_module
$ git clone https://github.com/leev/ngx_http_geoip2_module

PageSpeed

Execute os seguintes comandos dentro do diretório modules. Verifique a versão atual no site (https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source) (03/01/19 é 1.13.35.1-beta, então altere para a versão mais recente quando estiver lendo isto)

$ NPS_VERSION=1.12.34.3-stable
$ wget https://github.com/apache/incubator-pagespeed-ngx/archive/v${NPS_VERSION}.zip
$ unzip v${NPS_VERSION}.zip
$ nps_dir=$(find . -name "*pagespeed-ngx-${NPS_VERSION}" -type d)
$ cd "$nps_dir"
$ NPS_RELEASE_NUMBER=${NPS_VERSION/beta/}
$ NPS_RELEASE_NUMBER=${NPS_VERSION/stable/}
$ psol_url=https://dl.google.com/dl/page-speed/psol/${NPS_RELEASE_NUMBER}.tar.gz [ -e scripts/format_binary_url.sh ] && psol_url=$(scripts/format_binary_url.sh PSOL_BINARY_URL)
$ wget ${psol_url}
$ tar -xzvf $(basename ${psol_url})

nginx

Download

Verifique a versão atual no site(http://nginx.org/) (03/01/19 é 1.15.18, então altere para a versão mais recente quando estiver lendo isto)

$ wget http://nginx.org/download/nginx-1.15.8.tar.gz
$ tar xvzf nginx-1.15.8.tar.gz

Instalação

Vamos compilar o módulo do PageSpeed durante o processo de instalação do Passenger. Para isso, execute o seguinte comando:

$ sudo passenger-install-nginx-module  

Siga os processos da instalação, mas seleciona a opção de customizar e então adicione as seguintes informações:

--prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/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=/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-compat --with-file-aio --with-threads --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_slice_module --with-http_ssl_module --with-http_sub_module --with-http_stub_status_module --with-http_v2_module --with-http_secure_link_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-debug --with-openssl=../sources/openssl-1.1.0f --with-openssl-opt=enable-ec_nistp_64_gcc_128 --with-openssl-opt=no-nextprotoneg --with-openssl-opt=no-weak-ssl-ciphers --with-openssl-opt=no-ssl3 --with-zlib=../sources/zlib-1.2.11 --with-pcre=../sources/pcre-8.41 --add-module=../modules/ngx_http_enhanced_memcached_module --add-module=../modules/ngx_http_geoip2_module --add-module=../modules/incubator-pagespeed-ngx-1.12.34.3-stable

Aguarde o processo finalizar e tudo estará pronto. 🎉🎊

Ative o PageSpeed

Dentro de nginx.conf adicione dentro de html os especificamente dentro de cada bloco server:

pagespeed on;
pagespeed FileCachePath /tmp/ngx_pagespeed_cache;
pagespeed LowercaseHtmlNames on;
pagespeed XHeaderValue "Powered By ngx_pagespeed";

Agora para cada bloco server, adicione o seguinte:

location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
  add_header "" "";
}

location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }

Finalmente execute sudo service nginx restart e você estará pronto para fazer deploy.

Caso queira verificar se tudo está correto:

nginx: $ service nginx status
Passenger: $ sudo /usr/sbin/passenger-memory-stats
PageSpeed: $ curl -I yourip e verifique se está sendo exibido X-Page-Speed.

Aproveite sua nova aplicação de alta performance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment