Especial Windows Server 2012 R2 (Parte 10 - Cache Web Squid 3.5 e como instalar o .NET Framework 3.X)
Eis mais uma atualização de uma série de postagens clássicas do Blog! Retomando o especial sobre o Windows Server 2012 R2, nesta postagem mostrarei a vocês como instalar a mais nova versão do Squid. Confira os detalhes aqui!
Na parte anterior desta série eu havia mostrado como instalar e configurar o Squid for Windows, então na já antiga versão 2.7. Felizmente descobri (com a dica do amigo Marcos FRM do ótimo Blog Caixa Seca) que existe uma versão atualizada do Squid for Windows e desta forma mostrarei aqui a instalação (ou atualização, conforme o caso) desta versão atualizada do Squid.
Atualização
Caso você esteja fazendo a atualização a partir do Squid 2.X, recomendo fortemente parar e desabilitar o seu serviço antes de iniciar a instalação da nova versão para evitar conflitos. Recomendo também renomear a pasta de instalação do Squid (geralmente C:\squid) para qualquer outro nome de sua preferência. Quando você estiver seguro do funcionamento do Squid 3.5 poderá remover este serviço e apagar a pasta da instalação antiga se preferir.
Desativando o serviço do Squid 2.X |
Instalando o .NET Framework 3.X
O Squid for Windows 3.5 requer o .NET Framework 3.X instalado. Para tanto, acesse o utilitário de adicionar recursos do Windows Server (Add Roles and Features), expanda a opção .NET Framework 3.5 Features e selecione apenas a primeira opção.
Caso o utilitário exiba uma mensagem (em amarelo no topo da tela) informando que não há uma fonte para instalar o recurso, não prossiga (porém mantenha o utilitário aberto) e procure por uma imagem ISO ou o DVD de instalação do Windows Server 2012 R2.
Alerta do Windows |
Caso você for utilizar uma imagem ISO, basta um duplo clique sobre a mesma para que ela seja montada com uma letra de unidade.
Arquivo ISO montado com uma letra de unidade (aqui F:) |
Com o DVD ou a imagem ISO prontos, volte ao utilitário de instalação e clique em Specify an alternate source path (opção indicada pela seta). Na caixa de diálogo que é exibida entre com o caminho F:\sources\sxs, substituindo a letra F: pela unidade onde se encontra a mídia de instalação do Windows Server.
Especificando o caminho para a mídia de instalação |
A instalação deverá acontecer sem problemas.
Instalando o Squid 3.5
Caso você ainda não tenha feito, baixe o instalador do Squid 3.5 for Windows e execute o arquivo squid.msi.
Na tela de seleção de local, recomendo manter o padrão C:\squid. O instalador também adiciona uma exceção para o Squid no firewall do Windows.
Após a instalação você verá que foi criado um applet ao lado do relógio para acessar algumas funções do Squid for Windows...
... bem como também um novo serviço do sistema.
Revisando o squid.conf
Agora é a hora de revisar o arquivo squid.conf (que geralmente fica em c:\squid\etc). Caso você esteja atualizando do Squid 2.X recomendo criar um arquivo novo do zero pois muitas das opções que eram utilizadas nas versões 2.X do Squid ficaram obsoletas a partir das 3.X. Aqui segue um exemplo de um squid.conf simples mas funcional (nos comentários explico o que faz cada opção):
acl localnet src 192.168.0.0/24 # Defina a faixa de IPs da sua rede local
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
http_access deny to_localhost
# Adapt localnet in the ACL section to list your (internal) IP networks
http_access allow localnet
http_access allow localhost
# And finally deny all other access to this proxy
http_access deny all
# Squid normally listens to port 3128
visible_hostname netgate
http_port 3128
cache_mem 512 MB # Cache na RAM
maximum_object_size 512 MB # Tamanho máximo de um objeto no cache
#esvazia o cache
cache_swap_low 90
cache_swap_high 95
# Uncomment the line below to enable disk caching - path format is /cygdrive/<full path to cache folder>, i.e.
# Aqui define a localização do cache e o seu tamanho máximo em MB – o número 5120 MB ou 5 GB
cache_dir aufs /cygdrive/c/squid/cache 5120 16 256
# Leave coredumps in the first cache dir
coredump_dir /var/cache/squid
# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
Finalizando
Após configurar o seu squid.conf reinicie o serviço do Squid. Agora abra o utilitário Squid Terminal e digite squid para verificar se há erros no arquivo squid.conf - caso não seja retornada nenhuma mensagem está tudo certo! Opcionalmente você pode também rodar o comando squid -k parse para fazer uma auditoria mais abrangente no arquivo.
Finalizando a configuração, caso o comando squid não tenha retornado nenhum erro, rode agora o comando squid –z para que sejam criadas as pastas que armazenarão o cache.
Configurando os clientes
Para os clientes basta configurar nos navegadores a conexão proxy pelo IP do servidor e a porta do Squid, que por padrão é a 3128. Caso você tenha atualizado do Squid 2.X e mantido a mesma porta a mudança será transparente.
Por fim, gostaria de mais uma vez agradecer ao amigo Marcos FRM pela ótima dica do Squid 3.5 for Windows. Valeu meu velho!
Anterior:
Veja também:
De nada. ;-)
ResponderExcluirVamos ver se em futuras versões conseguem compilar nativamente com o MinGW e deixam o Cygwin de lado. Não tenho ideia do impacto do overhead do Cygwin, mas tirar a "atravessadora" cygwin1.dll é melhor. :-) Eu acho que o código do Squid em si já compila, porém as bibliotecas de apoio talvez é que sejam problemáticas.
Levando em conta que o Squid é escrito em C++, quem sabe até possa algum dia compilar no MSVC. Muita coisa Unix-like escrita em C (não ++) usa C99, que a Microsoft teima em não implementar por completo no MSVC. Isso causa dor de cabeça em projetos multiplataforma que usam a linguagem. Os desenvolvedores acabam então nivelando por baixo usado C89 (essa versão suportada pelo MSVC) ou mantendo C99, ignorando o MSVC e usando GCC mesmo via MinGW. Ou o Clang/LLVM (projeto open source patrocinado pela Apple) mais recentemente.
http://arstechnica.com/information-technology/2013/06/c99-acknowledged-at-last-as-microsoft-lays-out-its-path-to-c14/
Não é o caso do Squid. C++ é bem tratado pela MS e o suporte é mantido atualizado em suas ferrametas.
Grande Marcos, ótima contribuição como sempre!
ExcluirRepostando. Desculpe lhe dar trabalho de excluir o post deletado. Vida de blogueiro é assim!
ExcluirEntre as versões 3.3 e 3.5 foi feito um trabalho para suportar melhor o MinGW. Na 3.5, o suporte ao Windows é considerado beta. Melhor do que nenhum suporte como era antes. Aquelas compilações da Acme Consulting eram versões muito modificadas. Hoje, essa compilação do post usa o código upstream sem passar por quinhentas cirurgias antes... :-)
Contudo, o alvo principal do desenvolvimento ainda são os Unix-like* e o desempenho da versão Windows não é o mesmo. Porém não sei precisar de quanto é essa diferença.
* Curiosamente, apesar do Mac OS X ser um Unix-like, o suporte a ele está moribundo no Squid.
http://article.gmane.org/gmane.comp.web.squid.general/109017
Diferença entre Cygwin e MinGW:
http://stackoverflow.com/questions/771756
Susse! Quanto ao desempenho do Squid no Windows não tenho reclamações, sinceramente não consegui notar diferença quando troquei o Debian pelo Windows Server. E esta versão Diadele está melhor ainda pois é nativa de 64 bits, além das demais vantagens que você bem mencionou.
ExcluirSaiu hoje a versão 3.5.5. Aparentemente não requer mais o .NET 2.0/3.x.
ResponderExcluirBacana! Assim que puder vou atualizar. Obrigado!
Excluir