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).
(FastCGI Process Manager) com sessões armazenadas no memcached (1.4.11) em um Debian Squeeze (6.0.3).
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.
1) Instalando o PHP5 FPM 5.3.9
Edite o arquivo "/etc/apt/sources.list":
# nano /etc/apt/sources.list
Adicione ao arquivo:
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":
Inicie o nginx:
# nginx
Para testar, crie um arquivo "/var/www/index.php":
# nano /var/www/index.php
Adicione:
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:
Reinicie o 'php5-fpm':
# service php5-fpm restart
Originalmente publicado em:
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
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;
}
}
}
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:
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"
session.save_path = "tcp://127.0.0.1:11211"
Reinicie o 'php5-fpm':
# service php5-fpm restart
Originalmente publicado em: