« dezembro 2006 | Entrada | fevereiro 2007 »
janeiro 28, 2007
módulo my_vhost
Está disponível uma nova versão do módulo mod_myvhost, que possibilita a configuração em massa de virtualhosts de forma simplificada e centralizada, sendo a configuração guardada numa base de dados MySQL. Consequentemente, a utilização deste módulo facilita e promove a integração com processos de aprovisionamento e alteração de configurações, permitindo até gerir as diferentes configurações relativas à componente PHP.
Tendo em conta que a configuração relativa a cada virtualhost pode ser alterada (e activada) sem paragem do serviço, facilmente se conclui que a utilização deste módulo traz grandes vantagens aos serviços de alojamento web.
A instalação e configuração deste módulo será objecto de análise numa segunda edição do livro Apache.
Publicado por scorpio às 12:52 PM | Comentários (0) | TrackBack
janeiro 19, 2007
URLs hierárquicos e intuitivos
Com o advento da web2.0 (cada vez mais virada para os utilizadores), cada vez faz mais sentido criar estruturas de URLs que sejam intuitivas, fáceis de identificar, permanentes (tal como os conteúdos para onde estes apontam) e que possam ser manipuladas pelos utilizadores. Para além de promoverem a usabilidade, facilitam a utilização de páginas de entrada alternativas e mais apropriadas a cada utilizador; assim, é facilmente defensável que ao favorecer mecanismos de navegação alternativos (que não os que o site disponibiliza), o utilizador acaba por encontrar mais rapidamente os recursos que procura.
Uma outra preocupação que deve ser tida em consideração na criação da estratégia de navegação é a sua organização, tendo em conta que os URLs nunca devem desaparecer (tal como os recursos a que se referem), e a estrutura ser hierárquica, facilitando a navegação dos critérios mais genéricos para os mais específicos.
Numa estrutura adequada de URLs, só são utilizados parâmetros para a componente dinâmica em formulários; caso contrário, existe uma camada de abstracção que garante que o acesso a /automoveis/alfa romeo/ é passado correctamente à componente aplicacional (em oposição a /listar.asp?tipo=1&marca=3).
Se a estrutura criação da estrutura de navegação tiver em consideração estas preocupações, conseguimos atingir alguns objectivos interessantes:
estrutura legível e hierárquica
Se a estrutura de navegação for legível e hierárquica, os utilizadores facilmente assimilam a estrutura e os conteúdos disponibilizados.
URLs devem poder ser guardados/memorizados
Se os URLs forem facilmente memorizados, é natural que os visitantes consigam navegar mais facilmente e atingir mais rapidamente o seu objectivo; se o utilizador procura automóveis da marca alfa romeo, deve ser possível fazê-lo utilizando o URL /automoveis/alfa romeo/ e não /listar.asp?tipo=1&marca=3. Para além disso, grande parte dos ataques a aplicações web passa pela manipulação de parâmetros (que de outra forma deixa de ser possível)...
URLs devem poder ser adivinhados
Se o visitante quer procurar livros de banda desenhada, deve ser possível adivinhar a forma mais rápida de chegar ao que procura experimentando através do acesso a /comprar/livros/bd/, /livros/bd/, /banda-desenhada/, etc.
URLs devem esconder a complexidade aplicacional e organização de conteúdos
As alterações de infra-estrutura aplicacional ocorrem cada vez com mais frequência, tendo em conta a evolução de funcionalidades. Isso implica que a hierarquia de URLs também é alterada (/prod/comprar.php?tipo=66&prod=3 passa a /op/int/compra.jsp?SID=e873h4d8776d73), traduzindo-se em alterações visíveis e indesejadas para os visitantes (que só querem chegar rapidamente ao que procuram). Assim, a camada de abstracção deve ser responsável por traduzir o acesso aos dados entre aplicações, mantendo a estrutura visível para os visitantes.
É ainda possível pré-gerar versões estáticas dos conteúdos gerados dinamicamente, e servi-los se existirem no formato estático, libertando a componente aplicacional de algum trabalho.
Apresentar alternativas
Se não existir correspondência entre um URL e um determinado recurso, devem ser apresentadas alternativas ao visitante, de forma a detectar potenciais erros e garantir que o utilizador é direccionado para os conteúdos apropriados.
Estes objectivos podem facilmente ser atingidos com componentes tecnológicas que existem, são fiáveis mas tipicamente são pouco utilizadas. Os mecanismos de reescrita de URLs potenciam outros objectivos, como por exemplo balanceamento, distribuição de conteúdos por vários serviços internos, criação de friendly urls, SEO, etc. e a sua utilização só tem como requisito tempo para definir uma estratégia...possivelmente com a consulta do capítulo 9, onde são abordadas algumas configurações básicas do mecanismo de reescrita.
Publicado por scorpio às 09:55 AM | Comentários (0) | TrackBack
janeiro 16, 2007
análise netcraft, janeiro de 2007
A análise da Netcraft de Janeiro de 2007 encontrou cerca de 106 milhões de sites activos (mais 1.6 milhões do que no mês anterior), sendo notória a subida dos servidores Microsoft (650000 sites só no serviço Live Space blogs).
A balança continua a estar muito mais pesada do lado dos servidores Apache com cerca de 60.64%, estando o histórico segundo (Microsoft) com 30.67%.
Foi também visível um forte crescimento do número de sites no Google e Go Daddy. A criação de blogs continua a ser um fortíssimo factor de crescimento de sites, tal como no último ano.
Publicado por scorpio às 10:34 AM | Comentários (0) | TrackBack
janeiro 09, 2007
Migrar do Microsoft IIS para Apache em Linux
No artigo (em Inglês) da Searchopensource podemos encontrar algumas ferramentas que podem ajudar na migração de um sitio em Microsoft IIS para Apache em Linux.
A migração poderá ser efectuada automaticamente utilizando ferramentas como o Versona Progression Web ou o LSP. No entanto estas ferramentas não migram aplicações web de plataformas Microsoft para Linux. Apenas os ficheiros e permissões são copiadas.
Publicado por overflow às 11:37 AM | Comentários (0) | TrackBack
janeiro 06, 2007
arquitectura web para balanceamento
As infra-estruturas web actuais conjugam a necessidade de servir conteúdos estáticos (documentos, imagens, filmes, som, etc) com a componente aplicacional. É típico de um mesmo serviço web garantir as duas funcionalidades, em particular com tecnologias PHP, Perl, Python, sendo visível a degradação de desempenho com o aumento da sua utilização, uma vez que servir conteúdos dinâmicos implica a utilização de mais recursos (memória, tempo de processador, acesso a disco) do que servir conteúdos estáticos.
Tirando partido de uma funcionalidade específica do mod_rewrite, é possível segmentar as duas funções (servir conteúdos estáticos e executar a componente dinâmica), possibilitando simultaneamente uma melhoria de desempenho e menor utilização de recursos sem quaisquer alterações na componente aplicacional.
Para o conseguir, é necessário caracterizar pelo menos uma das componentes (estática ou dinâmica) no que diz respeito ao espaço de URIs, de forma a parametrizar o mecanismo que garante a divisão de pedidos. Tipicamente, esta caracterização é efectuada com base nas extensões dos ficheiros que correspondem à componente aplicacional (.pl, .php, .jsp, etc). Um outro requisito é a instalação de um serviço web que recebe todos os pedidos (apache com suporte mod_rewrite e mod_proxy) e a activação do serviço relativo à componente aplicacional num outro porto. Na prática, o primeiro serviço recebe todos os pedidos, aplica algumas regras aos pedidos e decide se deve servir de imediato os pedidos (tipicamente, conteúdos estáticos) ou se solicita o resultado dos mesmos pedidos ao servidor aplicacional.
Para efeitos de exemplo, vamos assumir que a componente aplicacional é garantida por ficheiros com a extensão jsp e que o serviço aplicacional está à escuta no porto 8080. A configuração do serviço web de frontend (que receve todos os pedidos) deverá ser semelhante ao seguinte:
<VirtualHost *:80>
ServerName apache.superbofh.org
ServerAlias www.apache.superbofh.org
...
...
DocumentRoot /srv/vhosts/apache.superbofh.org
RewriteEngine On
RewriteRule ^/(.*\.jsp.*)$ http://%{HTTP_HOST}:8080/$1 [P,L]
RewriteRule ^/?$ http://%{HTTP_HOST}:8080/default.html [P,L]
</VirtualHost>
Esta configuração garante que os conteúdos estáticos (e/ou outros que não os servidos pelos .jsp) são servidos rapidamente, e os pedidos da componente aplicacional são passados ao servidor correspondente. Para além disso, a configuração não publicita o facto de se estar a utilizar serviços diferentes para garantir as duas funções; caso seja pretendido que os clientes se apercebam deste facto, bastará alterar as flags das regras de reescrita (substituir o P por um R).
Publicado por scorpio às 12:24 PM | Comentários (0) | TrackBack
janeiro 02, 2007
nova versão HAProxy
Está disponível a nova versão do HAProxy, um serviço de balanceamento TCP/HTTP utilizado tipicamente em serviços web.
Nesta nova versão passa a ser possível efectuar o balanceamento de pedidos com base em parâmetros do próprio pedido (partes do URI, hostname, etc) e garantir a persistência de sessões com base em cookies. A fiabilidade e desempenho das versões anteriores mantêm-se, e para além da estratégia de gerir ligações baseada no select() suporta também a estratégia epoll() que consegue gerir mais facilmente (e com melhor desempenho) um número elevado de ligações.
Publicado por scorpio às 07:46 PM | Comentários (0) | TrackBack
janeiro 01, 2007
Apache labs
Foi lançado há cerca de um ano o projecto Labs, onde podemos encontrar alguns subprojectos da ASF em estado embrionário.
Este projecto tem o objectivo de permitir a candidatos a subprojectos iniciarem o seu ciclo de desenvolvimento dentro de um ambiente semelhante ao de um projecto oficial da ASF, pese embora o facto de as regras e os requisitos serem bastante mais leves. Uma das preocupações principais que levou à criação deste projecto foi o facto de, pelo peso associado à manutenção de um projecto oficial, ser difícil à ASF inovar e criar processos de forma rápida e responder, assim, mais rapidamente ao florescimento de ideias para novos projectos.
Publicado por scorpio às 09:47 PM | Comentários (0) | TrackBack