.htaccess ou wsgi para arquivos estáticos na locaweb

825 views
Skip to first unread message

Vitor Carvalho

unread,
Aug 9, 2011, 11:29:33 AM8/9/11
to Django Brasil
Pessoal, estou um pouco perdido. Tenho uma hospedagem na locaweb e
pretendo colocar uma app django lá. Fiz o teste.

user-wsgi-autostart estudo
ativei o subdomínio
user-wsgi-activate estudo.meudominio.com
Quando acesso aparece o "It work's" do django. Sem problemas não fiz
nenhuma mudança no projeto.

Edito o settings só para usar um banco sqlite3 e rodo um syncdb para
ativar a área administrativa. E modifico as seguintes configurações no
settings.py

STATIC_ROOT = os.path.join(ROOTDIR, 'static' )
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = STATIC_ROOT + 'admin/'

Ao acessar a área administrativa vejo o login e senha do django, porém
sem css.
Como faço para fornecer os arquivos estáticos na locaweb? Modifico
o .htaccess? O index.wsgi?

Valeu..

Moreno Cunha

unread,
Aug 9, 2011, 3:38:02 PM8/9/11
to django...@googlegroups.com
Vitor,

eu utilizei o kinghost para o mesmo fim e acredito que seja parecido.

Na pasta "home" no servidor tem um arquivo chamado "www" que seria o "/" dos aquivos estáticos, logo se eu preciso de "/site_media/static/django/css/base.css" na aplicação crio um link simbólico "site_media -> /home/<seu_nome>/apps_wsgi/<nome_do_projeto>/site_media" (link site_media apontando para site_media dentro do meu projeto) dentro de "www".

Escrevi um poste [1] com algumas configurações que fiz no kinghost que talvez seja útil para você em algum momento.


Abraço,
Moreno Pinheiro
Developer

contato={ 
          'Blog' : 'EasyDjango',
          'Twitter' : '@morenocunha',
          'Skype' : 'moreno.pinheiro',
          'tel' :  '+55 27 9834-6305' 
         }




--
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/>

Vitor Carvalho

unread,
Aug 9, 2011, 7:40:47 PM8/9/11
to Django Brasil
Opa Moreno, valeu pela resposta.

Infelizmente não tenho esse diretório no meu /home, criei, mas mesmo
assim não deu certo. Olhei o log e vi o seguinte.
[Tue Aug 09 20:29:15 2011] [error] [client 187.79.207.70]
mod_mime_magic: invalid type 0 in mconvert()., referer:
http://estudo.meudominio.com/admin/
Então fiz esse link simbólico no ~/public_html/estudo, e atualizei a
página, nada também. Ai olhei os logs novamente e...
[Tue Aug 09 20:33:08 2011] [error] [client 187.79.207.70]
mod_mime_magic: invalid type 0 in mconvert().
Mas ai logo dps olhei de novo e as vezes aparecer o referer:
http://estudo.meudominio.com/admin...


Então não é necessário editar o .htaccess ou index.wsgi?
Valeu

On Aug 9, 4:38 pm, Moreno Cunha <mp3cu...@gmail.com> wrote:
> Vitor,
>
> eu utilizei o kinghost para o mesmo fim e acredito que seja parecido.
>
> Na pasta "home" no servidor tem um arquivo chamado "www" que seria o "/" dos
> aquivos estáticos, logo se eu preciso de
> "/site_media/static/django/css/base.css" na aplicação crio um link
> simbólico "site_media ->
> /home/<seu_nome>/apps_wsgi/<nome_do_projeto>/site_media" (link site_media
> apontando para site_media dentro do meu projeto) dentro de "www".
>
> Escrevi um poste [1] com algumas configurações que fiz no kinghost que
> talvez seja útil para você em algum momento.
>
> [1]http://www.easydjango.net/2011/08/como-instalar-pinax-09-e-django-123...
>
> Abraço,
> Moreno Pinheiro <http://www.morenopc.com>
> Developer
>
> contato={
>           'Blog' : 'EasyDjango <http://www.easydjango.net>',
>           'Twitter' : '@morenocunha <http://twitter.com/morenocunha>',
>           'Skype' : 'moreno.pinheiro <http://www.morenopc.com/>',
>           'tel' :  '+55 27 9834-6305'
>          }
>
> Em 9 de agosto de 2011 12:29, Vitor Carvalho
> <vitorcarvalh...@gmail.com>escreveu:

Moreno Cunha

unread,
Aug 9, 2011, 8:43:54 PM8/9/11
to django...@googlegroups.com
Vitor,

se você não tem a pasta "www" no seu servidor você deve encontrar alguma outra pasta que está fazendo o mesmo papel. Tanto o nome como a existência da pasta irão variar pois são definidos pelo administrador do servidor.

