Flávio Silveira Programação & Desenvolvimento

  • BLOG
  • SOBRE
  • PORTFOLIO
  • CONTATO

Múltiplos sites com CodeIgniter – Exemplo prático

January 27th, 2009  |  Published in CodeIgniter, Php  |  14 Comments

Devido a muita procura do post sobre a restruturação do CodeIgniter para trabalhar com múltiplos sites (Múltiplos sites com CodeIgniter), fiz um passo a passo aqui da estrutura para o pessoal entender melhor.

Estava recebendo muitas dúvidas, vamos ver se com este exemplo consigo deixar as coisas mais claras para todos.

Começando do zero.

Baixei a última versão do CodeIgniter.
Descompacto ela no meu desktop.

Dentro dessa pasta veio o system, o user_guide, o index.php e o license.txt.
Costumo deletar o User_guide, pois uso a documentação online.

Atenção agora !
Dentro da pasta system temos a pasta application. É esta pasta que faz o seu site funcionar. Com esta informação em mente vamos em frente.

Para começar a trabalhar com o servidor. Começe criando uma pasta para cada site. Como exemplo site1 e site2.
ex1



O que o site vai precisar para funcionar ? Sim, como vimos acima é a pasta application. Dentro da pasta de cada site vamos precisar de uma application.
ex2


A pasta application, claro, deve ir com a estrutura que vem por padrão nela, como você deve ter reparado na imagem acima.

Agora que já temos o local dos sites prontos, precisamos do que faz o Codeigniter funcionar, que é todo o restante da pasta system. Essa pasta deve estar no mesmo nível dos seus sites.
ex3


Ok. Quase lá.
Agora, sabe aquele index.php que veio quando descompactamos o codeIgniter ? Como digo no outro post, é ele quem indica o caminho da pasta application do seu site, e também do core do codeIgniter. Logo, vamos precisar de um deles para cada site.
ex4


Agora precisamos editar esse arquivo index.php. Vamos começar pelo do site1.
Procure pela linha

$system_folder = "system"

Esta variável indica aonde está o core do seu sistema, a pasta system.
No nosso caso ela está um nível acima, então basta mudar para

$system_folder = "../system"

Logo na sequência você deve ver a linha

$application_folder = "application"

Essa é a variável que indica onde está a pasta application desse site (lembrando…estamos alterando o site1). O caminho está correto, então, mantemos assim.

Faça o mesmo para o site2, indicando onde está o core do codeIgniter(pasta system) e a pasta application.

Está feito!

Agora, apenas para ficar mais explícito, vamos alterar a view de cada site.
Dentro de Application > views, temos o arquivo welcome_message.php.
ex5


Dentro desse arquivo, vem a mensagem padrão de boas vindas do codeIgniter. Na do site1 tirei tudo que havia (ctrl + a  – del) e coloquei apenas o título

<h1>::: SITE 1 :::</h1>

e na do site2 apenas o título

<h1>::: SITE 2 :::</h1>

Agora basta acessar as pastas para conferir o resultado.

Para detalhes mais técnicos desse step by step, confira o antigo post.

Ainda com dúvida ? Faça aqui o download dos arquivos.

Caso ainda tenha sobrado dúvidas…entre em contato.
Abraços !!!

Compartilhe
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • PDF
  • RSS
  • Twitter
  • email

Posts Relacionados

  • Múltiplos sites com CodeIgniter
  • Habilitando Layouts no CodeIgniter (Template Engine) – Parte 1
  • CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.

Comentários

