Django + Nginx + uwsgi rodar aplicação !

764 views
Skip to first unread message

Python - Django

unread,
May 17, 2011, 11:42:52 PM5/17/11
to Django Brasil
Olá Pessoal,

Estou há dias tentando fazer rodar o servidor uwsgi pelo nginx, mas
está um parto, 3 dias lendo o livro sobre nginx, ele é realmente
simples de usar e configurar, mas rodar o django com uwsgi com ele que
não está fácil.

Já rodei o google e vi vários blogs, cada um faz a sua salada de
configuração, pra começar, cada um escolhe onde instalar o nginx, não
definem um padrão e ainda assim artigos com erros e bem mal elaborados
e desatualizados, um iniciante certamente não conseguiria rodar
facilmente seguindo a receita de bolo que colocam nos blogs.

Esse aqui dá erro http://timothyfletcher.com/blog/running-django-apps-on-nginx-and-uwsgi/

Pelo menos as versões mais novas do nginx já está habilitado o módulo
uwsgi e maioria manda compilar com --addmodule para o uwsgi,
certamente dá erro quando manda adicionar algo que já está lá, até a
falta de conhecimento do nginx, jogam a instalação num lugar e a
configuração em outro, vi artigos com erros grotescos e que só
atrapalham o entendimento.

Esse aqui também é pior, começa bem e termina mal, os arquivos de
configuração do nginx não conferem também, se for seguir passo a
passo, não vai rodar
http://www.jeremybowers.com/blog/post/5/django-nginx-and-uwsgi-production-serving-millions-page-views/

Se alguém teve sucesso em rodar o nginx + uwsgi, dá uma luz, porque
realmente não está fácil, vou mostrar como eu fiz.

Uso o Ubuntu 10.10 64.

sudo apt-get install nginx - Instalou a versão 1.02 a mais atual no
momento hoje 17/05/2011

se der o comando nginx -V ele vai mostrar o que está habilitado e onde
estão as coisas, como o arquivo de configuração, onde o nginx está
instalado e assim por diante.

instalando o uwsgi

sudo pip install http://projects.unbit.it/downloads/uwsgi-latest.tar.gz

o pip já faz tudo sozinho, descompacta, compila e joga o uwsgi no
local /usr/local/bin/

o arquivo executa de qualquer lugar, bom agora vamos a configuração do
nginx para o django.

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
worker_connections 768;
# multi_accept on;
}

http {

##
# Basic Settings
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# Logging Settings
##

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

# Here goes our uwsgi sock
upstream djangoapp {
server unix:/var/run/fentect.com.sock;
}


##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/
x-javascript text/xml application/xml application/xml+rss text/
javascript;

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}


server {
#listen 80; ## listen for ipv4; this line is default and
implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6

#root /usr/share/nginx/www;
#index index.html index.htm;

# Make site accessible from http://localhost/
server_name fentect_django.com;

location /media {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
#try_files $uri $uri/ /index.html;
alias /opt/portal_fentect/media;
}

}


o arquivo uwsgi_fentect.py

# wsgi_app.py
import sys
import os

print "fui chamado"

sys.path.append(os.path.abspath(os.path.dirname(__file__)))
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'


import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()


ai rodando o uwsgi desta forma

uwsgi -v --home /opt/portal_fentect --socket /var/run/
fentect.com.sock --chmod-socket --module uwsgi_fentect --pythonpath /
opt/port_fentect

vou ao browser e chamo o portal e dá erro.

502 Bad Gateway

nginx/1.0.2


e o processo do uwsgi que está rodando, apresenta a seguinte mensagem.

