anúncios

segunda-feira, 9 de janeiro de 2017

Configurando servidor web Nginx integrado com PHP

Em servidores web, o mais comum ser utilizado é o Apache, porém existe outro servidor web bastante conhecido e com excelente desempenho de performance. O Nginx.

O presente howto explicará os procedimentos de instalação e configuração do servidor web Nginx integrado com PHP na distro Debian 8 e CentOS 7.

No Debian 8
# apt-get update
# apt-get install nginx php5-fpm php5 php5-mysql php5-mcrypt php5-gd php5-mysql mysql-server


No CentOS 7
# yum install epel-release
# yum update
# yum -y install nginx php php-gd php-mysql mysql-server


Startar o serviço Nginx
# service nginx start

Habilitar no boot
# systemctl enable nginx

O diretório root padrão do Nginx é /usr/share/nginx/www , mas vou alterar para deixar o mesmo diretório root do Apache, no caso /var/www/html

# mkdir -p /var/www/html

Ajustes de configuração para Nginx # vim /etc/php5/fpm/php.ini
Procure a linha cgi.fix_pathinfo=1 e troque 1 por 0
cgi.fix_pathinfo=0
# mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.orig

Se quiser ativar o SSL no Ngnix, precisará gerar o certificado auto-assinado e a chave.
Segue os procedimentos:
Criar certificados SSL auto-assinados
No Debian
# apt-get install openssl ca-certificates
No CentOS
# yum install openssl
Criar os diretórios para o certificado e a chave
# mkdir /etc/ssl/nginx/certs
# mkdir /etc/ssl/nginx/private


Criando os certificados auto-assinados
#openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/nginx/private/serverwww.key -out /etc/ssl/nginx/certs/serverwww.crt

Ajuste de permissão
chmod 600 /etc/ssl/nginx/private/serverwww.key
chmod 600 /etc/ssl/nginx/certs/serverwww.crt


Backup do arquivo default de configuração
# mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.orig
Criar o arquivo default novo de configuração
# vim /etc/nginx/sites-available/default
server {
  listen 80;
  listen 443 ssl;
  ssl_certificate /etc/ssl/nginx/certs/serverwww.crt;
  ssl_certificate_key /etc/ssl/nginx/private/serverwww.key;

  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 5m;

  ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4
EECDH EDH+aRSA RC4 !EXPORT !aNULL !eNULL !LOW !3DES
!MD5 !EXP !PSK !SRP !DSS"; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #root /usr/share/nginx/www; root /var/www/html; index index.php index.html index.htm; server_name www; location / { try_files $uri $uri/ /index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { #root /usr/share/nginx/www; root /var/www/html; } ### Redirects e rewrites # Remove barras no final do endereço rewrite ^/(.*)/$ /$1 permanent; # Redirectiona antigas requisições para wp-contents rewrite ^/wp-content/.*/(.*)$ /$1/images/$2 permanent; ### Locations location ~* \.(js|css)$ { # Configurações para JavaScripts e CSS gzip_static on; # Compressão GZIP ativada expires 1w; # Browser cache de 1 semana } location ~* \.(jpg|jpeg|png|gif|ico)$ { # Configurações para imagens gzip_static on; # Compressão GZIP ativada expires 2w; # Browser cache de 2 semana } # pass the PHP scripts to FastCGI server listening on the php-fpm socket location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Crie um arquivo info.php no diretório root configurado
< ?php
 phpinfo();
 ? >
Reinicie o serviço php5-fpm e Nginx
# /etc/init.d/php5-fpm restart
# /etc/init.d/nginx restart


Acesse no browser: http://IPSERVIDOR/info.php ou https://IPSERVIDOR/info.php
Feito!

Nenhum comentário:

Postar um comentário