infraestrutura:nginx

NGiNX

Virtual Private Server - VPS, hospedado no Cluster VMware localizado na sala de maquinas do Ponto de Presença da RNP/PoP-CE. Atua como servidor web com Virtual Hosts.

1. Criar as credencias no 1password, deve ficar dentro da pasta nginx > nginx-1.4.6-1ubuntu3 informar somente o nome do site sem o www e sem dominio, certifique-se que a senha possua letras maiusculas e minusculas, números e caracteres especiais

2. Cadastrar o usuário na planilha de controle:

https://docs.google.com/spreadsheets/d/16s-1hU4NUK-rwU9NK2EODLK8aHVL13DNgbz8-uwbphI/edit?usp=sharing

3. Acessar o ns1 e criar o dominio do site apontando para o balanceador

Conforme o exemplo acima o site-exemplo foi adicionado

4. Logar como operador no nginx.ifce.edu.br e executar o comando:

sudo site

O nome do usuário é o mesmo nome do site, no caso do site “www.exemplo.ifce.edu.br” o nome do usuário seria apenas “exemplo” sem aspas Nos demais campos informar o nome completo do responsável pelo site e no campo “Others” informar o endereço de email do responsável. Estas informações devem conter na ficha de solicitação;

5. O usuário deve ser criado nos demais servidores para que não haja problemas de permissão de acesso. Todos os servidores nginx possuem chaves RSA trocadas entre si, portanto, estando logado no nginx.ifce.edu.br basta executar o comando ssh root@nginx-01.ifce.edu.br que o acesso é concedido sem a necessidade de se fornecer uma senha.

Executar o comando sudo site nos servidores:
nginx-01.ifce.edu.br
nginx-02.ifce.edu.br

O responsável pelo Site recebe as credenciais do Servidor NGiNX “primário”, o endereço do host para acesso por ftp não é o endereço do site e sim o endereço do servidor primario, o exemplo abaixo mostra como ficam as credenciais:

#FTP
Host: nginx.ifce.edu.br
Usuário: NOME_DO_SITE
Senha: SENHA_DO_1PASS
Porta: 21
Hostname: nginx.ifce.edu.br
IPv4:200.17.33.47
OS: 14.04.1-LTS-amd64
Username: operador
Passwd: 1Password @ Dominios -> ifce.edu.br -> HP BladeSystem -> nginx
vCPU's: 8
RAM: 8GiB
HDD: 100GiB
nginx-common-1.4.6-1ubuntu3.1
nginx-extras-1.4.6-1ubuntu3.1
php-apc-4.0.2-2build1
php-pear-5.5.9+dfsg-1ubuntu4.7
php5-5.5.9+dfsg-1ubuntu4.7
php5-apcu-4.0.2-2build1
php5-cli-5.5.9+dfsg-1ubuntu4.7
php5-common-5.5.9+dfsg-1ubuntu4.7
php5-curl-5.5.9+dfsg-1ubuntu4.7
php5-dev-5.5.9+dfsg-1ubuntu4.7
php5-fpm-5.5.9+dfsg-1ubuntu4.7
php5-gd-5.5.9+dfsg-1ubuntu4.7
php5-gmp-5.5.9+dfsg-1ubuntu4.7
php5-intl-5.5.9+dfsg-1ubuntu4.7
php5-json-1.3.2-2build1
php5-ldap-5.5.9+dfsg-1ubuntu4.7
php5-mcrypt-5.4.6-0ubuntu5
php5-mysql-5.5.9+dfsg-1ubuntu4.7
php5-pgsql-5.5.9+dfsg-1ubuntu4.7
php5-readline-5.5.9+dfsg-1ubuntu4.7
php5-sybase-5.5.9+dfsg-1ubuntu4.7
php5-xmlrpc-5.5.9+dfsg-1ubuntu4.7
pkg-php-tools-1.11