Sobre o erro "mod_mime_magic: invalid type 0 in mconvert()." Esse é um erro do apache [1] e não me parece relacionado com o primeiro problema de arquivos estáticos e de mídia.

"Então não é necessário editar o .htaccess ou index.wsgi?"
Se a sua hospedagem é básica você não terá acesso as configurações do servidor (muito menos acesso de root). Para resolver problemas de arquivos estáticos e de mídia não precisa mexer no .wsgi é só apontar os links para os lugares certos.

Acho que entendi qual o problema. Os arquivos de "media" do admin por padrão ficam em "<algum lugar>/django/contrib/admin/media/" logo você teria que criar um link simbólico para essa pasta. O problema é que esse "<algum lugar>" pode variar de acordo com a vontade de quem instalou o django.

Bem, se o seu "~/public_html/" e o "/" então você poderia copiar a pasta "media" do admin para "public_html/" no meu ficaria "~/www/media/admin/css/".

No tutorial que lhe enviei eu usei o virtualenv que permite a instalação de mais de uma versão do django no mesmo ambiente de desenvolvimento. Dai você teria acesso aos arquivos do django entre outras coisas sem precisar de root (ou suporte).


Aluguns links sobre django na locaweb:

Vitor Carvalho

unread,
Aug 9, 2011, 10:33:29 PM8/9/11
to Django Brasil
hahaha..rpz não sei mais o que fazer, ok não posso mexer no .htaccess
mesmo tendo um .htaccess dentro do diretório ~/public_html/estudo. E
não é no index.wsgi, e quanto ao arquivo urls.py? não fiz nenhuma
mudança nele, não é preciso né?

"Acho que entendi qual o problema. Os arquivos de "media" do admin por
padrão
ficam em "<algum lugar>/django/contrib/admin/media/" logo você teria
que
criar um link simbólico para essa pasta. O problema é que esse "<algum
lugar>" pode variar de acordo com a vontade de quem instalou o
django."

Eu utilizei o comando python2.6 manage.py collectstatic e todo o
conteúdo foi para o diretório configurado por mim, dentro de static de
acordo com:

STATIC_ROOT = os.path.join(ROOTDIR, 'static' )
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = STATIC_ROOT + 'admin/'

correto?

Bom, eu criei um link simbólico dentro do public_html dos arquivos no
diretório da app (~/wsgi_apps/estudo/static)

lrwxrwxrwx 1 monfli monfli 53 Aug 9 20:30 static -> /home/storage/
a/b6/3d/monfli/wsgi_apps/estudo/static/
-bash-4.1$ pwd
/home/storage/a/b6/3d/monfli/public_html/estudo

E o Django fui eu quem instalei, no diretório /home/storage/a/b6/3d/
monfli/.python/lib e no .bashrc coloquei
export PYTHONPATH=$HOME/.python/lib/

Da maneira como eles explicam.

Se quiser acessar lá e usar o firebug pra ver se tu percebe algum erro
que possa me ajudar eu agradeço. http://estudo.monfli.com/admin/
Abraço valeu!


On Aug 9, 9:43 pm, Moreno Cunha <mp3cu...@gmail.com> wrote:
> Vitor,
>
> se você não tem a pasta "www" no seu servidor você deve encontrar alguma
> outra pasta que está fazendo o mesmo papel. Tanto o nome como a existência
> da pasta irão variar pois são definidos pelo administrador do servidor.
>
> Sobre o erro "mod_mime_magic: invalid type 0 in mconvert()." Esse é um erro
> do apache [1] e não me parece relacionado com o primeiro problema de
> arquivos estáticos e de mídia.
>
> "Então não é necessário editar o .htaccess ou index.wsgi?"
> Se a sua hospedagem é básica você não terá acesso as configurações do
> servidor (muito menos acesso de root). Para resolver problemas de arquivos
> estáticos e de mídia não precisa mexer no .wsgi é só apontar os links para
> os lugares certos.
>
> Acho que entendi qual o problema. Os arquivos de "media" do admin por padrão
> ficam em "<algum lugar>/django/contrib/admin/media/" logo você teria que
> criar um link simbólico para essa pasta. O problema é que esse "<algum
> lugar>" pode variar de acordo com a vontade de quem instalou o django.
>
> Bem, se o seu "~/public_html/" e o "/" então você poderia copiar a pasta
> "media" do admin para "public_html/" no meu ficaria
> "~/www/media/admin/css/".
>
> No tutorial que lhe enviei eu usei o virtualenv que permite a instalação de
> mais de uma versão do django no mesmo ambiente de desenvolvimento. Dai você
> teria acesso aos arquivos do django entre outras coisas sem precisar de root
> (ou suporte).
>
> [1]http://justcheckingonall.wordpress.com/2009/02/17/mod_mime_magic-inva...
>
> Aluguns links sobre django na locaweb:http://blog.locaweb.com.br/produtos/como-habilitar-aplicacoes-django-...http://wiki.locaweb.com.br/pt-br/Como_instalar_uma_aplica%C3%A7%C3%A3...
>
> Em 9 de agosto de 2011 20:40, Vitor Carvalho
> <vitorcarvalh...@gmail.com>escreveu:

