Servidor Nginx + PHP5 + MySQL 5 no Ubuntu 11.10

30 Comentários

Quando necessitamos de criar sites/conteúdos Web, temos de possuir um ambiente de desenvolvimento que possua suporte para as tecnologias nas quais vamos desenvolver os nossos sites. No Pplware já ensinamos a preparar alguns servidores/plataformas Web dos quais destacamos o Apache, Lighttpd, Cherokee, o WampServer 2.0i entre outros.

Hoje vamos ensinar a instalar/configurar o Nginx…um dos mais potentes e estáveis servidores web.

nginx_000

O Nginx é um servidor HTTP (Web) gratuito, open-source e com alta performance. O Nginx foi desenvolvido pelo programador russo Igor Sysoev em 2005, e tinha como principal objectivo ser um servidor estável, simples de configurar e que necessitasse de poucos recursos ao nível de hardware.

Como instalar o Nginx + PHP5 e MySQL no Ubuntu

Vamos considerar que a máquina onde vamos instalar o servidor web tem o IP: 192.168.1.79

Para começar vamos abrir o terminal e uma vez que vamos necessitar de privilégios de root (várias vezes) vamos executar o seguinte comando:

sudo su

Passo 1 – Instalar o MySQL 5 [~50 MB]

Para instalar o servidor e cliente MySQL deve executar o seguinte comando

apt-get install mysql-server mysql-client

No final será necessário definir e confirmar uma password para acesso ao MySQL,

nginx_01

Passo 2 – Instalar o Nginx [~1 MB]

Instalar o Nginx no Ubuntu 11.10 é muito simples. Para tal basta inserir no terminal o seguinte comando

apt-get install nginx

Para iniciar o nginx basta executar o comando

/etc/init.d/nginx start

nginx_02

Nota: No Ubuntu 11.10, a directoria por omissão para colocar os sites é /usr/share/nginx/www.

Passo 3 – Instalar o PHP5 [~10 MB]