O modelo adotado do NGiNX com php5-fpm difere um pouco do modelo implementado no Apache2. O NGiNX age primeiramente como um servidor web convencional com grandes capacidades de caching de conteúdo estático - O que eventualmente significa consomir mais recursos do que o Apache2, mas apresentando ganho de performace excepcional.  Estas métricas se dão apenas para conteúdo estático. Ao se deparar com conteúdos dinâmicos, o NGiNX passará a servidor como proxy reverso para o php5-fpm. O php5-FPM - FastCGI Process Manager é uma implementação alternativa ao PHP FastCGI com algumas funcionalidades adicionais muito úteis para altas cargas de tráfego. Algumas destas funcionalidades são:

  • Gerência de processos avançada com graceful stop/start;
  • Possibilidade de iniciar workers com uid's/gid's/chroot's/env's, escutando diferentes portas e utilizando php.ini's diferentes;
  • “Registros de stdout e stderr;
  • Reinicio emergencial em caso de destruição/remoção de cache's acidental;
  • Suporte a upload acelerado;
  • Scripts de slowlog (não somente registrando seus nomes, seus parâmetros do PHP também, utilizando ptrace e softwares similares para leitura de processos remotos como execute_data);
  • Função especial fastcgi_finish_request()para findar requisições e eliminar todos os dados enquanto ainda executa outras tarefas que consumam mais tempo;
  • Suporte a child spawning Dinâmico/Estático;
  • Informações básicas de status SAPI (similar ao Apache mod_status);
  • Arquivos de configuração baseados no php.ini;

O NGiNX e o php5-fpm podem ser instalados via apt-get:

operador@nginx:~$ sudo apt-get update; sudo apt-get install nginx-common nginx-extras php-apc php-pear php5 php5-apcu php5-cli php5-common php5-curl php5-dev php5-fpm php5-gd php5-gmp php5-intl php5-json php5-ldap php5-mcrypt php5-mysql php5-pgsql php5-readline php5-sybase php5-xmlrpc pkg-php-tools vim 

Listar a estrutura de diretórios aqui:

  • /etc/php5/fpm - Arquivos de configuração do php5-fpm
  • /etc/nginx - Arquivos de configuração do NGiNX
  • /var/www - Fontes dos Virtual Hosts servidos pelo NGiNX

Arquivos de configuração

Encontram-se no diretório etc/php5/fpm/pool.d e /etc/nginx/sites-available, os arquivos de configuração dos Virtual Hosts servidos pelo NGiNX

Iniciando o serviço

Inicia-se o serviço do NGiNX através do comando:

operador@nginx:~$ sudo service nginx start

Inicia-se o serviço do php5-fpm através do comando:

sudo service php5-fpm start

Parando o serviço

Para-se o serviço do NGiNX através do comando:

operador@nginx:~$ sudo service nginx stop

Para-se o serviço do php5-fpm através do comando:

sudo service php5-fpm stop

Reiniciando o serviço

Reincia-se o serviço do NGiNX através do comando:

operador@nginx:~$ sudo service nginx restart

Reincia-se o serviço do php5-fpm através do comando:

sudo service php5-fpm restart

Os arquivos de configuração referêntes a cada Virtual Host, encontram-se em:

  • /etc/php5/fpm/pool.d
  • /etc/nginx/sites-available
nginx.conf
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
 
events {
	worker_connections 768;
	# multi_accept on;
}
 
http {
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	server_names_hash_bucket_size 1024;
	variables_hash_bucket_size 1024;
	include /etc/nginx/mime.types;
	default_type application/octet-stream;
	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;
	gzip on;
	gzip_disable "msie6";
	client_max_body_size 500M;
	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}
php-fpm.conf
;;;;;;;;;;;;;;;;;;
; Global Options ;
;;;;;;;;;;;;;;;;;;
 
[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log

;;;;;;;;;;;;;;;;;;;;
; Pool Definitions ; 
;;;;;;;;;;;;;;;;;;;;
include=/etc/php5/fpm/pool.d/*.conf

Lucas do Amaral Saboya 2015/04/07 07:04

  • infraestrutura/nginx.txt
  • Última modificação: 2021/08/25 10:33
  • (edição externa)