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: 17.726 ]

Por: Marcelo Soares Souza em 26/01/2012 | Blog: https://gitlab.com/marcelo-soares-souza


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

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

Controle de versão usando Git integrado ao Redmine

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

Instalando gerenciador de projetos Redmine usando o PostgreSQL sobre o nginx

Leitura recomendada

Utilizando o PcManFm

Configurar uma rede doméstica e compartilhar ADSL no Slackware

ALSA, Debian e Intel8x0

Debian Wheezy - Instalação e utilização em desktops

VPN FreeSWan IPSec

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts