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, ...
Topic revision: r3 - 27 Jun 2008, ToyaMileno
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback