Я попытался выполнить поиск, но так и не смог определить лучшие условия поиска, чтобы найти свой ответ.
У меня есть сервер Ubuntu 10.04 с Apache. Я хочу создать сайт с версией, чтобы моя файловая структура выглядела так:
/var/www/MyApp1.0
/var/www/MyApp1.1
/var/www/dev -> /var/www/html/MyApp1.1
/var/www/test -> /var/www/html/MyApp1.0
Где «dev» и «test» - символические ссылки на другие папки. Так что мой URL для этих двух сред будет "http://my-url.com/dev" или "http://my-url.com/test". Для моей производственной среды я хочу, чтобы URL-адрес в браузере был просто"http://my-url.com", без перенаправления на что-то вроде"http://my-url.com/prod".
Как я могу настроить его так, чтобы базовый URL-адрес указывал на конкретную версию без перенаправления, изменяющего URL-адрес?
Спасибо,
Трэвис
РЕДАКТИРОВАТЬ:
Я чувствую, что мне следует подробнее рассказать о наших текущих настройках и дать понять, что у нас нет кучи времени, чтобы потратить массу изменений. Простите за длину, но я пытаюсь нарисовать точное изображение нашей текущей настройки, чтобы получить лучшее решение.
Наша команда разработчиков состоит из 9 человек, 5 из которых работают над нашим основным проектом (C ++), 3 работают над графикой для нашего основного проекта, а я работаю над всем веб-дизайном в дополнение к нашему основному проекту. Мы используем MS SourceSafe для контроля версий. Я знаю, что МНОЖЕСТВО людей недовольны этим, но это то, что мы используем уже некоторое время и не собираемся менять его на данный момент, поскольку у нас слишком много других приоритетов.
Каждый член команды разработчиков (включая меня) работает на рабочей станции Windows. У нас нет установленного Apache ни на одном из наших локальных компьютеров. До того, как я начал здесь работать, у них был настроен сервер Ubuntu Linux с установленным Apache для размещения сайта. Они будут разрабатывать в области разработки на этом сервере Linux, и всякий раз, когда они собирались создать новую веб-сборку, они копировали файлы на свой локальный компьютер и оттуда регистрировали их в SourceSafe.
Поскольку я был здесь, я установил общий ресурс Samba на сервере Linux и сопоставил его с сетевым диском на моей рабочей станции Windows. Таким образом, я могу извлекать и загружать файлы без необходимости копировать их на локальный компьютер. Поскольку сейчас я единственный человек, работающий над веб-материалами, я все время оставляю файлы проверенными и написал пакетный сценарий для выполнения процесса «сборки». Каждый раз, когда я хочу обновить нашу тестовую среду новой версией, я запускаю пакетный скрипт, и он делает следующее:
Так что у нас действительно есть система контроля версий, которая может быть не самой лучшей, но работает для нас. Я полагаю, что мог бы перестать создавать папки с версиями и использовать символические ссылки, но мне нравится иметь возможность легко переключаться между различными версиями, просто и быстро обновляя символическую ссылку.
Я искренне ценю ответы, которые позволят мне узнать, каковы на самом деле лучшие практики (теперь я понимаю, что не дал этой теме подходящего названия для своего вопроса). Я нашел их очень информативными, и, как человек, который когда-либо работал в одиночку или в небольшой команде других, столь же неопытных, я не знал этой информации раньше и буду следовать этим методам в будущих усилиях.
Однако, ради экономии времени и простоты, могу ли я сохранить текущую настройку и просто перенаправить базовый URL-адрес в другую папку без изменения URL-адреса? По сути, я бы сделал / var / www символической ссылкой на MyApp1.0, но проблема, с которой я столкнулся бы, заключается в том, что я больше не смогу получить доступ к / var / www / dev или / var / www / test.
Еще раз спасибо,
Трэвис
Здесь лучше всего использовать систему контроля версий, такую как subversion, mercurial или git, для обработки версий.
Процесс заключается в том, что вы настраиваете основной или корневой репозиторий где угодно (это может быть на веб-сервере или где-то еще). Чтобы внести изменения в свой сайт, проверьте код из репозитория, измените и протестируйте на своем локальном компьютере, а затем зафиксируйте или объедините свои изменения обратно в репозиторий, когда они вас устраивают (или даже раньше - в этом прелесть управления версиями. ).
Затем вы настраиваете в Apache ровно два сайта - ни больше, ни меньше. Один сайт есть и всегда будет вашим текущим производственным сайтом. Другой - и всегда будет вашим сайтом QA / Staging / pre-production. Когда у вас есть новый набор изменений, который вы хотите запустить, вы сначала проверяете / обновляете / объединяете изменения для соответствующего номера ревизии из репозитория в область контроля качества и повторно тестируете все там, чтобы убедиться, что он выглядит и работает должным образом. Если все в порядке, теперь вы можете сделать то же самое для своего действующего сайта.
Это избавит вас от необходимости создавать новый набор ссылок или папок каждый раз, когда вы хотите обновить свой сайт, и будет хорошо работать с большинством инструментов, обычно используемых для разработки в Интернете. Он также будет намного лучше отслеживать вашу историю.
Я бы не стал делать это с символическими ссылками; Я бы сделал все это с помощью mod_rewrite.
RewriteEngine on
RewriteRule /dev/(.*) /var/www/MyApp1.1/$1 [L]
RewriteRule /test/(.*) /var/www/MyApp1.0/$1 [L]
RewriteRule /(.*) /var/www/MyApp0.9/$1 [L]
@ Игнасио Васкес-Абрамс:
Ваш ответ выглядит как мое решение, но мне пришлось немного его изменить, и мне нужна дополнительная помощь. Мой файл .htaccess (расположенный в / var / www / LicenseManager, который является корнем моего домена) выглядит так:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteRule dev(.*) /var/www/LicenseManager/LicenseManager1.02/$1 [L]
RewriteRule test(.*) /var/www/LicenseManager/LicenseManager1.02/$1 [L]
RewriteRule ^$ /var/www/LicenseManager/LicenseManager1.02/$1 [L]
У меня есть несколько вопросов по этому поводу. При такой настройке он отлично работает, если мой URL "http://my-url.com/dev/", но если мой URL"http://my-url.com/dev"(без косой черты в конце) мои включаемые файлы не найдены (файлы CSS и JavaScript). Я не очень хорошо знаком с регулярными выражениями, поэтому, возможно, это просто вопрос их исправления.
Кроме того, мне пришлось заменить четвертую строку в вашем примере на мою, иначе я получал внутреннюю ошибку сервера. После его изменения работает либо "http://my-url.com" или "http://my-url.com/", но в любом случае у меня все еще есть проблема с моими включаемыми файлами.
Итак, как я могу изменить свой файл .htaccess, чтобы включаемые файлы находились с косой чертой в конце или без?
Еще раз спасибо!
Трэвис
P.S. Я знаю, что это не должно работать как форум, и что я должен публиковать комментарий к чужому сообщению в качестве ответа, но мой вопрос было бы гораздо труднее читать в поле для комментариев без форматирования. К тому же я слишком многословен, чтобы уместить все, что мне нужно, в поле для комментариев.
РЕДАКТИРОВАТЬ:
Решено! Вот как выглядит мой последний файл .htaccess:
Options +FollowSymLinks
Options +Indexes
RewriteEngine On
RewriteBase /
RewriteRule ^dev$ dev/ [R]
RewriteRule ^test$ test/ [R]
RewriteRule ^dev/(.*) /var/www/LicenseManager/LicenseManager1.02/$1 [L]
RewriteRule ^test/(.*) /var/www/LicenseManager/LicenseManager1.02/$1 [L]
RewriteRule ^(src/(.*)|$) /var/www/LicenseManager/LicenseManager1.02/$1 [L]
Мне пришлось немного изменить регулярные выражения, потому что они будут совпадать, если где-то будет найдено "dev" или "test", поэтому "http://my-url.com/garbage/blahdevblah.html"будет перенаправлен на"http://my-url.com/dev/". Каретка (^) гарантирует, что" dev "можно найти только в начале, а знак доллара ($) гарантирует, что ничего не следует за" dev ". Я изменил остальные, чтобы убедиться, что что-то вроде"http://my-url.com/garbagedev/nothing.html"не соответствует правилу.
Что касается последнего правила, я понял, что если регулярное выражение - это просто (. *), Оно соответствует чему угодно, поэтому даже после перенаправления оно все еще совпадает и пытается перенаправить снова, что приводит к бесконечному циклу, который в конечном итоге показывает вам 500 Внутренняя ошибка сервера. Папка "src" - единственный каталог в моем проекте, а index.php - единственный скрипт в основной папке (index.php автоматически отображается, если он не указан). Таким образом, последнее правило в основном гласит: «Если строка начинается с« src / »ИЛИ пуста, перенаправить».
Еще раз спасибо за вашу помощь, Игнасио!
Я не уверен, что установка apache в любом случае позволит вам обслуживать страницы по символическим ссылкам. Я знаю, что не будет.