root@toninhonunes-Vostro-3500:/opt/portal_fentect# uwsgi -v --home /
opt/portal_fentect --socket /var/run/fentect.com.sock --chmod-socket
--module uwsgi_fentect --pytnpath /opt/port_fentect
*** Starting uWSGI 0.9.7.2 (64bit) on [Tue May 17 23:11:39 2011] ***
compiled with version: 4.4.5 on 17 May 2011 22:40:12
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag)
***
*** WARNING: you are running uWSGI without its master process manager
***
your memory page size is 4096 bytes
chmod() socket to 666 for lazy and brave users
uwsgi socket 0 bound to UNIX address /var/run/fentect.com.sock fd 3
Python version: 2.6.6 (r266:84292, Sep 15 2010, 16:41:53) [GCC 4.4.5]
Python main interpreter initialized at 0x1a09320
your server socket listen backlog is limited to 100 connections
*** Operational MODE: single process ***
added /opt/port_fentect to pythonpath.
fui chamado
WSGI application 0 (SCRIPT_NAME=) ready on interpreter 0x1a09320
(default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 4140, cores: 1)
max vec size reached. skip this header.
[pid: 4140|app: 0|req: -1/1] () {0 vars in 725 bytes} [Tue May 17
23:11:47 2011] => generated 0 bytes in 0 msecs ( 500) 0 headers in 0
bytes (0 switches on core 0)
max vec size reached. skip this header.
[pid: 4140|app: 0|req: -1/2] () {0 vars in 725 bytes} [Tue May 17
23:11:55 2011] => generated 0 bytes in 0 msecs ( 500) 0 headers in 0
bytes (0 switches on core 0)
max vec size reached. skip this header.
[pid: 4140|app: 0|req: -1/3] () {0 vars in 725 bytes} [Tue May 17
23:12:13 2011] => generated 0 bytes in 0 msecs ( 500) 0 headers in 0
bytes (0 switches on core 0)

E é isso, o arquivo uwsgi_fentect.py é chamado, mas nada de aparecer a
aplicação em Django, se alguém tiver alguma documentação mais
atualizada e que funcione, dá uma ajuda aí, vou tentando aqui, se
conseguir quero montar algo bem elaborado para ajudar os colegas que
tem a mesma dificuldade que eu.

Cordialmente,

Toninho Nunes







Robson

unread,
May 18, 2011, 12:01:32 AM5/18/11
to django...@googlegroups.com
Olá Toninho,

Será que não é por falta do uwsgi_params? Uso o uwsgi com nginx e já
instalei ele em 3 vps, sempre foi tranquilo.. dá uma olhada nas
minhas configs:

http://dpaste.com/hold/543698/

abs!
Robson

> --
> Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
> Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>
>

Python - Django

unread,
May 18, 2011, 1:36:52 AM5/18/11
to Django Brasil
Robson, não sei como lhe agradecer, estava quase desistindo, o Nginx
não era o problema, a sua chamada do uwsgi nunca tinha visto dessa
maneira, onde você conseguiu a documentação? rodou aqui na boa agora,
a coisa estava tão feia que até o site do uwsgi que estava pesquisando
ficou offline no começo da noite e até agora de madrugada.

no meu caso, eu via que o console que rodava o uwsgi respondia ao
refresh do browser, mas não carregava nada do django, com esses
parâmetros que você me passou, mostrou o portal, só adaptei ao meu
modelo, se tiver uma explicação dessa linha de comando eu agredeceria,
estou fazendo local e vou levantar o django num VPS, esse VPS roda
nginx hoje, mas só um site estático em html, é rápido e vendo o htop
do linux, consome muito pouca memória, estou na linode.com, cara,
estudei muito Nginx de ler o livro do Clément Nedelcu Nginx Http
Server, o único livro do mesmo e bem explicativo, pois eu depurava o
arquivo nginx.conf e os módulos e nada de erro, mas valeu, muito
obrigado.

Toninho Nunes



