domingo, 13 de maio de 2018

Lab de PHP Nginx e CentOS

Lab contendo PHP + Nginx no CentOS 6

Lab simples com CentOS 6.9 usando PHP e Nginx, rotacionamento de logs através do logrotate e remoção de logs com tempo superiores a 15 dias




Faça a instalação do CentOS 6.9 em uma máquina virtual

PASSO 1 - Realize os ajustes iniciais do SO

Nome do servidor será: CentOS6Nginx01

IP: 192.168.79.148
MASK: 255.255.255.0
GW: 192.168.78.2
DNS: 1.1.1.1 , 8.8.8.8

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.79.148
NETMASK=255.255.255.0
GATEWAY=192.168.79.2

/etc/resolv.conf
search localdomain
nameserver 1.1.1.1
nameserver 8.8.8.8

/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos6nginx01.localdomain

/etc/hosts
192.168.79.148 CentOS6Nginx01 CentOS6Nginx01.localdomain

/etc/selinux/config
SELINUX=disabled

service iptables stop
chkconfig iptables off

----------  BOOT VALIDAÇÃO ------------

RHEL/CentOS 7 64 Bit
rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm


RHEL/CentOS 6 64 Bit
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum clean all
yum repolist

yum install nginx
service nginx start
chkconfig nginx on


valide se o nginx está funcionando
http://IP servidor



PASSO 2 - Instale os pacotes necessários para o PHP

yum install php php-fpm



PASSO 3 - Deixe o PHP mais seguro

vim /etc/php.ini

Descomente a linha abaixo e adicione 0 (zero). Ela deverá ficar como o exemplo abaixo:

cgi.fix_pathinfo=0


Edite o arquivo de configuração php-fpm em www.conf:

vim /etc/php-fpm.d/www.conf

Encontre a linha abaixo e a descomente, ou insira caso não exista

listen = /var/run/php-fpm/php-fpm.sock


Encontre as linhas abaixo e as descomente

listen.owner = nobody
listen.group = nobody

Encontre no arquivo o usuário/grupo de execução e altere de apache para nginx

user = nginx
group = nginx

reiniciar o processo php-fpm
/etc/init.d/php-fpm restart

ativar o php-fpm para o boot
chkconfig php-fpm on



PASSO 4 - Configure o Nginx

Edite o arquivo abaixo, deixando-o com o conteúdo abaixo:
vim /etc/nginx/conf.d/default.conf

server {
    listen       80;
    server_name  centos6nginx01;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}


Teste seu arquivo de configuração para erros de sintaxe digitando:

# nginx -t

/etc/init.d/nginx restart
chkconfig nginx on



PASSO 5 - Crie uma página de teste PHP


vim /usr/share/nginx/html/info.php


   
 










PASSO 6 - Log Rotation utilizando o logrotate

vim /etc/logrotate.d/nginx

/var/log/nginx/*log {
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    postrotate
        /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :
    endscript
}



PASSO 7 - lipando logs antigos (superiores a 15 dias)

#!/bin/bash
find /var/log/nginx -type f -mtime +15 -exec sh -c "echo {} >> /var/log/log_clean_nginx.log; rm -f {}" \;

criar um agendamento na cron

PATH=/bin:/sbin:/usr/bin:/usr/sbin
# LIMPEZA DE LOGS
# VERRIFICA TODOS OS DIAS DO MES AS 13H01 E LIMPAR LOGS
01 13 * * *  /root/cleanlog_nginx.sh >> /var/log/log_cleanlog_nginx.log 2>&1




fontes:
CentOS
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-7

Ubuntu
https://www.digitalocean.com/community/tutorials/como-instalar-linux-nginx-mysql-php-pilha-lemp-no-ubuntu-16-04-pt