Servidores
Erro do django-reversion 1.5 com django <1.3.x
by Felipe 'chronos' Prenholato on 11:06, under Apache, Django, Servidores
Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços!
Isso me aconteceu a pouco e eu não vi resultados no google para o erro em específico, então estou eu aqui fazendo minha parte
.
Caso você ver o erro abaixo e tiver rodando reversion 1.5 + django 1.2.x, você precisa instalar alguma versão menor que a 1.5 do reversion, pois a 1.5 só suporta django 1.3 (veja tabela de versões aqui).
Segue a exception:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | [Tue Sep 27 10:19:17 2011] [error] MyLDAPUser->AUTHENTICATE: felipe.rafael@pdg.com.br authenticated :D [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] mod_wsgi (pid=14847): Exception occurred processing WSGI script '/var/www/qas3/portal/apache/virtualenv-qas3.wsgi'. [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] Traceback (most recent call last): [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/core/handlers/wsgi.py", line 252, in __call__ [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] response = middleware_method(request, response) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/site-packages/reversion/middleware.py", line 20, in process_response [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] reversion.revision.end() [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/site-packages/reversion/revisions.py", line 301, in end [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] comment = self._state.comment, [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/models/manager.py", line 138, in create [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] return self.get_query_set().create(**kwargs) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/models/query.py", line 358, in create [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] obj.save(force_insert=True, using=self.db) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/models/base.py", line 458, in save [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] self.save_base(using=using, force_insert=force_insert, force_update=force_update) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/models/base.py", line 551, in save_base [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] result = manager._insert(values, return_id=update_pk, using=using) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/models/manager.py", line 195, in _insert [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] return insert_query(self.model, values, **kwargs) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/models/query.py", line 1524, in insert_query [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] return query.get_compiler(using=using).execute_sql(return_id) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/models/sql/compiler.py", line 788, in execute_sql [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] cursor = super(SQLInsertCompiler, self).execute_sql(None) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/models/sql/compiler.py", line 732, in execute_sql [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] cursor.execute(sql, params) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/backends/util.py", line 15, in execute [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] return self.cursor.execute(sql, params) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/src/django/django/db/backends/mysql/base.py", line 86, in execute [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] return self.cursor.execute(query, args) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/site-packages/MySQLdb/cursors.py", line 176, in execute [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] if not self._defer_warnings: self._warning_check() [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] File "/opt/python2.6/lib/python2.6/site-packages/MySQLdb/cursors.py", line 92, in _warning_check [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] warn(w[-1], self.Warning, 3) [Tue Sep 27 10:19:17 2011] [error] [client 192.168.20.79] Warning: Field 'manager_slug' doesn't have a default value |
Migrando bases de dados LATIN1 para UTF-8 com o PostgreSQL
by Felipe 'chronos' Prenholato on 03:59, under Databases, Debian/Ubuntu, Dicas, Gentoo, Linux, PostgreSQL, Servidores
Nos dias atuais é um padrão que todos os sites e servidores web rodem ao menos com UTF-8 como encoding default, entretanto pode-se encontrar casos onde ainda se roda LATIN1 ou até mesmo ASCII.
O caso que tratamos hoje é de um servidor Debian, versão 5.0.3 (lenny), que usava o encode LATIN1 quando instalado e configurado o Postgresql, e não me deixava criar uma base de dados UTF-8, gerando o seguinte erro:
debian:~# su postgres -c 'createdb teste3 -E UTF-8' createdb: database creation failed: ERROR: encoding UTF8 does not match server's locale en_US DETAIL: The server's LC_CTYPE setting requires encoding LATIN1.
Compilando fácil com Debian/Ubuntu
by Handrus Nogueira on 18:28, under Debian/Ubuntu, Linux, Servidores
Como usuário do bom e velho gentoo, sempre senti falta da possibilidade de compilar softwares para ganhar uma certa performance. Principalmente em se tratando e softwares de uso em servidor, como Java, PHP, apache, mysql e porstgres. Nos meus testes sempre senti diferença entre as versões pré-compiladas e compilada in loco.
No Debian/Ubuntu a descoberta do apt-build me ajudou a contornar o problema com a mesma classe e quase a mesma eficiência que o portage.
Vamos ao passo-a-passo:
Para instalar o apt-build:
sudo apt-get install apt-build auto-apt
Configure para sua máquina:
dpkg-reconfigure apt-build
Escolha sua arquitetura de processador e o nível de otimização, o indicado é o médio.
As opções ficam salvas no arquivo /etc/apt/apt-build.conf ; Vamos apenas ajustar o número de processadores na ultima linha do arquivo altere-o para
make_options = " -j4"
onde o número é igual ao número de “cores” + 1. Portanto um quadcore seria “-j5″.
Para evitar que os pacotes compilados sejam atualizados pelos pacotes oficiais vamos editar o arquivo /etc/apt/preferences adicionando:
Package: *
Pin: release o=apt-build
Pin-Priority: 990
Não se esqueça de adicionar os repositórios de código fonte (deb-src) e pronto!
Agora ao invés do tradicional apt-get install
apt-build install
Exemplo: sudo apt-build install xchat emesene
Tutorial rápido sobre apt-build:
apt-build install –reinstall
apt-build upgrade Upgrade nos softwares instalados
apt-build world Recompila todo o sistema
apt-build remove programa Remove o programa
apt-build clean-build Remove pacotes compilados
apt-build clean-sources Remove os códigos fonte baixados.
Atualize o hosts.deny para bloquear tentativas de brute force
by Felipe 'chronos' Prenholato on 14:14, under Linux, Servidores
Ai embaixo um simples script para você bloquear hosts tentando brute force no seu SSH, muitas das vezes pode sanar o problema de ter uma porta diferente pro ssh
O script varre o /var/log/messages para detectar tentativas de invasão, pega os hosts, e adiciona no /etc/hosts.deny
Código:
#!/bin/bash</code> cp /etc/hosts.deny /var/tmp/hosts.deny # Jun 8 00:39:43 mintaka sshd[23332]: User root from 222.77.183.51 not allowed because not listed in AllowUsers egrep "$(date +%b) ($(date +%d)|$(date +%e)).*User .* from [a-z0-9\.]* not allowed because not listed in AllowUsers" /var/log/messages | sed -e 's/.* from \([a-z0-9\.]*\) .*/\1/' | sort | uniq | sed -e 's/^/ALL:/' > /etc/hosts.deny ; #Jun 8 11:54:33 mintaka sshd[31221]: Invalid user bob from 62.204.145.224 egrep "$(date +%b) ($(date +%d)|$(date +%e)).*Invalid user .* from [a-z0-9\.]*$" /var/log/messages | sed -e 's/.*Invalid user .* from//' | sort | uniq | sed -e 's/^/ALL:/' >> /etc/hosts.deny ; diff -u /etc/hosts.deny /var/tmp/hosts.deny &>/dev/null || (echo "** hosts.deny updated **" ; cat /etc/hosts.deny)
Script funcionando:
Sep 2 16:55:02 mintaka -- MARK --
Sep 2 13:58:10 mintaka sshd[20790]: Did not receive identification string from 189.2.118.72
Sep 2 13:58:34 mintaka sshd[20795]: Invalid user suporte from 189.2.118.72
# Tentativa de brute force
Sep 2 13:58:41 mintaka sshd[20798]: Invalid user suporte from 189.2.118.72
Sep 2 13:58:43 mintaka sshd[20800]: Invalid user suporte from 189.2.118.72
Sep 2 13:58:46 mintaka sshd[20802]: Invalid user suporte from 189.2.118.72
Sep 2 13:58:49 mintaka sshd[20804]: Invalid user suporte from 189.2.118.72
Sep 2 13:58:51 mintaka sshd[20806]: Invalid user suporte from 189.2.118.72
Sep 2 13:59:24 mintaka sshd[20817]: Did not receive identification string from 189.2.118.72
# Script roda
** hosts.deny updated **
ALL:74.221.239.100
ALL: 189.2.118.72
ALL: 200.27.79.101
ALL: 74.221.239.100
# E os hosts agora estão bloqueados
Sep 2 14:00:09 mintaka sshd[20826]: Invalid user teste2008 from 189.2.118.72
Sep 2 14:00:10 mintaka sshd[20864]: refused connect from 189.2.118.72 (189.2.118.72)
Eu rodo em minha máquina a cada 2 minutos
pingping – Verificando conexão com servidores.
by Felipe 'chronos' Prenholato on 12:28, under Dicas, Linux, Planet GentooBR, Servidores
Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços!
Ai em baixo meu script pingping. Ele vai alertar os emails quando algum servidor parar. Leia ele
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | #!/bin/sh # This script send ICMP requests for each server on SERVIDORES list and sends # emails for emails in LISTA_EMAILS list why one of servers doesn't reply # You only receive alerts if in last time that script request server we have a success reply # or if we not tested server yet. # # Author: Felipe Rafael Prenholato - chronos@gentoobr.org # IRC: nick chronos at irc.freenode.net # Date: 21 de Junho de 2006. # # This script is under GPLv2. Read it at http://www.gnu.org/licenses/gpl-2.0.txt. # Any changes please send me a mail :). # # IP or name of servers to test SERVIDORES="elise prime odissey" # emailo to send alerts LISTA_EMAILS="chronos@gentoobr.org philipe_rp@yahoo.com.br" # date format to send in email data=$(date +"%T de %d/%m/%Y") # this function sends ping ping_server() { local pingreturn local serversts local TMPFILE local server server=$1 TMPFILE="/tmp/ping_$server.tmp" # Debug #echo "Server: $server" #echo "Temp file: $TMPFILE" # ping and get return ping -c3 $server &>/dev/null; pingreturn=$?; # 0 means ok if [ "$pingreturn" == "0" ] then echo "1" > $TMPFILE fi # 1 means problems if [ "$pingreturn" == "1" ] then if ! [ -e $TMPFILE ] then echo "1" > $TMPFILE fi serversts=$(cat $TMPFILE) # send mail if have problems if [ "$serversts" == "1" ] then echo "0" > $TMPFILE msg="Servidor $server fora do ar em $data. Contatar responsavéis." ass="Servidor $server fora do ar." LC_ALL="en_US.ISO-8859-1" echo "$msg" | mail -s "$ass" $LISTA_EMAILS fi fi } # roda ping_server para cada servidor. for e in $(echo $SERVIDORES); do ping_server $e; done |
Ele precisa ser instalado em um servidor que possa pingar os demais e enviar emails. Versões antigas do postfix não vão funcionar, tem q suportar a opção -a no comando mail, seu uso é:
./scriptColoque ele para rodar no cron e fique numa boa