On May 18, 12:01 am, Robson <r...@linux.com> wrote:
> Olá Toninho,
>
> Será que não é por falta do uwsgi_params? Uso o uwsgi com nginx e já
> instalei ele em 3 vps, sempre foi tranquilo..  dá uma olhada nas
> minhas configs:
>
> http://dpaste.com/hold/543698/
>
> abs!
> Robson
>
> Em 18 de maio de 2011 00:42, Python - Django <toninhonu...@gmail.com> escreveu:
>
>
>
>
>
>
>
> > Olá Pessoal,
>
> > Estou há dias tentando fazer rodar o servidor uwsgi pelo nginx, mas
> > está um parto, 3 dias lendo o livro sobre nginx, ele é realmente
> > simples de usar e configurar, mas rodar o django com uwsgi com ele que
> > não está fácil.
>
> > Já rodei o google e vi vários blogs, cada um faz a sua salada de
> > configuração, pra começar, cada um escolhe onde instalar o nginx, não
> > definem um padrão e ainda assim artigos com erros e bem mal elaborados
> > e desatualizados, um iniciante certamente não conseguiria rodar
> > facilmente seguindo a receita de bolo que colocam nos blogs.
>
> > Esse aqui dá errohttp://timothyfletcher.com/blog/running-django-apps-on-nginx-and-uwsgi/
>
> > Pelo menos as versões mais novas do nginx já está habilitado o módulo
> > uwsgi e maioria manda compilar com --addmodule  para o uwsgi,
> > certamente dá erro quando manda adicionar algo que já está lá, até a
> > falta de conhecimento do nginx, jogam a instalação num lugar e a
> > configuração em outro, vi artigos com erros grotescos e que só
> > atrapalham o entendimento.
>
> > Esse aqui também é pior, começa bem e termina mal, os arquivos de
> > configuração do nginx não conferem também, se for seguir passo a
> > passo, não vai rodar
> >http://www.jeremybowers.com/blog/post/5/django-nginx-and-uwsgi-produc...
>
> > Se alguém teve sucesso em rodar o nginx + uwsgi, dá uma luz, porque
> > realmente não está fácil, vou mostrar como eu fiz.
>
> > Uso o Ubuntu 10.10 64.
>
> > sudo apt-get install nginx - Instalou a versão 1.02 a mais atual no
> > momento hoje 17/05/2011
>
> > se der o comando nginx -V ele vai mostrar o que está habilitado e onde
> > estão as coisas, como o arquivo de configuração, onde o nginx está
> > instalado e assim por diante.
>
> > instalando o uwsgi
>
> > sudo pip installhttp://projects.unbit.it/downloads/uwsgi-latest.tar.gz
> >        # Make site accessible fromhttp://localhost/

Robson

unread,
May 18, 2011, 2:09:17 AM5/18/11
to django...@googlegroups.com
Em 18 de maio de 2011 02:36, Python - Django <toninh...@gmail.com> escreveu:
> Robson, não sei como lhe agradecer, estava quase desistindo, o Nginx
> não era o problema, a sua chamada do uwsgi nunca tinha visto dessa
> maneira, onde você conseguiu a documentação? rodou aqui na boa agora,
> a coisa estava tão feia que até o site do uwsgi que estava pesquisando
> ficou offline no começo da noite e até agora de madrugada.
>
> no meu caso, eu via que o console que rodava o uwsgi respondia ao
> refresh do browser, mas não carregava nada do django, com esses
> parâmetros que você me passou, mostrou o portal, só adaptei ao meu
> modelo, se tiver uma explicação dessa linha de comando eu agredeceria,
> estou fazendo local e vou levantar o django num VPS, esse VPS roda
> nginx hoje, mas só um site estático em html, é rápido e vendo o htop
> do linux, consome muito pouca memória, estou na linode.com, cara,
> estudei muito Nginx de ler o livro do Clément Nedelcu Nginx Http
> Server, o único livro do mesmo e bem explicativo, pois eu depurava o
> arquivo nginx.conf e os módulos e nada de erro, mas valeu, muito
> obrigado.
>
> Toninho Nunes
>
>

haha bacana! uwsgi rlz.. e o site dele é meio confuso mesmo hehe

Então, todos os parâmetros eu peguei da própria documentação e do
comando uwsgi --help:

--pp /path/to/my/project # python path
-p 5 # numero de processos
-w wsgi # importa o arquivo wsgi.py, que contem o wsgihandler
-b 8192 # tamanho do buffer
--harakiri 120 # mata (e reinicia) o processo se a requisição passar
de 120 segundos (é quase um chuck noris)
-M # habilita um processo master p/ gerencia os filhos (childrens)
-z 220 # socket timeout (o padrão é 4 segundos)
-O 1 # nivel de otimização do código python (bytecodes)
-r # reaper.. elimina os processos zumbis que sua app pode ter chamado
--limit-as 128 # limita cada processo em 128mb de ram (se passar
disso, kill them :)
--disable-logging # desabilita os logs
--max-requests 1000 # número máximo de requisições por processo
--no-orphans # matando o processo pai, os filhos morrem junto (não
deixa nenhum órfão hehe)
--vacuum # puxa a descarga ao terminar (limpa os arquivos .sock e .pid hehe)
--uid myuser # rodar como usuário "myuser"
-s site.sock # nome do socket (filename)
--pidfile site.pid # nome do arquivo com o pid do processo pai
-d site.log # roda em daemon e define o arquivo p/ log de erros

