Aplicação baseada em sub-domínios

14 views
Skip to first unread message

Felipe Munhoz

unread,
Nov 9, 2009, 8:20:05 PM11/9/09
to django...@googlegroups.com
Pessoal,

Estou modelando uma aplicação que seria interessante utilizar um campo
slug como sub-domínio, por exemplo:

http://nomedeusuario.exemplo.com/blog/

Sendo que "nomedeusuario" seria um valor definido no momento do
cadastro do usuário no sistema.

Isso provavelmente envolveria configurações de DNS, além de algumas
mudanças nas urls do django, certo?

Será que vou precisar de um servidor dedicado?

Qualquer ajuda/experiência é bem vinda!

Obrigado.


--
Felipe Munhoz

Francisco Souza

unread,
Nov 10, 2009, 2:44:41 AM11/10/09
to django...@googlegroups.com
2009/11/9 Felipe Munhoz <mun...@gmail.com>

Pessoal,

Estou modelando uma aplicação que seria interessante utilizar um campo
slug como sub-domínio, por exemplo:

http://nomedeusuario.exemplo.com/blog/

Sendo que "nomedeusuario" seria um valor definido no momento do
cadastro do usuário no sistema.

Isso provavelmente envolveria configurações de DNS, além de algumas
mudanças nas urls do django, certo?

Bom dia Felipe,
você pode usar a aplicação de Sites (django.contrib.sites) para fazer este gerenciamento usando vários "sites" (subdomínios), mas provavelmente vai precisar de um dedicado (um VPS seria mais viável) ou de um painel de controle de hospedagem que fornecesse uma API para que você criasse os subdomínios.

Lembrando que no caso da aplicação sites, seriam vários subdomínios estacionados, apontando para o mesmo conteúdo. O seu slug seria o nome do seu subdomínio, que seria importante também na requisição? (por exemplo: /blog acessa o blog, o nome do subdomínio informa de qual usuário é este blog, logo: usuario.dominio.com/blog consultaria apenas os posts de usuario). É por aí?

Abraços,
Francisco Souza
http://www.franciscosouza.net
Twitter: @franciscosouza

Michel Thadeu Sabchuk

unread,
Nov 10, 2009, 6:13:24 AM11/10/09
to Django Brasil
Olá Felipe,

> Sendo que "nomedeusuario" seria um valor definido no momento do
> cadastro do usuário no sistema.
> Isso provavelmente envolveria configurações de DNS, além de algumas
> mudanças nas urls do django, certo?

Você teria que fazer todos os sites apontarem para a mesma aplicação
e, na aplicação, criar um método para descobrir o usuário a partir do
slug. Não creio que fará isso com urls. Há diversas maneiras de fazer,
vai depender de seu caso, tenho um cms [1] que faz uso dessa
funcionalidade. Nele, tenho uma função que concentra a distribuição
das views, descubro o site nesta função.

O pai deste cms, uma aplicação interna de um portal de representantes
comerciais [2] tinha uma função/view específica para cada seção do
site, nele eu usei decoradores de função.

Já num portal de anúncios classificados que administro [3], onde tenho
diversos endereços apontando para um mesmo lugar, faço uso uso do
sites framework.

> Será que vou precisar de um servidor dedicado?

Provavelmente sim, ou como o outro colega falou, vai precisar de
acesso a uma API. Eu uso o slicehost [4], tenho acesso a API para
gestão de DNS e uso ela no CMS Site na Hora [1].

[1] http://sitenahora.com.br/
[2] http://portaldorepresentante.com.br/
[3] http://portaldoclassificado.com/
[4] http://slicehost.com/

Qualquer dúvida é só avisar,

--
Michel Sabchuk
http://turbosys.com.br/

David Kwast

unread,
Nov 10, 2009, 6:47:11 AM11/10/09
to django...@googlegroups.com
Posso estar viajando, mas acredito que seja possível fazer isto de uma maneira bem simples se você tiver acesso ao .htaccess.

http://www.scriptygoddess.com/archives/2007/06/13/redirect-a-subdomain-to-a-directory-using-htaccess/

Parece que um simples REWRITE faz o mapeamento de <X>.example.com -> example.com/<X>

Eu uso o REWRITE para normalizar o www.

[]s

David Kwast



2009/11/10 Michel Thadeu Sabchuk <mich...@gmail.com>

Michel Thadeu Sabchuk

unread,
Nov 10, 2009, 8:03:27 AM11/10/09
to Django Brasil
Olá,

