Servidor web nginx com PHP-FPM e memcached

Este tutorial mostrará com instalar um Servidor Web nginx (1.1.13) com suporte a PHP5 (5.3.9) através do FPM
(FastCGI Process Manager) com sessões armazenadas no memcached (1.4.11) em um Debian Squeeze (6.0.3).

[ Hits: 19.649 ]

Por: Marcelo Soares Souza em 26/01/2012 | Blog: https://mapadaagroecologia.org/


Introdução



Este tutorial mostrará com instalar um Servidor Web nginx (1.1.13) com suporte a PHP5 (5.3.9) através do FPM (FastCGI Process Manager) com sessões armazenadas no 'memcached' (1.4.11) em um Debian Squeeze (6.0.3).

O PHP FPM é uma alternativa ao PHP FastCGI com muitas funcionalidades voltadas a sites com grandes números de acessos e carga.

O 'memcached' é um sistema de cache de memória distribuída onde, entre outras coisas, é possível armazenar os dados de sessões de aplicações PHP com o objetivo de melhorar a performance geral da aplicação e permitir sessões compartilhadas entre múltiplos servidores web.

Instalação

Você precisa estar logado como 'root' para executar este tutorial.

1) Instalando o PHP5 FPM 5.3.9

Edite o arquivo "/etc/apt/sources.list":

# nano /etc/apt/sources.list

Adicione ao arquivo:

deb http://ftp.br.debian.org/debian squeeze main contrib
deb-src http://ftp.br.debian.org/debian squeeze main contrib

deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all


Instale a Chave Pública do repositório LAMP DotDeb:

# wget http://www.dotdeb.org/dotdeb.gpg
# cat dotdeb.gpg | apt-key add -

Atualize a listagem de pacotes local:

# apt-get update

Instale o PHP5-FPM:

# apt-get install php5-fpm php-pear php5-dev

2) Instalando o nginx

Instale as dependências de compilação:

# apt-get build-dep nginx

Baixe a última versão de desenvolvimento (1.1.13):

# wget -c http://nginx.org/download/nginx-1.1.13.tar.gz

Descompacte o 'nginx-1.1.13.tar.gz':

# tar xvf nginx-1.1.13.tar.gz

Configure o nginx para compilação:

# cd nginx-1.1.13>
# ./configure --sbin-path=/usr/sbin --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/body --http-proxy-temp-path=/var/lib/nginx/proxy --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --with-debug --with-http_stub_status_module --with-http_flv_module --with-http_ssl_module --with-http_dav_module --with-ipv6 --with-poll_module --with-pcre --with-http_gzip_static_module


Compile e instale o nginx:

# make
# make install


Crie os diretórios necessários ao nginx:

# mkdir -p /var/lib/nginx/body
# mkdir -p /var/www
# chown -R www-data.www-data /var/www


Faça uma cópia de segurança da configuração original do nginx:

# mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig

Edite o "/etc/nginx/nginx.conf!:

# nano /etc/nginx/nginx.conf

Adicione à configuração do "/etc/nginx/nginx.conf":

user www-data;
worker_processes  2;

pid /var/run/nginx.pid;

events {}
http {
  include    mime.types;
  default_type  application/octet-stream;
  sendfile  on;

  keepalive_timeout 360;
  client_max_body_size 256m;

  tcp_nopush on;
  tcp_nodelay on;

  server {
  listen 80;
  server_name localhost;

  error_log   /var/log/nginx/localhost.error.log;
  access_log  /var/log/nginx/localhost.access.log;

  charset utf-8;

  error_page 404 /404.html;
  error_page 500 502 503 504 /50x.html;
  location = /50x.html { root html; }

  location / {
    root   /var/www;
    autoindex on;
    index index.php index.html;
  }

  location ~ \.php$ {
    root /var/www;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
    include      fastcgi_params;
    access_log off;
    }
  }
}


Inicie o nginx:

# nginx

Para testar, crie um arquivo "/var/www/index.php":

# nano /var/www/index.php

Adicione:

<?php phpinfo(); ?>


Use o navegador e coloque o endereço: http://localhost

Uma página com informações sobre o PHP deve aparecer.

2.1) Inicializando o nginx durante o Boot

Baixe o script inicialização exemplo do nginx:

# wget -c http://marcelo.juntadados.org/upload/2/187/nginx

Copie para o diretório "/etc/init.d/":

# cp nginx /etc/init.d

Defina a permissão ao "/etc/init.d/nginx":

# chmod u+rwx /etc/init.d/nginx

Adicione à inicialização do sistema:

# update-rc.d-insserv -f nginx defaults

3) Instalando o memcached

Instale as dependências de compilação:

# apt-get build-dep memcached

Baixe a última versão do memcached (1.4.11):

# wget -c http://memcached.googlecode.com/files/memcached-1.4.11.tar.gz

Descompacte o "memcached-1.4.11.tar.gz":

# tar xvf memcached-1.4.11.tar.gz

Configure o 'memcached' para compilação:

# cd memcached-1.4.11
# ./configure --prefix=/usr


Compile e instale o 'memcached':

# make
# make install


Crie um usuário 'memcached':

# adduser memcached

Execute o 'memcached' em background:

# memcached -d -m 64 -p 11211 -l 127.0.0.1 -u memcached &

3.1) Instalando o memcached através de um pacote ".deb"

# apt-get install memcached

3.2) Verificando o funcionamento do 'memcached' através do PHP

Instale o módulo 'memcache' do PHP5:

# apt-get install php5-memcache

Reinicie o 'php5-fpm':

# service php5-fpm restart

Monitorando Estado do 'memcached':

# watch 'php -r '"'"'$m=new Memcache;$m->connect("127.0.0.1", 11211);print_r($m->getstats());'"'"

4) Configurando o PHP para armazenar sessões no memcached

Edite o arquivo "/etc/php5/fpm/php.ini":

# nano /etc/php5/fpm/php.ini

Procure pela ocorrência da palavra 'session.save_handler' (no Nano, use o comando 'CTRL + W' para buscar).

Comente a linha 'session.save_handler = files', colocando ponto e vírgula (;) antes. Depois, adicione logo após, esta diretiva:

  session.save_handler = memcache
  session.save_path = "tcp://127.0.0.1:11211"


Reinicie o 'php5-fpm':

# service php5-fpm restart

Originalmente publicado em:
   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Diaspora* no Debian Wheezy - Rede social livre e distribuída

OpenLDAP: Instalando um servidor de diretórios com replicação (SyncRepl)

Mapa da Cultura no Debian 7.0 - Instalação com Nginx usando Phusion Passenger

Instalando gerenciador de projetos Redmine usando o PostgreSQL sobre o nginx

Controle de versão usando Git integrado ao Redmine

Leitura recomendada

Integrando o BIND com DHCPd

O gerenciador de boot GRUB

Explorando as possibilidades do XFree86

Sim, quebre o Debian!

Conexões SSH sem senha fácil e descomplicado

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts