Instalando e configurando NGINX e PHP5 no Debian Lenny

História

Vou migrar de servidores para um VPS na Linode, o 360, então primeiro preciso ter certeza que tudo vai funcionar lá, para tanto preparei um máquina virtual com a mesma configuração de software que vou preparar por lá, o objetivo é rodar uma cópia de algumas instalações do Joomla, WordPress e agora um Drupal.

Como o VPS vai ser bem, digamos, compacto, fiz uma instalação básica do Debian Lenny (netinst) sem nada e parti daí. Segue agora como configurar o stack moderninho 2.0. (Uma solução até de preguiçoso, por usar o Fastcgi ao invés do FPM, mas não quero compilar o PHP agora, deixa para o próximo release).

NGINX

Comçando pelo NGINX, o ideal é pegar o código-fonte e compilar, seguem comandos:

# aptitude install build-essential libssl-dev libpcre3-dev -y  # wget http://nginx.org/download/nginx-0.8.33.tar.gz  # tar -zxvf nginx-0.8.33.tar.gz  # cd nginx-0.8.33  # ./configure --sbin-path=/usr/local/sbin --with-http_ssl_module \ --without-mail_pop3_module --without-mail_imap_module \ --without-mail_smtp_module --with-http_stub_status_module  # make  # make install  # ln -s /usr/local/nginx/conf /etc/nginx  # cd ..  # wget htt://www.manifesto.blog.br/extras/nginx  # mv nginx /etc/init.d/nginx  # chmod +x /etc/init.d/nginx  # update-rc.d nginx defaults  

Vamos acertar ainda os logs do nginx, editando o arquivo /etc/logrotate.d/nginx:

/var/log/nginx/*.log {          daily          missingok          rotate 7          compress          delaycompress          notifempty          create 640 root adm          sharedscripts          postrotate                  [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`          endscript  }  

E ainda a configuração do Nginx:

# mkdir /var/log/nginx  # mkdir /var/www  

E o conteúdo do arquivo /etc/nginx/nginx.conf :

user  www-data;  worker_processes  4;  error_log  /var/log/nginx/error.log;  events {      worker_connections  1024;  }  http {      include       mime.types;      default_type  application/octet-stream;      access_log  /var/log/nginx/access.log;      sendfile        on;      keepalive_timeout  60;      tcp_nodelay        on;      gzip on;      gzip_http_version 1.0;      gzip_comp_level 2;      gzip_proxied any;      gzip_min_length  1100;      gzip_buffers 16 8k;      gzip_types text/plain text/css application/x-javascript text/xml \                           application/xml application/xml+rss text/javascript \                           image/gif image/jpeg image/png;      gzip_disable "MSIE [1-6].(?!.*SV1)";      gzip_vary on;      server {          root  /var/www/;          server_name     localhost;          listen          80;          location / {                  index  index.php index.html index.htm;          }          location ~ \.php$ {                  fastcgi_pass   127.0.0.1:9000;                  fastcgi_index  index.php;                  include fastcgi_params;                  fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;                  fastcgi_param SERVER_NAME $http_host;                  fastcgi_ignore_client_abort on;          }      }  }   

Pronto, agora o nginx está pronto, basta criar o arquivo /etc/init.d/nginx para controlar o serviço, com o seguinte conteúdo:

! /bin/sh  PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local  DAEMON=/usr/local/sbin/nginx  NAME=nginx  DESC=nginx  test -x $DAEMON || exit 0  if [ -f /etc/default/nginx ] ; then          . /etc/default/nginx  fi  set -e  case "$1" in    start)          echo -n "Starting $DESC: "          start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \                  --exec $DAEMON -- $DAEMON_OPTS || true          echo "$NAME."          ;;    stop)           echo -n "Stopping $DESC: "          start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \                  --exec $DAEMON || true          echo "$NAME."          ;;     restart|force-reload)          echo -n "Restarting $DESC: "          start-stop-daemon --stop --quiet --pidfile \                  /var/run/$NAME.pid --exec $DAEMON || true          sleep 1          start-stop-daemon --start --quiet --pidfile \                  /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true          echo "$NAME."          ;;    reload)          echo -n "Reloading $DESC configuration: "          start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \              --exec $DAEMON || true          echo "$NAME."          ;;    configtest)          echo -n "Testing $DESC configuration: "          if nginx -t > /dev/null 2>&1          then            echo "$NAME."          else            exit $?          fi          ;;    *)          echo "Usage: $NAME {start|stop|restart|reload|force-reload|configtest}" >&2          exit 1          ;;  esac  exit 0  

E então o ativamos para iniciar automáticamente:

# chmod +x /etc/init.d/nginx  # update-rc.d nginx defaults  # /etc/init.d/nginx start  

PHP

Seguimos com a instalação do PHP5, APC e seus principais pacotes, usando os do dotdeb.org para termos versões mais recente, então primeiro adcione o dotdeb aos seus repositórios, adcionando as seguintes linhas ao /etc/apt/sources.list:

deb http://dotdeb.mirror.somersettechsolutions.co.uk/ stable all  deb-src http://dotdeb.mirror.somersettechsolutions.co.uk/ stable all

E agora instalamos o php5 sem o apache, e com os principais modulos:

# aptitude update   # aptitude install php5 php5-cli php5-cgi php5-curl php5-gd php5-common \ php5-memcache php5-mysql php5-pgsql php5-sqlite php5-apc  

Configuramos e agora criamos o script para controlar o serviço do fastcgi do php, em /etc/init.d/php-fastcgi :

#!/bin/bash  BIND=127.0.0.1:9000  USER=www-data  PHP_FCGI_CHILDREN=15  PHP_FCGI_MAX_REQUESTS=1000  PHP_CGI=/usr/bin/php-cgi  PHP_CGI_NAME=`basename $PHP_CGI`  PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin \ PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \ PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \ $PHP_CGI -b $BIND"  RETVAL=0  start() {        echo -n "Starting PHP FastCGI: "        start-stop-daemon --quiet --start --background --chuid "$USER" \          --exec /usr/bin/env -- $PHP_CGI_ARGS        RETVAL=$?        echo "$PHP_CGI_NAME."  }  stop() {        echo -n "Stopping PHP FastCGI: "        killall -q -w -u $USER $PHP_CGI        RETVAL=$?        echo "$PHP_CGI_NAME."  }

  case "$1" in      start)        start    ;;      stop)        stop    ;;      restart)        stop        start    ;;      *)        echo "Usage: php-fastcgi {start|stop|restart}"        exit 1    ;;  esac  exit $RETVAL  

E então o ativamos para iniciar automáticamente:

# chmod +x /etc/init.d/php-fastcgi  # update-rc.d php-fastcgi defaults  

Agora com o PHP configurado, terminamos criando uma página e acessando o nosso servidor local, crie em /var/www/index.php como “< ? phpinfo() ? >” e acesse o ip do servidor para ver se funcionou… ou não.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>