Feed
Trackback
  1. natanael disse:

    April 16th, 2009 at 11:28 (#)

    Muito bom, essas dicas que não se encontra nem no forum do CI é de grande importância, principalmente para quem deseja criar uma unica aplicação para ser usada em varios dominios diferentes com virtualhost.

    Parabens

  2. Flávio Silveira disse:

    April 18th, 2009 at 08:09 (#)

    Valeu Natanael…

  3. Claudio disse:

    May 7th, 2009 at 05:50 (#)

    Muito bom mesmo Flavio!

    Estou usando aqui também, ótima dica no CI.

    Você conseguiu retirar o index.php nessa estrutura? Estou tentando fazer isso agora mas estou tendo problemas.

    Abração,

    e boa sorte com tudo ae.

    T+

  4. Wellington disse:

    May 7th, 2009 at 10:43 (#)

    Ótimo post, obrigado por compartilhar as sua experiências no blog.

    Estou tendo dificuldades para entender como trabalhar com múltiplos sites no CI.

    No meu caso seria a seguinte estrutura:

    /admin <- creio que seria a mesma estrutura do tutorial ex: site1
    /index <- creio que seria a mesma estrutura do tutorial ex: site2
    /public <- javascripts/css e etc..

    Quando eu for acessar ex: http://site.com.br/ ele deve abrir “/index”

    Caso eu acesse http://site.com.br/admin acessa o administrador do site, creio que essa configuração seja feita por um .htaccess certo ?

    Outra pergunta, com essa estrutura, na minha view como eu chamaria um js dentro da /public ?

    Seria desta forma:

    Creio que pode ser a dúvida de outras pessoas e no início do desenvolvimento do projeto, não saber organizar a sua estrutura de pastas, é horrível.

  5. Wellington disse:

    May 8th, 2009 at 06:23 (#)

    Me baseando na estrutura deste tutorial, deixei da seguinte forma:

    Primeiramente configurei um .htacess eliminando o index.php da url.

    Minha nova estrutura:

    /admin

    / <- subi 1 nível dos arquivos /admin.

    /public <- arquivos css/js e etc…

    Está funcionando normalmente, se digito: http://127.0.0.1 abre o front e http://127.0.0.1/admin abre o back. Estou conseguindo trazer os styles.css/js sem problemas.

    * Essa estrutura é aceitável para se trabalhar no CI ?

    Obrigado pelo tutorial, ajudou a resolver meus problemas !

  6. Calebe disse:

    June 12th, 2009 at 08:05 (#)

    Muito bom, não achei isso em lugar nenhum …
    VLW

  7. Natanael disse:

    January 29th, 2010 at 16:25 (#)

    Olá Flávio, olha eu aqui de novo quase um ano depois.

    Tenho um site funcionando com CI, ta tudo muito bem. Só que agora vou usar um outro site no mesmo servidor e para esse novo site estou tentando usar essa estrutura que você passou.

    No localhost funciona uma maravilha com quantos site eu desejar mas no servidor de trabalho não esta funcionando, acho que não tem nada a ver com o fato de esta usando estrutura que você passou mas também não tenho certeza.

    No arquivo application/config/config.php já usei todas as opções da diretiva URI PROTOCOL.

    Ja usei todas as opções:
    AUTO
    PATH_INFO
    QUERY_STRING
    REQUEST_URI
    ORIG_PATH_INFO

    e mesmo assim o erro continua. O erro retornado esta no final do comentário.

    Você sabe dizer o que pode esta acontecendo?

    —————– ERRO ——————
    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, webmaster@w21studio.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

  8. Flávio Silveira disse:

    January 29th, 2010 at 17:46 (#)

    Fala cara…..
    Sempre bem vindo..haha

    Então…
    O URI PROTOCOL e esse erro ai que você mostrou tem haver com mod_rewrite e .htaccess que realmente pode variar de um ambiente de desenvolvimento para um de produção…

    Como está a configuração desses caras ??

    Abraço!!

  9. Natanael disse:

    January 30th, 2010 at 04:18 (#)

    Ola Flávio,

    o mod_rewrite esa habilitado.

    O meu .htaccess é esse aqui:

    php_flag magic_quotes_gpc off
    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|robots\.txt|css|js)
    RewriteRule ^(.*)$ /imobiliaria/index.php/$1 [L]

    imobiliaria é o nome da pasta onde esta a aplicação com problema.

    No outro site, que roda no mesmo servidor, uso um .htaccess igual, só muda o nome da pasta.

    Valeu pela resposta, abraços.

  10. Flávio Silveira disse:

    January 31st, 2010 at 15:40 (#)

    Natanael…

    .htaccess é loko….
    Esse php_flag_magic_quotes_gpc off eu nunca vi…

    As vezes no RewriteRule você tem que especificar o diretório inteiro, desde sua pasta de trabalho… é de se experimentar…

  11. MJ disse:

    February 20th, 2010 at 06:48 (#)

    Olá Flávio! Parabéns pelas explicações,são as mais completas que encontrei. Porém tenho um problema em relação a reutilização dos models. Tenho um site e uma aplicação, porém quero poder acessar os models do site dentro da aplicação. Tentei das suas formas: servidor/application/website e servidor/application/sistema, com os devidos index.php configurados, e da outra forma servidor/website/application e servidor/sistema/application também com os index.php configurados e ambos apontando para o CodeIgniter-v1.7.2/system. No entando quando tento acessar o sistema recebo a seguinte mensagem: “Unable to locate the model you have specified: modelo_model”. Ou seja, quero compartilhar esse modelo_model para ambos website e sistema. Isso é possível, você poderia me ajudar de alguma forma. Muito Obrigado. MJ

  12. Flávio Silveira disse:

    February 21st, 2010 at 18:34 (#)

    MJ…
    Tem que dar um jeito de você centralizar os models fora da applications dos sites.

    Ai vai ter que mudar a pasta padrão onde o codeIgniter procura os models.
    Você acha isso na pasta libraries, no arquivo Loader.php.
    Procure pelo seguinte IF:
    if ( ! file_exists(APPPATH.’models/’.$path.$model.EXT))
    {
    show_error(‘Unable to locate the model you have specified: ‘.$model);
    }

    Dê uma olhada se consegue. Não é complicado.
    Qualquer coisa me avise que dá pra fazer um pequeno post disso aí. Acho que é legal a idéia.

    Valeu pelo comentário.
    Abraço!!!

  13. Jackson Jorge disse:

    June 8th, 2010 at 18:37 (#)

    Show de bola meu irmão, estou começando agora com o CI, e estava achando estranho mesmo ter que duplicar tudo do CI para os outros sites.

    Valeu pelo tuto que ficou muito bom!

  14. Everton Pabon disse:

    July 25th, 2010 at 08:38 (#)

    Muito bom tutorial, também estou começando agora com frameworks optando pelo CI devido a simplicidade do uso, e uma das minhas “preocupações” era a organização dos diretórios, dessa forma ficou muito simples evitando repetição de pastas.

Deixe um comentário

Flávio Silveira

Programação & Desenvolvimentominha foto

Rss Logo Twitter Logo

Blogroll

  • Aurélio Marinho Jargas
  • Fábio Tomio
  • Mozart Petter
  • Renie Siqueira
  • Willian Rodriguez

Tags & Categorias

add-ons Adobe Air Adobe Flash Builder Adobe Flex Apache apple arrays Banco de Dados CodeIgniter complementos Configuração PHP debug Desenvolvimento Mobile erro 500 erros de servidor Expressões Regulares facilidade formatação via sql Forms framework php geração de cadastros Geração de formulários Internet Explorer não salva session iphone ipod touch Jquery Mobile Layouts mozart petter mozilla firefox multiple site múltiplos sites com codeIgniter Php PHP Sc Conf PodCast postgres Programação em geral reestruturando CodeIgniter Regex Replace Shell Site Mobile smarty SQL Sql Server Template engine Tempo de sessão codeIgniter Adobe (1)
Adobe Air (1)
Adobe Flash Builder (1)
Apache (1)
Banco de Dados (4)
Browsers (2)
CodeIgniter (7)
Expressões Regulares (1)
IPhone – Desenvolvimento (2)
JavaScript (1)
Mobile (1)
Php (10)
Podcast (1)
Programação em geral (12)
Programação SQL (4)
Screencast (1)
Servidor (1)
Shell Script (1)

WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.



©2010 Flávio Silveira
Powered by WordPress adapted of Gridline Lite of author Graph Paper Press.