Moreno Cunha

unread,
Aug 10, 2011, 3:28:56 PM8/10/11
to django...@googlegroups.com
Vitor,

"não posso mexer no .htaccess mesmo tendo um .htaccess dentro do diretório ~/public_html/estudo."
Pode, não sei dizer se resolveria. [1]
Não sou um profundo conhecedor de Apache, mas quando eu configurei o meu usando wsgi eu alterei o httpd.conf para mapear as pastas estáticas. 

"E não é no index.wsgi"
Também nunca utilizei o arquivo .wsgi para resolver problemas de arquivos estáticos.

"e quanto ao arquivo urls.py?"
É possível configurar o Django como servidor de arquivos estáticos como é feito localmente apesar de estar longe do ideal para um servidor de produção. [2]

Beleza, ia lhe pedir os links quebrados. Então seu link aponta para:

/home/storage/a/b6/3d/monfli/wsgi_apps/estudo/static/admin/css/base.css

o que é bem estranho.

O que está errado é toda essa parte que está vindo antes "/home/storage/a/b6/3d/monfli/wsgi_apps/estudo" logo retirando você vai encontrar os aquivos do base.css em:

então o que tem aparecer com link é:  <link rel="stylesheet" type="text/css" href="/static/admin/css/base.css">

Agora você deve ver o porque esse "/home/storage/a/b6/3d/monfli/wsgi_apps/estudo" está entrando antes de static assim acredito que resolve.

Exemplo de configuração de arquivos estáticos no settings.py

import os
PROJECT_DIR = os.path.dirname(__file__) # Pasta onde este arquivo esta
...
# MEDIAS
MEDIA_ROOT = os.path.join(PROJECT_DIR, 'media')
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = MEDIA_URL + 'admin/'

Tenho um exemplo básico de configurações no github também [3]



Vitor Carvalho

unread,
Aug 13, 2011, 4:29:21 PM8/13/11
to Django Brasil
Opa Moreno, você é o cara! hehehe Valeu pela ajuda! Acho que era mais
erro de configuração de iniciante! :D
Por exemplo, nesta linha:

> ADMIN_MEDIA_PREFIX = MEDIA_URL + 'admin/'

Eu tinha colocado
ADMIN_MEDIA_PREFIX = STATIC_ROOT + 'admin/' (estou utilizando o
diretório static para o css, js e imagens do admin)

modifiquei para o que você falou:
ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'

Ai resolveu-se a problemática levantada por você:

> O que está errado é toda essa parte que está vindo antes
> "/home/storage/a/b6/3d/monfli/wsgi_apps/estudo" logo retirando você vai
> encontrar os aquivos do base.css em:
> "http://estudo.monfli.com/static/admin/css/base.css"
>
> então o que tem aparecer com link é: <link rel="stylesheet" type="text/css"
> href="/static/admin/css/base.css">

Depois disso, o próximo passo foi criar um link simbólico dentro da
pasta ~/public_html/estudo/ do diretório static. Vou ter de criar
também para o diretório media.

ln -s ~/wsgi_apps/estudo/static/ ~/public_html/estudo/

De fato não mexi em nada no .htaccess (li que era até desencorado
utilizá-lo no link que você passou).

Agradeço mais uma vez a ajuda e a explicação detalhada!
Abraço

Se quiser acessar: http://estudo.monfli.com


On Aug 10, 4:28 pm, Moreno Cunha <mp3cu...@gmail.com> wrote:
> Vitor,
>
> <vitorcarvalh...@gmail.com>escreveu:
> > que possa me ajudar eu agradeço.http://estudo.monfli.com/admin/
> >http://blog.locaweb.com.br/produtos/como-habilitar-aplicacoes-django-....
> > ..

Moreno Cunha

unread,
Aug 14, 2011, 9:54:33 PM8/14/11
to django...@googlegroups.com
O primeiro link é o mais complicado para acertar depois outros vão na mesma lógica.

Abraço,
Moreno Pinheiro
Developer

contato={ 
          'Blog' : 'EasyDjango',
          'Twitter' : '@morenocunha',
          'Skype' : 'moreno.pinheiro',
Reply all
Reply to author
Forward
0 new messages