|
[21/11]
:. Resumo do dia [21/11] :. Um passeio no laboratório de testes da Nokia [21/11] :. Ulteo lança Open Virtual Desktop [21/11] :. Apple atualiza firmware do iPhone para versão 2.2 [21/11] :. Internet Explorer 8 terá versão RC no início de 2009 [21/11] :. AMD demonstra Phenom II sob overclock a 5 GHz [20/11] :. Resumo do dia [20/11] :. YouTube começa a disponibilizar alta resolução em vídeos [20/11] :. Drivers ForceWare 180 'Big Bang II' são disponibilizados [20/11] :. GMail agora possui suporte a temas [19/11] :. Alchemy, compilador C/C++ em AS3 para Flash [19/11] :. Resumo do dia [19/11] :. Trabalhando com o Diff graficamente [19/11] :. Microsoft terá antivírus gratuito para Windows em 2009 [19/11] :. Um dos maiores servidores de spam do mundo é desconectado :. Mais noticias » |
Nos primórdios da internet usávamos páginas html estáticas e scripts CGI. O Apache em si continua oferecendo suporte apenas a estes recursos básicos, mas ele pode ser expandido através de módulos, passando a suportar scripts em PHP, acessar bancos de dados MySQL entre inúmeros outros recursos. O Apache continua fornecendo apenas paginas html estáticas. Sempre que for solicitada uma página em PHP ou outra linguagem, entra em ação o módulo apropriado, que faz o processamento necessário e devolve ao Apache a página html que será exibida. Entram em ação então os gestores de conteúdo e fóruns, que combinam os recursos do PHP com um banco de dados como o MySQL, acessado através dele. A combinação de tudo isso forma a solução que é popularmente chamada de "LAMP" (Linux Apache MySQL PHP). Instalando um servidor LAMPAtualmente quase 70% dos servidores web do mundo rodam o Apache, a maior parte deles sobre o Linux. O Apache é um dos servidores web mais antigos, seguro e com inúmeros módulos que adicionam suporte aos mais exóticos recursos. Ao longo de sua história, o Apache vem sucessivamente derrotando todos os servidores web proprietários. O próprio IIS da Microsoft, que alguns anos atrás parecia um concorrente fortíssimo, hoje em dia é usado em pouco mais de 10% dos servidores. A maioria das páginas atuais utiliza uma estrutura em PHP, freqüentemente com um banco de dados MySQL ou PostgreSQL. Existem inclusive muitos sistemas prontos, como o phpBB (fórum) e o PHP Nuke (e derivados) para gerenciamento de conteúdo, que podem ser instalados sem muita dificuldade depois que o servidor web já estiver rodando. Outro recurso muito usado é a encriptação de páginas em SSL, necessário para a criação de páginas seguras (usadas em lojas virtuais, por exemplo) e um sistema de estatísticas de acesso como o Webalizer. Por padrão, o Apache utiliza a pasta "/var/www" para armazenar os arquivos do site, mas isto pode ser mudado no arquivo de configuração, que vai na pasta "/etc/apache". Instalando o ApacheA primeira escolha é entre instalar o Apache 2, ou o Apache 1.3, que ainda é usado por muita gente. O Apache 2 traz muitas vantagens, sobretudo do ponto de vista do desempenho, mas por outro lado ele é incompatível com os módulos compilados para o Apache 1.3 e muitas opções de configuração são diferentes. A questão dos módulos não chega a ser um grande problema hoje em dia, pois todos os principais módulos já foram portados, mas muita gente que aprendeu a configurar o Apache 1.3 se sente mais confortável com ele e por isso continua usando-o até hoje, apesar das vantagens da nova versão. Muitas distribuições continuam oferecendo as duas versões, de forma a satisfazer os dois públicos. No Debian, por exemplo, o Apache 1.3 é instalado através do pacote "apache", enquanto o Apache 2 é instalado através do "apache2". Junto com o Apache propriamente dito, é interessante instalar também o pacote "apache-ssl", que adiciona suporte a páginas seguras (https). # apt-get install apache Ao instalar o Apache 2, o suporte a SSL é instalado automaticamente junto com o pacote principal:
# apt-get install apache2
Depois de instalar os pacotes, inicie o serviço com o comando "/etc/init.d/apache start". Ao utilizar o Apache 2 o comando fica: "/etc/init.d/apache2 restart" Em muitas distribuições o serviço do Apache chama-se "httpd" e não "apache" como no Debian. Este é um pedido da própria Apache Foundation, que além do servidor web desenvolve outros projetos, também distribuídos sob a marca "Apache". Neste caso o comando fica "/etc/init.d/httpd restart". Acessando o endereço "http://127.0.0.1", você verá uma página de boas-vindas, que indica que o servidor está funcionando. Se não houver nenhum firewall no caminho, ele já estará acessível a partir de outros micros da rede local ou da internet. Por enquanto temos apenas uma versão básica do apache, que simplesmente exibe arquivos html colocados dentro da pasta "/var/www", que por padrão fica sendo o diretório raiz do seu servidor web. A página "http://seu.servidor/index.html" é na verdade o arquivo "/var/www/index.html". Configuração básicaA maior parte da configuração do Apache 1.3 pode ser feita através de um único arquivo, o httpd.conf, que no Debian pode ser encontrado no diretório /etc/apache/. Ao utilizar o Apache 2, o arquivo passa a ser o "/etc/apache2/apache2.conf". Observe que, assim como todos os arquivos de configuração, você precisa editá-lo como root. Para isso abra um terminal e rode o comando "su", forneça a senha de root e depois abra o arquivo com o comando:
# kedit /etc/apache/httpd.conf
A primeira configuração importante é a (ou as) portas TCP que serão usadas pelo servidor. Por default, a porta é a 80, mas alguns serviços de banda larga, como por exemplo o Speedy da Telefonica bloqueiam esta porta, obrigando os usuários a manter seus servidores em portas alternativas. Você pode também alterar a porta para manter o seu servidor um pouco mais secreto, principalmente se for utilizada uma porta acima de 1024, já que, além do endereço IP ou domínio, os visitantes precisariam saber também a porta do servidor. A configuração da porta está perto do final do arquivo, na linha: Port 80 (use o localizar do editor de textos para encontrá-la mais facilmente). Veja que por default o Apache escuta a porta 80. Basta alterar o 80 pela porta desejada e salvar o arquivo. Para que a alteração entre em vigor, é preciso reiniciar o apache com o comando "/etc/init.d/apache restart" ou, "service httpd restart". Lembre-se de que ao alterar a porta os visitantes precisarão incluir o novo número no endereço. Se você for utilizar a porta 1080, por exemplo, todos deverão acessar o endereço "http://seu.dominio.com:1080". Você pode também fazer com que o servidor escute em mais de uma porta simultaneamente, usando o recurso Binding. Para isso, basta incluir o parâmetro "Listen porta" logo abaixo da linha "Port 80" que configuramos acima. Para que ele escute também nas portas 1080 e 2480, por exemplo, você incluiria as linhas:
Caso o servidor tenha mais de uma placa de rede, você pode utilizar o parâmetro "Listen IP_da_placa:porta". Se, por exemplo, estão instaladas duas placas de rede, uma com o endereço 222.132.65.143 e a segunda no endereço 192.168.0.1 e você quer que ele escute em ambas, nas portas 1080 e 2480, bastaria incluir:
Não existe limitação para o uso deste recurso. Você pode fazer o servidor escutar quantas portas e placas de rede forem necessárias. Ao utilizar o Apache 2 no Debian, a configuração de portas fica separada, dentro do arquivo "/etc/apache2/ports.conf". Virtual HostsOutro recurso suportado pelo Apache e muito usado, é a possibilidade de hospedar vários sites no mesmo servidor (shared hosting). Mais de 70% dos sites da internet são hospedados desta forma econômica. Neste caso, os arquivos de cada site ficam guardados numa pasta diferente e o servidor se encarrega de direcionar cada visitante ao site correto. Servidores como os dos serviços de hospedagem gratuita chegam a hospedar mais de 10.000 sites num único servidor Apache usando este recurso. Existem duas formas de fazer isso. A primeira é ter um servidor com vários endereços IP e vincular cada site a um endereço (IP-Based). Este sistema é pouco usado, pois atualmente os endereços IP válidos são um recurso escasso e valioso. A segunda forma (de longe a mais usada) é ter um único endereço IP válido e vincular cada site a um nome de domínio (Name-Based). Vamos ver primeiro a opção com múltiplos endereços IP que é a mais simples, e em seguida a com vários nomes: IP-Based: Esta opção é útil caso você tenha mais de um link no mesmo servidor. Você pode usar um único servidor para duas linhas ADSL, ou duas linhas T1, por exemplo, ou pode ainda ter uma única placa de rede configurada para receber conexões em vários endereços IP, usando aliases. Para criar aliases para sua placa de rede, basta usar o ifconfig, informando a placa de rede que receberá o alias (eth0, eth1, etc.) e o endereço IP em que ela passará a escutar. O alias é apenas um apelido; ele não altera a configuração original da placa de rede, apenas faz com que ela passe a se comportar como se fosse várias placas, escutando em vários endereços diferentes. É sem dúvida um recurso muito interessante. Se você deseja que a sua interface eth0 passe a escutar também nos endereços 220.177.156.2, 220.177.156.3 e 220.177.156.4, os comandos seriam:
# ifconfig eth0:0 220.177.156.2
# ifconfig eth0:1 220.177.156.3 # ifconfig eth0:2 220.177.156.4 Um detalhe importante é que os aliases são desativados sempre que o servidor é reiniciado. Para que a alteração seja permanente, é necessário adicionar os comandos no arquivo "/etc/init.d/bootmisc.sh" ou "/etc/rc.d/rc.local" para que eles sejam executados a cada boot. No Apache, basta criar seções no arquivo "httpd.conf", indicando as configurações de cada site, como por exemplo:
Criamos aqui a configuração para dois sites distintos, um no endereço 220.177.156.2 e o outro no 220.177.156.3. Tanto faz se cada endereço corresponde a uma placa de rede separada ou se são aliases para uma única placa. O que interessa é que sempre que alguém digitar o endereço IP ou o domínio correspondente no browser será capaz de acessar o site. O IP de cada site é especificado na primeira linha, opção "VirtualHost". A próxima linha "ServerAdmin" permite especificar o e-mail do administrador, para onde serão enviadas mensagens de erro e avisos de anormalidades no servidor. A opção "DocumentRoot" é outra configuração crucial, simplesmente porque diz em que pastas ficarão armazenados os arquivos do site em questão. Naturalmente cada site deve ter sua própria pasta, que deve ser acessível ao cliente via ftp, ssh ou outra forma qualquer, para que ele possa dar upload dos arquivos do site. Isto significa que, além de configurar o Apache, você deve criar para ele um usuário no sistema e configurar um servidor de FTP ou SSH. Para finalizar, use o comando "chown -R usuário pasta" para transformar o usuário em dono da pasta e o comando "chmod 755 pasta" para acertar as permissões de acesso. Isto faz com que o dono tenha controle total e os demais usuários (e visitantes do site) possam apenas ler os arquivos e executar scripts postos no servidor (como scripts em CGI ou páginas PHP), sem permissão para gravar ou alterar nada. A opção "ServerName" indica o nome de domínio do servidor e não é necessária quando o site é acessado apenas através do endereço IP. Finalmente temos a localização dos dois arquivos de log: ErrorLog e TransferLog. Por padrão, estes arquivos devem ficar dentro da pasta logs, no diretório raiz do site, separados dos arquivos disponibilizados ao público, que ficam na pasta www. Naturalmente você pode usar outras localizações se quiser, é apenas uma convenção. Name-Based: Esta segunda opção é bem mais usada que a IP-Based, por isso deixei por último, caso contrário era capaz de você pular o outro tópico ;-). A configuração baseada em nomes permite que você hospede vários sites, cada um com seu próprio nome de domínio num servidor com um único link e um único IP. A configuração no arquivo httpd.conf é até mais simples que a baseada em IP. A seção fica:
A primeira linha ("NameVirtualHost *") especifica o endereço IP e a porta do servidor principal. Aqui estou usando como exemplo o endereço "192.168.1.100", pois estou configurando um servidor que vai ficar disponível apenas dentro da rede local. Ao configurar um servidor público, você usaria o endereço IP do servidor na internet, como por exemplo "215.23.45.143". Em seguida temos as seções VirtualHost, que especificam o nome de domínio e o diretório local onde ficam os arquivos de cada um. A idéia aqui é que o visitante digita o nome de domínio do site no navegador e o Apache se encarrega de enviá-lo ao diretório correto. Mas, para que o cliente chegue até o servidor, faltam mais duas peças importantes. A primeira é o registro do domínio, que pode ser feito na Fapesp, Internic ou outro órgão responsável. No registro do domínio, você deverá fornecer dois endereços de DNS (primário e secundário). Se você tiver apenas um, existe um pequeno truque: conecte-se via modem na hora de fazer o registro, assim você terá dois endereços (o do link e o do modem) e conseguirá fazer o registro. Naturalmente, neste caso, você perde a redundância; se o seu link principal cair seu site ficará fora do ar. É aqui que acaba o trabalho deles e começa o seu. Ao acessar o domínio, o visitante é direcionado para o endereço de DNS fornecido no registro. Isto significa que... bingo! além do Apache você vai precisar de um servidor de DNS :-) O DNS não precisa necessariamente ser uma máquina separada. Mais adiante veremos como instalar e configurar o Bind para esta função. Neste caso a requisição do cliente é direcionada da Fapesp para o seu servidor DNS e dele para o servidor Apache. O ciclo se fecha e o cliente consegue finalmente acessar a página. Se seu servidor estiver hospedando subdomínios, ou seja, endereços como "www.fulano.guiadohardware.net", "www.ciclano.guiadohardware.net", etc., como fazem serviços como o hpg, a configuração continua basicamente a mesma. Você especifica o sub-domínio do cliente na configuração do VirtualHost do Apache e também no servidor de DNS. Uma observação importante é que para o Apache, o domínio "www.fulano.guiadohardware.net" é diferente de apenas "fulano.guiadohardware.net". Para que o site possa ser acessado tanto com o www quanto sem ele, é necessário cadastrar os dois endereços, usando um alias para que o segundo leve ao primeiro. Como no caso anterior, você deve informar o endereço do seu servidor de DNS no registro do domínio. Como os servidores de registro de domínio lêem as URLs de trás para a frente, todos os acessos a subdomínios dentro do guiadohardware.net serão enviados para o seu servidor DNS e daí para o servidor Apache. Ao usar o Apache 2, a configuração dos hosts virtuais fica ligeiramente diferente. Ao invés de colocar as configurações de todos os sites diretamente no httpd.conf, a configuração é quebrada em vários arquivos individuais (um para cada site) armazenados dentro da pasta "/etc/apache2/sites-available". Dentro da pasta você encontrará o arquivo "default" que contém uma configuração padrão da página "default", que é exibido quando o usuário não especifica um domínio válido no servidor. Para adicionar outros sites, basta criar um arquivo para cada um (como por exemplo "kurumin.com.br"), contendo o seguinte: ServerName www.kurumin.com.br Note que adicionei uma nova diretiva, a "ServerAlias", que permite que o site seja acessado tanto com, quanto sem o "www". O DocumentRoot tambpem foi alterado, com relação aos exemplos anterior para refletir a organização padrão adotada no Apache 2, onde os arquivos são por padrão armazenados dentro da pasta /var/www/html, ao invés de simplesmente /var/www. Para adicionar mais sites, basta criar vários arquivos, um para cada um, não esquecendo de criar as pastas default de cada. A pasta "/etc/apache2/sites-available" contém todos os sites disponíveis no servidor. Para que os sites fiquem realmente disponíveis, é necessário criar um link simbólico para cada um, dentro da pasta "/etc/apache2/sites-enabled". São estes links que determinam se o site vai realmente ficar disponível. Esta configuração foi adotada para facilitar a vida de quem administra servidores compartilhados por muitos sites. Para desativar um site por falta de pagamento, por exemplo, basta remover o link e recriá-lo quando a situação for normalizada. Para criar o link para o site "kurumin.com.br" que criamos no exemplo anterior, o comando seria:
# cd /etc/apache2/sites-enabled
# ln -s ../sites-available/kurumin.com.br kurumin.com.br Não se esqueça de reiniciar o Apache no final do processo para que as mudanças entrem em vigor. Esta configuração manual funciona para pequenos servidores, que hospedam algumas dezenas ou centenas de páginas. Grandes serviços de hospedagem geralmente acabam desenvolvendo algum tipo de sistema para automatizar a tarefa. Nos serviços de hospedagem gratuita, por exemplo, onde o número de clientes é assustadoramente grande, as alterações são feitas de forma automática quando o visitante faz seu cadastro, geralmente através de um sistema escrito em PHP ou Java. Conforme o número de usuários cresce e o espaço em disco no servidor começa a ficar escasso, você começará a sentir falta de um sistema de quotas que limite o espaço que cada usuário pode usar. Para isso, consulte o tópico sobre quotas de disco mais adiante. Gerando estatísticasO Webalizer é um gerador de estatísticas de acesso para o servidor web. O Apache, por si só, loga todos os acessos feitos ao servidor, incluindo as páginas acessadas, o tráfego gerado, os navegadores e sistemas operacionais usados pelos clientes, entre outras informações úteis para entender os hábitos e interesses de seus visitantes. Com o Apache funcionando, é simples instalar o Webalizer: procure pelo pacote "webalizer" dentro do gerenciador de pacotes. Ele é incluído em todas as principais distribuições. Nas derivadas do Debian, você pode instalá-lo via apt-get: apt-get install webalizer Ao contrário do Apache, o Webalizer não é um serviço que fica residente, mas sim um executável que precisa ser chamado cada vez que quiser ver a página de estatísticas atualizada (assim como o Sarg). Basta chamá-lo como root:
# webalizer
Por padrão, a página de estatísticas é armazenada na pasta "webalizer/", dentro do seu servidor web. Se o Apache estiver configurado para armazenar as páginas dentro do diretório "/var/www", então as estatísticas vão para a pasta local "/var/www/webalizer". O arquivo de configuração do Webalizer é o "/etc/webalizer.conf". É importante que você revise o arquivo de configuração, indicando pelo menos a localização correta do arquivo de log do Apache e altere a pasta onde as estatísticas ficarão armazenadas, caso não queira que elas fiquem disponíveis ao público. Você pode armazená-las numa pasta isolada no servidor web, como por exemplo "/var/webalizer", de forma que elas fiquem disponíveis apenas localmente, ou através de um script. As duas opções dentro do arquivo são:
Para não precisar executar o comando "webalizer" manualmente toda hora, você pode configurar o cron para executá-lo automaticamente uma vez por dia ou uma vez por hora. Para isto, basta criar um script dentro da pasta "/etc/cron.daily/" ou "/etc/cron.hourly/", contendo o comando "webalizer". Todos os scripts colocados dentro destas pastas são respectivamente executados todos os dias de manhã, ou uma vez por hora. Para que funcione, é importante verificar se o serviço "cron" ou "crond" está ativo. O Mandriva não inclui o pacote do Webalizer. Para instalar nele, baixe o arquivo "webalizer-2.xx-xx-static.gz" no ftp://ftp.mrunix.net/pub/webalizer/. Este arquivo contém um executável genérico, compilado com o objetivo de ser compatível com qualquer distribuição. Todas as bibliotecas necessárias estão incluídas dentro do próprio executável, daí o "static" no nome. Para instalá-lo, basta descompactar o arquivo e movê-lo para dentro da pasta "/usr/local/bin/":
$ wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.01-10-static.gz
$ gunzip webalizer-2.01-10-static.gz $ su # mv webalizer-2.01-10-static /usr/local/bin/webalizer # chmod 755 /usr/local/bin/webalizer Instalando o suporte a PHPNo início, existiam apenas páginas html estáticas, com links atualizados manualmente. Depois surgiram os scripts CGI, geralmente escritos em Perl, que permitiram criar vários tipos de formulários e automatizar funções. Finalmente, surgiu o PHP, adotado rapidamente como a linguagem padrão para criação de todo tipo de página dinâmica, fórum ou gerenciador de conteúdo. Além da linguagem ser bastante flexível, um script em PHP chega a ser mais de 100 vezes mais rápido que um script CGI equivalente, além de mais seguro. Em resumo, um script CGI é um executável, que precisa ser carregado na memória, executado e descarregado cada vez que é feita uma requisição. No caso do PHP, o interpretador fica carregado continuamente e simplesmente vai executando de forma contínua os comandos recebidos dos scripts incluídos nas páginas. Para quem programa em Perl, existe a possibilidade de utilizar o mod-perl, instalável através do pacote "apache-mod-perl" ou "libapache2-mod-perl2". Assim como o PHP, o mod-perl é um módulo do Apache que fica continuamente carregado na memória, executando os scripts Perl de uma forma bem mais rápida e segura que os scripts CGI. Mas, voltando ao assunto principal, o suporte a PHP é instalado através do pacote "php4" (ou "php3", caso você prefira usar a versão antiga, ainda disponível em muitas distribuições). Para instalá-lo, basta usar o gerenciador de pacotes da distribuição em uso, como em:
# apt-get install php4
Em seguida você deve localizar o módulo "libphp4.so" (ou libphp3.so) e ativá-lo na configuração do Apache. A localização padrão do módulo pode variar de distribuição para distribuição, por isso o melhor a fazer é localizá-lo usando os comandos:
# updatedb
# locate libphp4.so Ao utilizar os pacotes do Debian, ele é instalado na pasta "/usr/lib/apache/1.3". Para ativá-lo no Apache 1.3, adicione a linha a seguir no arquivo "/etc/apache/httpd.conf":
É necessário incluir também as linhas que associam as páginas com extensão .php ou .phps com o módulo recém-instalado. De forma que o Apache saiba o que fazer com elas:
Reinicie o apache para que a alteração entre em vigor:
# /etc/init.d/apache restart
A partir daí, o Apache continua exibindo diretamente páginas com extensão .htm ou .html, mas passa a entregar as páginas .php ou .phps ao interpretador php, que faz o processamento necessário e devolve uma página html simples ao Apache, que se encarrega de enviá-la ao cliente. Estas páginas processadas são "descartáveis": cada vez que um cliente acessa a página, ela é processada novamente, mesmo que as informações não tenham sido alteradas. Dependendo do número de funções usadas e da complexidade do código, as páginas em PHP podem ser bastante pesadas. Não é incomum que um site com 300.000 pageviews diários (o que significa umas 20 requisições por segundo nos horários de pico) precise de um servidor dedicado, de configuração razoável. Quase sempre, os sistemas desenvolvidos em PHP utilizam também um banco de dados MySQL ou PostgreSQL. Para utilizá-los, você precisa ter instalados (além do MySQL ou Postgre propriamente ditos) os módulos "php4-mysql" e "php4-pgsql", que permitem aos scripts em PHP acessarem o banco de dados:
# apt-get install php4-mysql
ou
# apt-get install php4-pgsql
Não se esqueça de reiniciar o Apache, para que as alterações entrem em vigor:
# /etc/init.d/apache restart
Para instalar o suporte a PHP no Apache 2, instale o pacote "libapache2-mod-php4" ou "libapache2-mod-php5", como em:
# apt-get install libapache2-mod-php4
O módulo "libapache2-mod-php4" é instalado dentro da pasta "/usr/lib/apache2/modules/" e é ativado de uma forma diferente que no Apache 1.3. Ao invés de adicionar as linhas que ativam o módulo e criam as associações de arquivos no final do arquivo httpd.conf, são criados dois arquivos dentro da pasta "/etc/apache2/mods-available/", com respectivamente a ativação do módulo e as associações de arquivos. Para ativar o suporte a PHP, é preciso copiar ambos para a pasta "/etc/apache2/mods-enabled/":
# cd /etc/apache2/mods-available/
# cp -a php4.conf php4.load ../mods-enabled/ Este procedimento de copiar arquivos (ou criar links simbólicos) da pasta mods-available para a pasta mods-enabled é a forma padrão de ativar módulos diversos no Apache 2 do Debian. Para ativar o suporte a SSL por exemplo, copie os arquivos ssl.conf e ssl.load:
# cp -a ssl.conf ssl.load ../mods-enabled/
A ativação dos módulos pode ser automatizada usando o comando "apache-modconf", que substitui a necessidade de ficar copiando manualmente os arquivos. Ele pode ser usado tanto em conjunto com o Apache 1.3, quanto com o Apache 2. Inclua no comando o parâmetro "enable", seguido do nome do módulo desejado, como em:
# apache-modconf apache enable mod_php4
|
|||||||