tem várias outras opções interessantes lá no --help :)

ah, se vc quiser fazer um reload na tua app do django sem reiniciar o
processo do servidor, basta mandar um SIGHUP pra ele:
# kill -sighup pid_do_processo_pai

ou, como vc está exportando o pid no arquivo "site.pid":
# kill -sighup `cat site.pid`

abs!
Robson

Filipe Cifali

unread,
May 18, 2011, 8:26:01 AM5/18/11
to django...@googlegroups.com
Porque n�o fazer via flup diretamente? Python 2.7 + Nginx 1.0 + Django
1.3 � poss�vel sem problemas no FastCGI e bem menos complicado, se
quiser posto como fazer em FastCGI sem problemas. O mais engra�ado � que
nem precisa de root(apenas se quiser reiniciar a aplica��o pra matar os
processos, mas d� pra fazer um .sh pra isso de boa usando o pidfile).


[]'s

Em 18/05/2011 03:09, Robson escreveu:
> Em 18 de maio de 2011 02:36, Python - Django<toninh...@gmail.com> escreveu:

>> Robson, n�o sei como lhe agradecer, estava quase desistindo, o Nginx
>> n�o era o problema, a sua chamada do uwsgi nunca tinha visto dessa
>> maneira, onde voc� conseguiu a documenta��o? rodou aqui na boa agora,
>> a coisa estava t�o feia que at� o site do uwsgi que estava pesquisando
>> ficou offline no come�o da noite e at� agora de madrugada.


>>
>> no meu caso, eu via que o console que rodava o uwsgi respondia ao

>> refresh do browser, mas n�o carregava nada do django, com esses
>> par�metros que voc� me passou, mostrou o portal, s� adaptei ao meu
>> modelo, se tiver uma explica��o dessa linha de comando eu agredeceria,


>> estou fazendo local e vou levantar o django num VPS, esse VPS roda

>> nginx hoje, mas s� um site est�tico em html, � r�pido e vendo o htop
>> do linux, consome muito pouca mem�ria, estou na linode.com, cara,
>> estudei muito Nginx de ler o livro do Cl�ment Nedelcu Nginx Http
>> Server, o �nico livro do mesmo e bem explicativo, pois eu depurava o
>> arquivo nginx.conf e os m�dulos e nada de erro, mas valeu, muito
>> obrigado.
>>
>> Toninho Nunes
>>
>>
> haha bacana! uwsgi rlz.. e o site dele � meio confuso mesmo hehe
>
> Ent�o, todos os par�metros eu peguei da pr�pria documenta��o e do


> comando uwsgi --help:
>
> --pp /path/to/my/project # python path
> -p 5 # numero de processos
> -w wsgi # importa o arquivo wsgi.py, que contem o wsgihandler
> -b 8192 # tamanho do buffer

> --harakiri 120 # mata (e reinicia) o processo se a requisi��o passar
> de 120 segundos (� quase um chuck noris)


> -M # habilita um processo master p/ gerencia os filhos (childrens)

> -z 220 # socket timeout (o padr�o � 4 segundos)
> -O 1 # nivel de otimiza��o do c�digo python (bytecodes)


> -r # reaper.. elimina os processos zumbis que sua app pode ter chamado
> --limit-as 128 # limita cada processo em 128mb de ram (se passar
> disso, kill them :)
> --disable-logging # desabilita os logs

> --max-requests 1000 # n�mero m�ximo de requisi��es por processo
> --no-orphans # matando o processo pai, os filhos morrem junto (n�o
> deixa nenhum �rf�o hehe)


> --vacuum # puxa a descarga ao terminar (limpa os arquivos .sock e .pid hehe)

> --uid myuser # rodar como usu�rio "myuser"