Para que o PHP5 funcione correctamente no PHP5 é necessário instalar o PHP-FPM (PHP-FPM (FastCGI Process Manager) que é uma alternativa ao PHP FastCGI. Para instalar o php5-fpm basta executar o seguinte comando:

apt-get install php5-fpm

Configuração

Vamos agora proceder a algumas configurações a nível de vlhosts. Para isso vamos abrir o vhost por omissão que se encontra em etc/nginx/sites-available/default e definir as seguintes alterações

[...]
server {
        listen 80; ## listen for ipv4; this line is default and implied
        listen [::]:80 default ipv6only=on; ## listen for ipv6

        root /usr/share/nginx/www;
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/
        server_name _;

        location / { 

        location /doc {
                root /usr/share;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        location /images {
                root /usr/share;
                autoindex off;
        }

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }

       location ~ \.php$ { 
 fastcgi_pass 127.0.0.1:9000; 
 fastcgi_index index.php; 
 include fastcgi_params; }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
                deny all;
        }
}
[...]

Depois de realizadas as configurações devemos recarregar as novas configurações, executando para isso o comando:

/etc/init.d/nginx reload

Para testar o PHP5 vamos criar um simples ficheiro na document root do nginx. para isso criamos o ficheiro phpinfo.php usando o seguinte comando.

nano –w /usr/share/nginx/www/info.php

e lá dentro colocamos


Para testar o script criado, abrimos o browser e colocamos http://192.168.1.79/info.php

nginx_03

Passo 4 – Configurar o PHP para suporte com MySQL [~44 MB]

Para que o PHP tenho suporte para MySQL devem executar o seguinte comando:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

E está feito. Como puderam ver a instalação/configuração do servidor Nginx requer algum trabalho (assim como outros servidores Web), mas no final o trabalho vale bem a pena já que o Nginx demonstrou uma boa performance e estabilidade. Ficamos a aguardar o vosso feedback.

Acham que devemos apostar em artigos para personalizar o Nginx?

Artigos relacionados

Partilhar:
Tags:

Comentários

30

Deixe um comentário

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

  1. Avatar de Rafael Ramos
    Rafael Ramos

    Boas,

    Isto permite vhosts ?

    Abraços

      1. Avatar de Ricardo Pereira

        Vhosts com Wildcards, isto não é possivel em Apache Httpd.

        server_name http://www.simpleserver.*

        Isto significa que tens Vhost’s para:
        http://www.simpleserver.pt
        http://www.simpleserver.com
        http://www.simpleserver.info

  2. Avatar de Baltazar
    Baltazar

    Instalação do Tomcat 7. É possível?

    1. Avatar de Ricardo Pereira

      Como Reverse Proxy sim…

      Se queres realmente que sirva JSP, então nada a fazer.

      Por isso se chama Apache Tomcat.

      1. Avatar de Marcelo Barros
        Marcelo Barros

        Podes instalar Apache y Tomcat “separados” em Ubuntu.

      2. Avatar de Marcelo Barros
        Marcelo Barros

        Esquece, lol

  3. Avatar de Rleal
    Rleal

    Podiam, criar um tutorial, para completar esse para criar um serviço de DNS.

  4. Avatar de Kumkaneco
    Kumkaneco

    Boa tarde e bom post, como sempre.
    Só uma pequena e rápida questão, sem entrar em muitos pormenores técnicos e nao se pretende criar nenhum debate, há grandes diferenças (leia-se vantagens) entre Apache e Nginx, no que diz respeito a performance ou segurança?
    Obrigado desde já e bom fim de semana.

    1. Avatar de João
      João

      Muitas diferenças é favor… Basta procurar por benchmarks na net. O nginx está muito à frente.

      1. Avatar de Pedro Pinto

        Por esse motivo é que o Pplaware está na linha da frente! Sempre com as novidades do momento 🙂

  5. Avatar de Miguel
    Miguel

    Permite load balance ?

  6. Avatar de João
    João

    Boas, gostaria que os “barras” do linux me soubessem dizer se existe um linux compatível com o asus 1215N devido à nvidia ion2. Se sim qual? É que estou um pouco farto de windows e gosto de linux, já experimentei vários mas não sei por a nvidia a funcionar. Obrigado 😀

    1. Avatar de @lmx
      @lmx

      Boas…
      qual é o processador disso??

      ps->Não sou barra lol
      cmps

      1. Avatar de João
        João

        Intel Atom Dual core 1.8 GHz 🙂

        1. Avatar de lmx
          lmx

          Boas…
          porque dizes que não encontras um compatível, por causa da gráfica??
          Por exemplo no caso do ubuntu a não teres aceleração gráfica ficaria sempre com unity 2d, digo eu?!Quais os sintomas?

          cmps

          1. Avatar de João
            João

            Por causa de ser a nova tecnologia, nvidia optimus. Placa intel e placa ion2. Nunca funciona os efeitos :S.

  7. Avatar de mane
    mane

    Olá

    Queria instalar um servidor web ubuntu para uma escola com várias aplicações: moodle, joomla, drupal, wiki, etc. Só que queria colocar os ficheiros na pasta /var/www para uma mais fácil actualização das aplicações.
    Qual o servidor mais fácil de instalar e com melhor desempenho dos já aqui referidos?

    Obrigado

    1. Avatar de Pedro Pinto

      Boas mane,

      Bem, devido ao número de informação e tutoriais que existem pela Internet, aconselho-te o Apache.

      1. Avatar de Ricardo Pereira

        Nginx nao é compativel com ficheiros .htaccess, por este motivo, a instalaçao é mais facil devido as reescrituras que normalmente já estao feitas por estes ficheiros.

        Mas pessoalmente, Nginx é muito mais facil de configurar e muito mais versatil que Apache Httpd.

        Dá para fazer coisas que en Apache Httpd nao é possivel ou simplesmente sem estar arrancar mais modulos y modulos.

        Para ficheiros estaticos é uma besta pura. Serve imagens á velocidade da luz e com um consumo de CPU muito baixo.

        Tenho um servidor CDN em Nginx (de muitos) que recebe cerca de 2000 peticioes por segundo y o CPU nao sobe dos 6%, com um Load Average que nao excede os 0.6.

        É uma questao de gostos, conhecimento e performance.

  8. Avatar de Ervilha

    só faltava usar mariaDB em vez de MySQL

    1. Avatar de Ricardo Pereira

      Uma boa aposta (mariaDB), depois de tudo que esta a fazer Oracle.

      mariaDb avançou mais em estes meses que MySQL em anos. Motores novos, ideas frescas e uma atitude que fazia falta.

      Mas depois de ter projectos bastante exigentes a nivel de base de dados, começo a ter uma má opniao sobre MySQL. Começo a olhar muito para PostgreSQL e os bench’s sao realmente interessantes.

      1. Avatar de lmx
        lmx

        porque dizes isso?
        no mysql cada tabela pode ter um motor diferente associado?! o que pode aumentar a performance!

        cmps

        1. Avatar de Ricardo Pereira

          Nao ponho em causa isso, o que tu dizes qualquer DB faz isso. Mas isso nao significa performance.

          Me refiro a consultas avanzadas, como uns 10 LEFT/INNER JOINS com sub SELECTS, com funçoes tipo SUM, MAX, AVG e intervalos de datas (BEFORE e DATE). Falo de SQL avançado.

          Tenho consultas que variam de 4m a 5m e que com PostgresSQL (de teste) com uma carga similiar tenho muitas vezes reduçoes de tempos na ordem dos 30% a 40%. A mim me parece uma diferente consideravel.

          Em novos projectos com carga similar o mais certo é que use PostgreSQL.

          Motores de mariaDB:
          * Aria (derivado de MyISAM)
          * XtraDB (derivado de InnoDB)
          * PBXT
          * FederatedX

          1. Avatar de lmx
            lmx

            Boas…
            pois, no caso de MariaDB, eu penso que houve alguns progressos na optimização dessas querys…já utilizas te?
            Penso também que é possivel melhorar a performance das bd’s em Mysql além da escolha por tabela de um motor diferente, consoante a tabela seja futuramente para leitura/escrita, ou possa conter problemas de sincronismo, mas acredito que isso aconteça, não estou tão avançado(mas gostava) para discutir esse assunto…

            cmps

  9. Avatar de Bruno
    Bruno

    Este site tem um review sobre a performance Apache vx Nginx. Foi de 2008, mas em todos os teste o Apache venceu.

    http://www.joeandmotorboat.com/2008/02/28/apache-vs-nginx-web-server-performance-deathmatch/

    Algo que sinto falta aqui em PPLWARE são de posts com comparativos (tanto de recursos quanto de desempenhos). Bem, fica a dica 😉

  10. Avatar de reinaldo

    quando tentei recarregar o nginx me foi dada a seguinte mensagem:

    unexpected end of file, expecting “}” in /etc/nginx/sites-enabled/default:105
    nginx: configuration file /etc/nginx/nginx.conf test failed

  11. Avatar de Jose Carlos
    Jose Carlos

    Ola,

    Segui o tutorial até o ponto do /etc/init.d/nginx start, mas meu servidor esta retornando “500 Internal Server Error”. O que poderia ser?

    Obrigado

  12. Avatar de rodrigo
    rodrigo

    Boa noite,

    ótimo tutorial, mas eu segui ele certinho e estou tendo erro de 502 bad gateway, alguém saberia me ajudar?

    Abraço