Padrao Sarava Versao Debian - Vserver Mir
Indice :
Servicos
Apache
Tomcat
Desabilitar log
editar o arquivo:
/usr/share/tomcat5.5/server.xml
comentar:
<!--
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
-->
Script para reiniciar o tomcat
Localiza\xE7\xE3o:
/var/local/scripts/adminrestart.sh
script:
#!/bin/bash
# script para reiniciar o tomcat
LOCKFILE="/tmp/backuplock"
if [ ! -f "$LOCKFILE" ]; then # caso nao exista uma trava de backup
if ! wget --timeout=10 -q -O - http://localhost:8180/brasil/servlet/Mir | grep -q English
then
echo "`date`- Mir is down'" >> /var/log/mir/mir.log;
/etc/init.d/tomcat5 stop 2>&1 > /dev/null
sleep 5
killall java 2>&1 > /dev/null # maquina java da sun
killall kaffe-bin 2>&1 > /dev/null # maquina java kaffe
/etc/init.d/tomcat5 start 2>&1 > /dev/null
#else echo "`date` 'Mir is up'" #>> /var/log/mir/mir.log;
fi
fi
webalizer
instala\xE7\xE3o:
apt-get install webalizer
configura\xE7\xE3o: 1 arquivo .conf para cada site localizado em /etc/webalizer
No arquivo adicionado isso:(exemplo brasil)
LogFile /var/log/apache2/brasil/access.log
OutputDir /var/www/brasil.indymedia.org/webalizer
HostName brasil.indymedia.org
Copia da pasta webalizer(html, etc) na pasta de cada site:
/var/www/SITE/webalizer
Exemplo: /var/www/brasil.indymedia.org/webalizer/
Script no cron.daily rodando todos as confs.
Padrao CMS/Mir + Banco de Dados + sincronizacao
Mir
Gerenciador de conte\xFAdo MIR
Pre-requisitos para o mir:
apt-get install apache2
apt-get install sun-java5-jdk
apt-get install ant
apt-get install postgresql
apt-get install tomcat5.5 tomcat5.5-admin
apt-get install cvs
para instalar o java adicionamos o reposit\xF3rio:
deb http://ftp.us.debian.org/debian/ etch main contrib non-free
Postgres
Scripts de sincroniza\xE7\xE3o: CMI Brasil
Conforme abordado na se\xE7\xE3o
Produzindo o conte\xFAdo atrav\xE9s de um script do texto
O Gerenciador de Conte\xFAdo MIR, a requisi\xE7\xE3o para a produ\xE7\xE3o de conte\xFAdo e o envio de conte\xFAdo para outros servidores espelhos n\xE3o faz parte das funcionalidades do MIR. Por isso, utilizamos um conjunto de scripts para desempenhar essa tarefa.
Nesse conjunto, um script fica rodando o tempo todo: ele requisita ao MIR a produ\xE7\xE3o de conte\xFAdo e aguarda essa produ\xE7\xE3o. Quando ela estiver conclu\xEDda, o script inicia o envio dos arquivos novos ou modificados para os espelhos remotos.
Usando os scripts
Ao todo, s\xE3o quatro scripts:
- production: roda o tempo todo, coordenando a produ\xE7\xE3o e a sincroniza\xE7\xE3o de conte\xFAdo do s\xEDtio
- reload-mir: checa se o MIR e o Tomcat est\xE3o funcionando, caso contr\xE1rio recarrega ambos
- rsync-fast: faz a sincroniza\xE7\xE3o do conte\xFAdo publicado nos \xFAltimos dois meses
- rsync-slow: faz a sincroniza\xE7\xE3o de todo o conte\xFAdo do s\xEDtio, um pouco de cada vez
production
O
production \xE9 o script principal e controla a execu\xE7\xE3o de todos os outros. Sua sintaxe \xE9:
production arquivo-de-configuracao a\xE7\xE3o
A a\xE7\xE3o pode ser
- enable: habilita a execu\xE7\xE3o do script
- disable: desabilita a execu\xE7\xE3o do script
- once: roda o script uma \xFAnica vez (\xFAtil apenas para testes)
- non-stop: uso normal do script, para que ele rode continuamente
- kill: mata o script
Quando chamado com as op\xE7\xE3o
once,
production faz o seguinte:
- caso a sincroniza\xE7\xE3o esteja em andamento, espera que ela termine
- enfileira tarefas para produ\xE7\xE3o no MIR
- espera que essas tarefas sejam executadas
- sincroniza o conte\xFAdo produzido com o espelho remoto
Quando chamado com a op\xE7\xE3o
non-stop,
production roda em loop at\xE9 ser desabilitado, executando o tempo todo a sequ\xEAncia descrita para a op\xE7\xE3o
once. No caso do CMI Brasil, o
production fica agendado com esse op\xE7\xE3o na crontab do root:
* * * * * production arquivo-de-configuracao non-stop &> /dev/null
Por isso, de tempos em tempos \xE9 chamado. Caso j\xE1 exista um
production rodando, a inst\xE2ncia chamada pela atual execu\xE7\xE3o do cron \xE9 terminada. Caso o script seja desabilitado (atrav\xE9s da op\xE7\xE3o
disable, ele n\xE3o rodar\xE1 mesmo que chamado via cron.
Assim, podemos encarar o script como se fosse um pequeno
daemon: habilitamos sua execu\xE7\xE3o com
production arquivo-de-configuracao enable
e quando precisarmos fazer alguma manuten\xE7\xE3o no s\xEDtio ou quisermos atualizar o pr\xF3prio script, basta desabilitarmos:
production arquivo-de-configuracao disable
A desabilita\xE7\xE3o n\xE3o \xE9 imediata j\xE1 que
production apenas checa se foi desabilitado ao terminar uma sequ\xEAncia de produ\xE7\xE3o e sincroniza\xE7\xE3o do conte\xFAdo, para evitar que o espelho fique com conte\xFAdo defasado.
De modo an\xE1logo, a op\xE7\xE3o
enable n\xE3o executa imediatamente o script: ela apenas o habilita para que a pr\xF3xima chamad do cron o execute.
Procedimento de instala\xE7\xE3o e atualiza\xE7\xE3o
Como atualizar ou instalar do zero os scripts de sincroniza\xE7\xE3o do CMI Brasil. Isso consiste em:
- Desabilitar os scripts
- Baixar os scripts do reposit\xF3rio
- Configur\xE1-los
- Arrumar as pastas de log e as entradas no cron
Os scripts podem ser desabilitados com o comando
/home/brasil/bin/production /home/brasil/config/production.cfg disable
Espere que no arquivo de registro
/var/log/mir/brasil/production.log o script sinalize que parou de rodar e ent\xE3o baixe e instale os scripts:
cd /home/brasil ; mv bin bin.old
svn checkout svn://svn.sarava.org/daileon/production
mv production bin && chmod 700 bin/*
mkdir -p /home/brasil/{config,run} && chown brasil.brasil config run
mkdir -p /var/log/mir/brasil
Se tudo j\xE1 estiver instalado, provavelmente voc\xEA n\xE3o precisar\xE1 fazer todo esse procedimento, bastando apenas isso:
cd /home/brasil/bin
svn update
Configurando os scripts
Edite os scripts, ajustando suas configura\xE7\xF5es. Arrume o arquivo de configura\xE7\xE3o
/home/brasil/config/production.cfg, cujo exemplo \xE9 o seguinte:
# site, folders and files
SITE="brasil" # nome do sitio
SOURCEBASE="/var/www/brasil/site" # local do sitio
LOG="/var/log/mir/brasil/production.log"
SYNC_LOGS="/var/log/rsync/brasil"
BACKUP_LOCK="/tmp/backuplock"
RUN="/home/brasil/run"
# servlet
SERVLET="brasil"
SERVLET_HOST="localhost"
SERVLET_PORT="8180"
SERVLET_USER="usuario"
SERVLET_PASS="senha"
# jobs
JOBS="/home/brasil/config/production.jobs"
DAILY_JOBS="/home/brasil/config/daily.jobs"
# etc
LOGIN="usuario" # usuario da interface administrativa
PASSWD="senha" # senha para a interface administrativa
WAIT="60" # segundos de espera
DAILY_QUEUE="15" # a cada quantas rodadas as tarefas diarias sao agendadas
STYLES="red green blue"
LANGS="pt eo en es"
FIRST_YEAR="2000" # primeiro ano com conteudo (inicio do site)
HOSTS="USUARIO@SERVIDOR:/PASTA USUARIO2@SERVIDOR2:PORTA/PASTA2" # caminhos para os espelhos
Coloque no arquivo
/home/brasil/bin/config/production.jobs as tarefas a serem continuamente enfileiradas:
# articles changed deve seguir depois do startpage generate,
# para que nao hajam 404s listados na coluna da direita
syndicationwire generate
startpage generate
articles changed
media new
syndication generate
opentrasharchive update
E no arquivo
/home/brasil/bin/config/daily.jobs as tarefas a serem executadas apenas uma vez ao dia:
topicarchive new
featurearchive update
fullopenpostingarchive update
topicstartpage generate
Certifique-se de que o arquivo
production.cfg n\xE3o esteja com permiss\xE3o de leitura para outros usu\xE1rios, caso contr\xE1rio senhas para a interface do Tomcat e para a administra\xE7\xE3o do s\xEDtio estar\xE3o dispon\xEDveis a qualquer usu\xE1rio do sistema.
Colocando no crontab
Para que os scripts rodem, adione ao crontab do root:
* * * * * /home/brasil/bin/production /home/brasil/config/production.cfg non-stop &> /dev/null
Uma vez estando no crontab, o script production come\xE7ar\xE1 a rodar automaticamente. Se por algum acaso a m\xE1quina for reiniciada ou ent\xE3o o script por alguma raz\xE3o for encerrado, o cron se encarregar\xE1 de rod\xE1-lo novamente.
Observa\xE7\xF5es
- Para que o script funcione direito, \xE9 preciso que os par\xE2metros de configura\xE7\xE3o do MIR Mir.Localizer.OpenPosting.ContentProducer e Mir.Localizer.OpenPosting.CommentProducers contenham apenas uma tarefa simb\xF3lica (isto \xE9, que n\xE3o fa\xE7a nada ou que fa\xE7a muito pouco), pois do contr\xE1rio o script production n\xE3o ser\xE1 o \xFAnico a enviar tarefas para a fila, o que pode atrapalhar o andamento da produ\xE7\xE3o.
- Para evitar que arquivos de trava permane\xE7am no sistema caso o servidor seja repentinamente reiniciado -- o que causaria o t\xE9rmino da produ\xE7\xE3o de conte\xFAdo, j\xE1 que os arquivos de trava impedem certas partes dos scripts de produ\xE7\xE3o de rodarem --, \xE9 recomendada a cria\xE7\xE3o de um script de inicializa\xE7\xE3o, como por exemplo /etc/init.d/mir-cleanup, que para o s\xEDtio do CMI Brasil deve conter algo como:
#!/bin/sh
#
# /etc/init.d/mir-cleanup
#
/bin/rm /home/brasil/run/*
No caso, a pasta
/home/brasil/run \xE9 o local onde os arquivos de trava s\xE3o armazenados. Para que esse script seja executado durante a inicializa\xE7\xE3o do sistema, use o comando
update-rc.d mir-cleanup defaults
Criando um espelho do CMI-Brasil
Espelhos do CMI Brasil podem ser criados sem muito esfor\xE7o. Dividiremos o trabalho em duas partes:
- Obten\xE7\xE3o do conte\xFAdo do s\xEDtio do CMI
- Configura\xE7\xE3o do servidor web
Obten\xE7\xE3o do conte\xFAdo do s\xEDtio
Existem duas maneiras de replicar o conte\xFAdo do s\xEDtio do CMI no espelho:
- Puxando o conte\xFAdo do s\xEDtio a partir de um servidor de rsync
- Enviando o conte\xFAdo do s\xEDtio a partir do servidor de publica\xE7\xE3o
Nas pr\xF3ximas se\xE7\xF5es, abordaremos os dois m\xE9todos. Escolha o que melhor se encaixa \xE0s necessidades do espelho, assumindo que o s\xEDtio ficar\xE1 armazenado na pasta
/var/www/brasil do servidor espelho.
Puxando o conte\xFAdo
Pode ser que algum espelho, ou mesmo o servidor onde est\xE1 o sistema de publica\xE7\xE3o do s\xEDtio, ofere\xE7a acesso p\xFAblico atrav\xE9s de
rsync. Supondo que exista um servidor nessas condi\xE7\xF5es e que esteja acess\xEDvel atrav\xE9s do dom\xEDnio
rsync.brasil.indymedia.org e que ele ofere\xE7a uma c\xF3pia do conte\xFAdo do CMI Brasil na pasta
brasil.indymedia.org, use o seguinte comando periodicamente para criar e atualizar a c\xF3pia do s\xEDtio no seu espelho:
rsync -va rsync://rsync.brasil.indymedia.org/brasil.indymedia.org/ /var/www/brasil/
Esse comando vai demorar muito tempo pra rodar na primeira vez, j\xE1 que o site do CMI tem mais de 20GB. Nas outras vezes ele s\xF3 copia as diferen\xE7as. Deixe esse comando como um script e execute-o periodicamente via cron:
# pegue o cmi brasil toda a hora:
15 * * * * /home/brasil/bin/rsync-hour.sh
Caso voc\xEA esteja fazendo um backup do site, o seguinte comando pro rsync pode ser mais interessante:
rsync -vaz --progress --stats rsync://rsync.brasil.indymedia.org/brasil.indymedia.org/ bkp/
Voc\xEA tamb\xE9m pode limitar a banda do rsync com a op\xE7\xE3o
--bwlimit=kbps, onde
kbps \xE9 a quantidade m\xE1xima de kbps na transmiss\xE3o.
Enviando o conte\xFAdo
Alternativamente, voc\xEA pode utilizar os scripts de
sincroniza\xE7\xE3o do CMI Brasil:
Configura\xE7\xE3o do servidor web
Adicione um
Virtual Host no seu Apache para www.midiaindependente.org / brasil.indymedia.org e
utilize o Log e o ErrorLog sem registro de IPs, tendo como
DocumentRoot o /var/www/brasil. Como exemplo, a seguinte configura\xE7\xE3o pode ser usada no seu httpd.conf:
<VirtualHost brasil.indymedia.org>
ServerName brasil.indymedia.org
ServerAlias www.midiaindependente.org midiaindependente.org
DocumentRoot /var/www/brasil
RewriteEngine on
RewriteRule ^/media/(.*)\.(.*) /media/contrib/$1.$2
<Directory /var/www/brasil>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride none
</Directory>
CustomLog /dev/null combined
ErrorLog /dev/null
</VirtualHost>
Observa\xE7\xF5es:
- As p\xE1ginas do CMI usam Server Side Includes, ent\xE3o trate de habilit\xE1-las no seu httpd.conf.
- Devido ao fato de que alguns arquivos de m\xEDdia terem sido publicados ao longo dos anos de forma manual na pasta media/ e que recentemente foram movidos para a pasta media/contrib (afim de manter a organiza\xE7\xE3o), as diretivas RewriteEngine e RewriteRule s\xE3o necess\xE1rias (veja aqui a documenta\xE7\xE3o sobre essas diretivas).
Testando se o espelho funciona
Para testar se o espelho foi adicionado \xE0 entrada DNS, use os seguintes comandos:
dig @IP-DO-DNS brasil.indymedia.org A
dig @IP-DO-DNS midiaindependente.org A
No caso,
IP-DO-DNS \xE9 o endereco IP de um servidor DNS. Como resposta para cada um desses comando (i.e, um comando para
brasil.indymedia.org e outro para _midiaindependente.org), espera-se uma lista de todos os IPs adicionados ao espelho, como por exemplo:
;; QUESTION SECTION:
;brasil.indymedia.org. IN A
;; ANSWER SECTION:
brasil.indymedia.org. 2215 IN A IP-DO-ESPELHO-1
brasil.indymedia.org. 2215 IN A IP-DO-ESPELHO-2
brasil.indymedia.org. 2215 IN A IP-DO-ESPELHO-3
O IP do novo espelho deve aparecer, sen\xE3o h\xE1 algo errado. Uma vez que o DNS for atualizado, verifique se o site pode ser sempre acessado sem nenhum problema, caso contr\xE1rio algum dos espelhos pode estar mal configurado.
Refer\xEAncias
Para mais detalhes sobre espelhamento de s\xEDtios, consulte:
Arquivos de log
- rsync: /var/log/rsync
- scripts de produ\xE7\xE3o: /var/log/mir
- backup: /var/log/backup
Backups
Um servidor do CMI Brasil deve utilizar o
backupninja para fazer seus backups. No backupninja, as configura\xE7\xF5es de backup ficam no servidor principal, marieta, em
/etc/backup.d.
Historico de edicao desta pagina
--
MemBrana - 04 Apr 2008 - sobre webalizer, tomcat, ...