Servidor Nginx + PHP5 + MySQL 5 no Ubuntu 11.10
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.
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,
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 |
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
<?php phpinfo(); ?> |
Para testar o script criado, abrimos o browser e colocamos http://192.168.1.79/info.php
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
Este artigo tem mais de um ano
Boas,
Isto permite vhosts ?
Abraços
Sim
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
…
…
Instalação do Tomcat 7. É possível?
Como Reverse Proxy sim…
Se queres realmente que sirva JSP, então nada a fazer.
Por isso se chama Apache Tomcat.
Podes instalar Apache y Tomcat “separados” em Ubuntu.
Esquece, lol
Podiam, criar um tutorial, para completar esse para criar um serviço de DNS.
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.
Muitas diferenças é favor… Basta procurar por benchmarks na net. O nginx está muito à frente.
Por esse motivo é que o Pplaware está na linha da frente! Sempre com as novidades do momento 🙂
Permite load balance ?
Claro que sim :oP
http://wiki.nginx.org/LoadBalanceExample
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 😀
Boas…
qual é o processador disso??
ps->Não sou barra lol
cmps
Intel Atom Dual core 1.8 GHz 🙂
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
Por causa de ser a nova tecnologia, nvidia optimus. Placa intel e placa ion2. Nunca funciona os efeitos :S.
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
Boas mane,
Bem, devido ao número de informação e tutoriais que existem pela Internet, aconselho-te o Apache.
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.
só faltava usar mariaDB em vez de MySQL
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.
porque dizes isso?
no mysql cada tabela pode ter um motor diferente associado?! o que pode aumentar a performance!
cmps
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
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
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 😉
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
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
Boa noite,
ótimo tutorial, mas eu segui ele certinho e estou tendo erro de 502 bad gateway, alguém saberia me ajudar?
Abraço