> -s site.sock # nome do socket (filename)
> --pidfile site.pid # nome do arquivo com o pid do processo pai
> -d site.log # roda em daemon e define o arquivo p/ log de erros
>

> tem v�rias outras op��es interessantes l� no --help :)


>
> ah, se vc quiser fazer um reload na tua app do django sem reiniciar o
> processo do servidor, basta mandar um SIGHUP pra ele:
> # kill -sighup pid_do_processo_pai
>

> ou, como vc est� exportando o pid no arquivo "site.pid":

Python - Django

unread,
May 18, 2011, 8:39:13 AM5/18/11
to Django Brasil
Posta aí ou indica o conteúdo onde tem esse modo de fazer, o que eu li
é que o uwsgi seria superior ao wsgi e fastcgi em performance e
consumo de memória bem reduzido, segundo os blogs que li é a melhor
combinação, mas vamos ver.

Toninho Nunes

Filipe Cifali

unread,
May 18, 2011, 8:56:28 AM5/18/11
to django...@googlegroups.com
Hahaha, essa documenta��o "eu que fiz" baseado em muitos manuais, acho
que ficou bem claro como instalar e configurar: (aqui usamos CentOS 5.4
- p� no saco vir com python2.4.3, mas d� pra instalar o 2.7.1 usando
--enable-shared --threads[caso queira mod_wsgi no apache tamb�m, mas
nunca consegui fazer funcionar 100%])


Instalar Python2.7

Instalar Django-1.3 no Python2.7 (ao entrar na pasta do django, usar
python2.7 setup.py install pra garantir que caia na pasta certa)

Instalar SetupTools da vers�o espec�fica (tem a 2.7 no site, esqueci de
pegar a URL)

Instalar Flup - FastCGI para o Django

Instalar o m�dulo do MySQL(ou outro do banco que preferir, eu gosto de
mysql 5.5[works!]):

http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3/MySQL-python-1.2.3.tar.gz/download

Note que, se voc� tem instala��es de python diferentes, existem
django-admin.py diferentes, assim, tu pode dar um django-admin.py
--version (acho que � isso) pra confirmar a vers�o do django que �
instalado.

/usr/local/bin/django-admin.py startproject teste

Configurar o banco no settings.py

python2.7 manage.py syncdb

python2.7 manage.py runfcgi method=prefork
socket=/home/django-fastcgi/teste/teste.sock ; chmod 777 teste.sock

Vhost para o funcionamento:

#
# django-fastcgi.kinghost.net
#
# django-fastcgi.kinghost.net (WWW)
server {
#logs
log_format logdjango-fastcgi 'django-fastcgi.kinghost.net
$remote_addr - $remote_user [$time_local] "$request" $status
$body_bytes_sent "$http_referer" "$http_user_agent"';
access_log /home/logs/nginx_log logdjango-fastcgi;

# ip de acesso / vhost
listen 189.38.81.233:80;
server_name .django-fastcgi.kinghost.net
.django-fastcgi.web333.kinghost.net;
root /home/django-fastcgi/www;

location /media {
root /home/django-fastcgi/teste;
}
location / {
fastcgi_pass unix:/home/django-fastcgi/teste/teste.sock;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
}
}

Tamb�m, na conta do usu�rio, pra facilitar, d� pra fazer o alis do
python pro python2.7, assim ele s� d� um python syncdb direto.

Criei tamb�m uns alias uteis:

alias apprestart='rm ~/teste/*pyc ; ~/restarta.sh ; python
~/teste/manage.py runfcgi method=prefork
socket=/home/django-fastcgi/teste/teste.sock pidfile=~/teste/teste.pid ;
chmod 777 ~/teste/teste.pid ~/teste/teste.sock'

restarta.sh:

[django-fastcgi@web333 ~]$ cat restarta.sh
#!/bin/bash

# caminhos
PROJDIR="/home/django-fastcgi/teste"
PIDFILE="$PROJDIR/teste.pid"
SOCKET="$PROJDIR/teste.sock"

cd $PROJDIR
if [ -f $PIDFILE ]; then
kill `cat -- $PIDFILE`
rm -f $PROJDIR/teste.pid
rm -f $PROJDIR/teste.sock
touch $PROJDIR/teste.pid
touch $PROJDIR/teste.sock
fi

