Совместное использование ресурсов несколькими веб-корнями CakePHP в Windows / IIS? - PullRequest
0 голосов
/ 12 августа 2010

У меня установлена ​​программа CakePHP, на которой запущено шесть разных веб-сайтов, каждый со своим собственным рутом. Весь базовый код одинаков (контроллеры, модели и т. Д.), Только CSS, изображения, JS и т. Д. Разбиты на отдельные корни (app / webroot, app / webroot_second_site, app / webroot_third_site и т. 1001 *

Мой вопрос: есть ли способ поделиться общими ресурсами среди рут-корней? Таким образом, у нас нет шести разных копий TinyMCE и jQuery, которые загромождают наш проект, и, что более важно для меня, чтобы мы могли внести изменения в общий файл CSS вместо того, чтобы копировать / вставлять изменения на шесть разных сайтов ». папки

Если бы эти сайты работали на компьютере с Linux, я думаю, что это было бы довольно легко сделать с помощью символической ссылки от каждого из корневых сетей на общую папку выше в дереве каталогов, но мы работаем под управлением Windows Server 2003 / IIS 6. Есть предложения?

Ответы [ 3 ]

1 голос
/ 17 августа 2010

Оказывается, вы можете делать символьные ссылки в каталогах в файловых системах NTFS. Или, по крайней мере, достаточно близко для практических целей. «Переходы NTFS» будут работать для того, что вы хотите. Возьмите программу «Соединение» Sysinternals для простой программы командной строки для создания / удаления этих соединений. Затем вы можете связать любые общие каталоги, которые вам нужны, с одним главным каталогом. Например, если у вас есть

webroot1 / webroot2 / webroot3 /

каждый со своим собственным каталогом "js /", тогда вы можете создать

webroot_common / JS /

и затем symlink ... er, "создать соединения" в этом новом каталоге следующим образом:

junction webroot1/js/common webroot_common/js
junction webroot2/js/common webroot_common/js
junction webroot3/js/common webroot_common/js

(да, программа "junction" получает свои данные в обратном направлении от Linux "ln -s") Затем вы можете поместить в эту общую папку все необходимые вам js-файлы, например jQuery, и оставить все js-файлы, специфичные для сайта, в "webrootX / js".

0 голосов
/ 14 августа 2010

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

Во-первых, поместите каталоги APP и CAKE на уровень выше public_html.

/var/www/app
/var/www/cake

Убедитесь, что в папке тортов есть все папки тортов (торт, продавцы и т. П.) Направьте свои сайты на их каталоги public_html.

/var/www/html/site1
/var/www/html/site2

Содержимое веб-корня будет находиться в каждом из каталогов public_html.Теперь измените файл index.php в каждом корне Интернета, чтобы он указывал на одно и то же приложение:

if (!defined('ROOT')) {
    define('ROOT', DS.'var'.DS.'www'.DS.'app');
}

if (!defined('APP_DIR')) {
    define('APP_DIR',dirname('app'));
}

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
    define('CAKE_CORE_INCLUDE_PATH', DS.'var'.DS.'www'.DS.'cake');
}

Убедитесь, что перезапись включена, конечно.Затем все они будут запускаться из одного и того же кода, но использовать веб-корень, из которого подается index.php.

0 голосов
/ 12 августа 2010

Вы можете сделать статический сервер.Добавьте запись DNS к чему-то вроде static.yoursite.com.Ссылка на эти файлы с других сайтов - возможно, вы можете просто изменить помощник HTML, чтобы он автоматически создавал ссылки на другой домен.

Это может помочь с производительностью, потому что вы можете запустить что-то вроде nginxобслуживать эти статические файлы.Он также распараллеливает извлечение ресурсов - большинство браузеров разрешают 2 соединения с данным сервером, поэтому статические компоненты конкурируют с теми ресурсами подключения, которые необходимы динамическим компонентам.По сути, пользователь запускает 2 соединения с вашими динамическими компонентами, а также 2 соединения со статическими ресурсами.

Хорошо работает IME.

...