freedev.asia Свободное програмное обеспечение, для свободных людей!

15Ноя/110

Одно ядро CakePHP — много проектов

Передо мной была поставлена поставлена задача - с помощью одного ядра CakePHP обрабатывать несколько приложений - папок app. Нечто подобное есть в официальной документации book.cakephp.org но как выяснилось это всего лишь разбрасывание файлов с библиотеками по файловой системе. Затем я начал копать в сторону .htaccess и у меня получилось нечто подобное:

<IfModule mod_rewrite.c>

RewriteEngine on
&amp;amp;amp;amp;amp;nbsp;
RewriteCond %{HTTP_HOST}  ^test\.name.*
RewriteRule    ^$ app-test/webroot/    [L]
RewriteCond %{HTTP_HOST}  ^test\.name.*
RewriteRule    (.*) app-test/webroot/$1 [L]
&amp;amp;amp;amp;amp;nbsp;

RewriteRule    ^$ app/webroot/    [L]
RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

Но этот способ мне очень не понравился сразу же, хотя он имеет место быть на каком либо хостинге где не подходит тот вариант который я нашел следующим.

А дальше я присмотрелся к следующей документации http://nuts-and-bolts-of-cakephp.com/2009/03/14/run-multiple-cakephp-app-side-by-side/ , если честно, я не понял почему автор статьи ссылается в конфигах на webroot каталоги. Я же предлагаю вам использовать в параметрах DocumentRoot настройках Apache путь до нужных app каталогов.

Пример:

У меня есть проект CakePHP, допустим у меня следующая структура файлов:

  • var
    • www
      • test-multi
        • app
        • app-test
        • .gitignore
        • index.php
        • plugins
        • vendors
        • .htaccess
        • lib
        • README

Apache у меня смотрит и настроен на /var/www/ но мне для доменов test.name и tast2.name нужно ссылаться на проекты которые находятся в /var/www/test-multi/app и /var/www/test-multi/app-test соответственно. Для этого нужно добавить соответствующие настройки в виртуальных хостах Apache:

<VirtualHost *:80>

ServerName test.name
DocumentRoot /var/www/test-multi/app

...

</VirtualHost>
<VirtualHost *:80>

ServerName test2.name
DocumentRoot /var/www/test-multi/app-test

...

</VirtualHost>

Все, теперь нужно только перезапустить Apache и у вас для разных доменов будут разные проекты.

Этот способ очень прост, но поскольку я потратил время на поиски ответа, то с помощью  этой статьи надеюсь сократить время вашего поиска.

Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Нет обратных ссылок на эту запись.