De qualquer modo, fico a tua disposi��o se quiser configurar assim e
precisar de ajuda;

[]'s


Em 18/05/2011 09:39, Python - Django escreveu:
> Posta a� ou indica o conte�do onde tem esse modo de fazer, o que eu li
> � que o uwsgi seria superior ao wsgi e fastcgi em performance e
> consumo de mem�ria bem reduzido, segundo os blogs que li � a melhor
> combina��o, mas vamos ver.

Filipe Cifali

unread,
May 18, 2011, 9:04:57 AM5/18/11
to django...@googlegroups.com
Sem querer fazer duplo post mas fazendo, o consumo de mem�ria dele � bem
abaixo do apache quando testei com simula��es de acessos/ataques e o
nginx tem melhor vaz�o das requisi��es, se quiser, � poss�vel inclusive
combinar com um varnish para fazer um mega combo de cache e redu��o de
consumo.

Python - Django

unread,
May 18, 2011, 9:05:41 AM5/18/11
to Django Brasil
Poxa, valeu, vou tentar isso também, fazer comparativos, o negócio é
montar bons artigos para facilitar o deploy de aplicações Django.

Toninho Nunes

On May 18, 8:56 am, Filipe Cifali <cifali.fil...@gmail.com> wrote:
> Hahaha, essa documenta o "eu que fiz" baseado em muitos manuais, acho
> que ficou bem claro como instalar e configurar: (aqui usamos CentOS 5.4
> - p no saco vir com python2.4.3, mas d pra instalar o 2.7.1 usando
> --enable-shared --threads[caso queira mod_wsgi no apache tamb m, mas
> nunca consegui fazer funcionar 100%])
>
> Instalar Python2.7
>
> Instalar Django-1.3 no Python2.7 (ao entrar na pasta do django, usar
> python2.7 setup.py install pra garantir que caia na pasta certa)
>
> Instalar SetupTools da vers o espec fica (tem a 2.7 no site, esqueci de
> pegar a URL)
>
> Instalar Flup - FastCGI para o Django
>
> Instalar o m dulo do MySQL(ou outro do banco que preferir, eu gosto de
> mysql 5.5[works!]):
>
> http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.3...

Filipe Cifali

unread,
May 18, 2011, 9:11:34 AM5/18/11
to django...@googlegroups.com
Claro, afinal, todos queremos explorar o Django! As vezes fico triste
por n�o encontrar bases boas de cursos sobre, acho que at� mesmo livros
apenas divagam sobre, gostaria de encontrar um local para aprender e
aplicar em larga escala.

Em 18/05/2011 10:05, Python - Django escreveu:
> Poxa, valeu, vou tentar isso tamb�m, fazer comparativos, o neg�cio �
> montar bons artigos para facilitar o deploy de aplica��es Django.

Python - Django

unread,
May 18, 2011, 1:50:32 PM5/18/11
to Django Brasil
Oi Pessoal,

eu de novo, o nginx + uwsgi está rodando perfeito, mas o meu admin não
busca o css e as imagens relacionadas, estou usando grappelli, rodando
pelo ./manager.py runserver funciona normal, mas pelo uwsgi aparece
tudo bagunçado, engraçado que ele mostra as imagens de uma galeria de
fotos que desenvolvi, mas isso está no media, agora o media do admin
nada, segue as configurações.

settings.py --> http://gbpaste.org/wabZU
urls.py --> http://gbpaste.org/mTHTG
sites-enabled do nginx --> http://gbpaste.org/cDSH6

Não está dando erro nenhum, somente não mostra o admim na forma visual
no qual funciona no desenvolvimento normalmente, já pesquisei aqui
dúvidas parecidas, mas não encontrei uma solução semelhante para quem
usa grappelli.

Eu uso Django 1.3 com python 2.6 e Ubuntu 10.10 64 bits.

obrigado,


Toninho Nunes

Gabriel SERPRO

unread,
May 18, 2011, 1:58:46 PM5/18/11
to django...@googlegroups.com
Boa tarde,