> Posso estar viajando, mas acredito que seja possível fazer isto de uma
> maneira bem simples se você tiver acesso ao .htaccess.
>
> http://www.scriptygoddess.com/archives/2007/06/13/redirect-a-subdomai...
>
> Parece que um simples REWRITE faz o mapeamento de <X>.example.com ->
> example.com/<X>

Já usei rewrite também mas, como vou ter que ler a url de qualquer
maneira, achei mais fácil armazenar os domínios no banco de dados e
consultar qual site mostrar baseado no domínio (tem uma variável em
request.META).

> Eu uso o REWRITE para normalizar o www.

Se fosse por esse lado, talvez fosse melhor ainda usar o nginx para
essa tarefa.

Abraço!

Felipe Munhoz

unread,
Nov 10, 2009, 9:03:47 PM11/10/09
to django...@googlegroups.com
Oi Franscico,

2009/11/10 Francisco Souza <fran...@franciscosouza.net>:
Isso é por ai mesmo, a ideia é que o subdomínio seja o nome do usuário
e dentro desse subdomínio ele possa ter várias aplicações, blog,
gerenciador de conteúdo, etc...

Interessante a ideia de usar a app sites do django, vou dar uma
pesquisada sobre isso! Valeu.


> Abraços,
> Francisco Souza
> http://www.franciscosouza.net
> Twitter: @franciscosouza
>
> >
>



--
Felipe Munhoz

Felipe Munhoz

unread,
Nov 10, 2009, 9:20:13 PM11/10/09
to django...@googlegroups.com
Olá Thadeu,

2009/11/10 Michel Thadeu Sabchuk <mich...@gmail.com>:
>
> Olá Felipe,
>
>> Sendo que "nomedeusuario" seria um valor definido no momento do
>> cadastro do usuário no sistema.
>> Isso provavelmente envolveria configurações de DNS, além de algumas
>> mudanças nas urls do django, certo?
>
> Você teria que fazer todos os sites apontarem para a mesma aplicação
> e, na aplicação, criar um método para descobrir o usuário a partir do
> slug. Não creio que fará isso com urls. Há diversas maneiras de fazer,
> vai depender de seu caso, tenho um cms [1] que faz uso dessa
> funcionalidade. Nele, tenho uma função que concentra a distribuição
> das views, descubro o site nesta função.
>

Certo, parece ser uma boa estratégia. Obrigado pela dica, vou tentar
implementar alguma coisa nesse sentido,
mas vou ver se migro para um VPS pelo menos. Quando surgirem mais
dúvidas eu volto :)

Até mais!

> O pai deste cms, uma aplicação interna de um portal de representantes
> comerciais [2] tinha uma função/view específica para cada seção do
> site, nele eu usei decoradores de função.
>
> Já num portal de anúncios classificados que administro [3], onde tenho
> diversos endereços apontando para um mesmo lugar, faço uso uso do
> sites framework.
>
>> Será que vou precisar de um servidor dedicado?
>
> Provavelmente sim, ou como o outro colega falou, vai precisar de
> acesso a uma API. Eu uso o slicehost [4], tenho acesso a API para
> gestão de DNS e uso ela no CMS Site na Hora [1].
>
> [1] http://sitenahora.com.br/
> [2] http://portaldorepresentante.com.br/
> [3] http://portaldoclassificado.com/
> [4] http://slicehost.com/
>
> Qualquer dúvida é só avisar,
>
> --
> Michel Sabchuk
> http://turbosys.com.br/
> >
>



--
Felipe Munhoz

Felipe Munhoz

unread,
Nov 10, 2009, 9:22:28 PM11/10/09
to django...@googlegroups.com
Oi David, valeu pela dica do .htaccess vou ler o artigo.

Até mais!

2009/11/10 David Kwast <david...@gmail.com>:
--
Felipe Munhoz

David Kwast

unread,
Nov 11, 2009, 7:49:26 AM11/11/09
to django...@googlegroups.com
2009/11/11 Felipe Munhoz <mun...@gmail.com>

>
> Oi David, valeu pela dica do .htaccess vou ler o artigo.
>
> Até mais!

Então, eu fiz um busca rápida e mandei o primeiro link relevante. Mas o apache é muito flexível e suporta "capturar" praticamente qualquer coisa da URL que chegou nele, e depois escolher como montá-la do lado de dentro do servidor. Então, dependendo doq ue você precisa, um MOD_REWRITE vai funcionar bem com as URLs do Django.
Reply all
Reply to author
Forward
0 new messages