Eu estou rodando aqui com Cherokee + SCGI + Memcached.

Nada a reclamar por enquanto.

Vou pesquisar pra ver o que pode ser feito com o varnish (vejo muito o
pessoal do zope utilizando-o) nessa minha estrutura atual.
-----------------------------------
Quanto a configuração dos ambientes

Quanto ao CentOS: realmente algumas coisas tender a ser problemáticas.
Eu mesmo utilizo o repositório EPEL, de onde pego o python 2.6. Outra
alternativa interessante é utilizar srpms para gerar um pacote para o
seu sistema.

No debian o trio apt-get source, apt-get build-dep e dpkg-buildpackage
geram pacotes de forma muito simples e que, ainda por cima, respeitam
a forma como as coisas são distribuídas no sistema.


Att,

Gabriel Cavalcante

Filipe Cifali

unread,
May 18, 2011, 2:00:49 PM5/18/11
to django...@googlegroups.com
Configurei assim na minha app:

ADMIN_MEDIA_PREFIX = '/media/'

cp -Rf /usr/local/lib/python2.7/site-packages/django/contrib/admin/media/ .

S� mudar a vers�o do teu python, a pasta n�o importa diretamente, ele
vai criar subpastas em /media/img e /media/js

Mas se quiser, pode especificar outras pastas, pra mim funciona assim,

urls.py:

(r'^media/(.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),

nginx.conf:

location /media {
root /home/django-fastcgi/teste;
}

Em 18/05/2011 14:50, Python - Django escreveu:
> Oi Pessoal,
>

> eu de novo, o nginx + uwsgi est� rodando perfeito, mas o meu admin n�o


> busca o css e as imagens relacionadas, estou usando grappelli, rodando
> pelo ./manager.py runserver funciona normal, mas pelo uwsgi aparece

> tudo bagun�ado, engra�ado que ele mostra as imagens de uma galeria de
> fotos que desenvolvi, mas isso est� no media, agora o media do admin
> nada, segue as configura��es.


>
> settings.py --> http://gbpaste.org/wabZU
> urls.py --> http://gbpaste.org/mTHTG
> sites-enabled do nginx --> http://gbpaste.org/cDSH6
>

> N�o est� dando erro nenhum, somente n�o mostra o admim na forma visual
> no qual funciona no desenvolvimento normalmente, j� pesquisei aqui
> d�vidas parecidas, mas n�o encontrei uma solu��o semelhante para quem

Filipe Cifali

unread,
May 18, 2011, 2:24:49 PM5/18/11
to django...@googlegroups.com
Mas nesse caso vai precisar de um servidor a frente para ser o Varnish,
ele � um servidor que vai "filtrar" o que vai ser entregue ao Nginx e o
que pode ser usado de cache, onde voc� vai definir quais tipos ser�o
"cacheados". � de extrema performance x custo, mesmo com 512M de RAM d�
pra fazer MUITA requisi��o sem fazer ele tombar.

Em 18/05/2011 14:58, Gabriel SERPRO escreveu:
> Boa tarde,
>
>
> Eu estou rodando aqui com Cherokee + SCGI + Memcached.
>
> Nada a reclamar por enquanto.
>
> Vou pesquisar pra ver o que pode ser feito com o varnish (vejo muito o
> pessoal do zope utilizando-o) nessa minha estrutura atual.
> -----------------------------------

> Quanto a configura��o dos ambientes
>
> Quanto ao CentOS: realmente algumas coisas tender a ser problem�ticas.
> Eu mesmo utilizo o reposit�rio EPEL, de onde pego o python 2.6. Outra
> alternativa interessante � utilizar srpms para gerar um pacote para o


> seu sistema.
>
> No debian o trio apt-get source, apt-get build-dep e dpkg-buildpackage
> geram pacotes de forma muito simples e que, ainda por cima, respeitam

> a forma como as coisas s�o distribu�das no sistema.


>
>
> Att,
>
> Gabriel Cavalcante
>
> Em 18 de maio de 2011 14:50, Python - Django<toninh...@gmail.com> escreveu:
>> Oi Pessoal,
>>

>> eu de novo, o nginx + uwsgi est� rodando perfeito, mas o meu admin n�o


>> busca o css e as imagens relacionadas, estou usando grappelli, rodando
>> pelo ./manager.py runserver funciona normal, mas pelo uwsgi aparece

>> tudo bagun�ado, engra�ado que ele mostra as imagens de uma galeria de
>> fotos que desenvolvi, mas isso est� no media, agora o media do admin
>> nada, segue as configura��es.


>>
>> settings.py --> http://gbpaste.org/wabZU
>> urls.py --> http://gbpaste.org/mTHTG
>> sites-enabled do nginx --> http://gbpaste.org/cDSH6
>>

>> N�o est� dando erro nenhum, somente n�o mostra o admim na forma visual
>> no qual funciona no desenvolvimento normalmente, j� pesquisei aqui

>> d�vidas parecidas, mas n�o encontrei uma solu��o semelhante para quem

>> Associe-se � Python Brasil e suporte nossa comunidade!<http://associacao.python.org.br/>

Rodrigo Chacon

unread,
May 18, 2011, 2:24:34 PM5/18/11
to django...@googlegroups.com
Toninho, você precisa configurar no NGINX para servir os arquivos do admin.
Você pode direcionar direto para a pasta da instalação do Django.  ;-)

-- Rodrigo Chacon

Python - Django

unread,
May 18, 2011, 2:52:10 PM5/18/11
to Django Brasil
Mas aí você está copiando o media do source para sua app, e quando
houver atualizações? Até agora não consegui rodar em produção o admim
com a aparência correta, já apontei desta forma no nginx.

location /admin_media {
root /usr/local/lib/python2.6/dist-packages/django/
contrib/admin/media;
}

O resto tudo funciona normal.

Toninho Nunes

Filipe Cifali

unread,
May 18, 2011, 2:57:10 PM5/18/11
to django...@googlegroups.com
Depende do que tu quer fazer com o admin, eu customizei o meu bastante,
se eu atualizar perco tudo ;D

Porque n�o faz um symlink? Talvez funcione(n�o testei).


Em 18/05/2011 15:52, Python - Django escreveu:
> Mas a� voc� est� copiando o media do source para sua app, e quando
> houver atualiza��es? At� agora n�o consegui rodar em produ��o o admim
> com a apar�ncia correta, j� apontei desta forma no nginx.

Python - Django

unread,
May 18, 2011, 3:20:50 PM5/18/11
to Django Brasil
Resolvi,

acrescentei esta linha no url.py

(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_ROOT }),

Olhando o log do nginx access.log, analisei que o mesmo busca pelos
arquivos, mas dava erro 404, não encontrado, ai direcionei pela url
onde deveria buscar e resolveu, cada dia uma descoberta, essas
situações tem que ficar bem documentadas, funciona tanto em produção,
como em desenvolvimento.

Detalhe, desabilitei o admin_media no nginx, comentando o location, re-
startei tudo e mandei acessar, normal, o urls.py buscou no lugar
correto o arquivo.

obrigado pessoal,

Toninho Nunes

willian firmino

unread,
May 19, 2011, 7:26:13 AM5/19/11
to django...@googlegroups.com

Maria

unread,
Dec 12, 2011, 2:19:58 PM12/12/11
to django...@googlegroups.com
Olá no meu caso:

*** Starting uWSGI 0.9.7.2 (32bit) on [Mon Dec 12 18:33:14 2011] ***
compiled with version: 4.4.5 on 02 May 2011 17:08:27

your memory page size is 4096 bytes
probably another instance of uWSGI is running on the same address.
bind(): Address already in use [socket.c line 443]
Mon Dec 12 18:33:14 2011 - *** uWSGI listen queue of socket 4 full !!! (101/100) ***

Só que uso Cherokee+uwsgi+django

Na aba Sources h'aum campo Interpreter onde é colocado automaticamente:
/usr/local/bin/uwsgi -s 127.0.0.1:44064 -M -p 1 -C  -x /var/django/projects/portalpalmas/portal/src/portal/uwsgi.xml

Gostaria de saber se a solução http://dpaste.com/hold/543698/ pode ser feita no meu caso.

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>



--
Grata,
Maria Carreiro Varão.

Reply all
Reply to author
Forward
0 new messages