Наилучшая практика для настройки Apache и SVN для нескольких сайтов и пользователей? - PullRequest
2 голосов
/ 12 января 2010

Я только начал работать в новой фирме в качестве внутреннего веб-разработчика. До сих пор они занимались аутсорсингом разработки своих сайтов и решили привлечь их к себе, отсюда и моя работа.

Я только каждый работал над проектами самостоятельно и никогда не использовал контроль версий.

Мы только что наняли другого веб-разработчика, чтобы он работал вместе со мной, и меня попросили изучить систему контроля версий, поскольку для доступа к файлам сайта потребуется до 4 человек.

Я совершенно не понимаю, как правильно настроить сайты Apache при работе с контролем версий.

В настоящее время у нас есть локальный веб-сервер разработки под управлением Ubuntu и Apache2 и работающий веб-сервер в центре обработки данных. Локальный сервер содержит несколько веб-сайтов, каждый из которых имеет подпапку в корне веб-узла, т.е. / home / htdocs / sitename_com и / home / htdocs / sitename2_com. В настоящее время мы редактируем файлы веб-сайтов на ПК с использованием общих ресурсов samba или FTP. Я хочу установить SVN, чтобы пользователи могли извлекать рабочую копию кода одного сайта, вносить любые изменения, а затем фиксировать эти изменения в репозитории. Затем мы должны иметь возможность протестировать сайты, а затем, когда они будут счастливы, отправить файлы FTP на наш работающий сервер.

Теперь, когда я задумался о настройке SVN, я понял, что когда пользователь извлекает рабочую копию на своем компьютере, он не может на самом деле проверить изменения, пока не отправит их обратно в хранилище. Это потому, что файлы PHP и должны выполняться через веб-сервер. Теперь я могу просто установить XAMP на каждую машину, но тогда конфигурация будет отличаться от конфигурации Apache2 на сервере разработки. Это для меня не вариант.

Полагаю, рабочие копии нужно создавать не на компьютере пользователя, а внутри корневого веб-сервера сервера разработки, это тот же сервер, что и сам репозиторий. Я мог бы создать общий ресурс samba для папки рабочей копии пользователей, чтобы они могли вносить изменения на своем компьютере с Windows.

У меня есть несколько вопросов:

  1. Можете ли вы просмотреть веб-сайт, хранящийся в хранилище в браузере, без предварительной проверки?
  2. Если нет, то сайт должен быть извлечен в папку в корне сети того же сервера?
  3. Должен ли я использовать репозиторий для каждого сайта или один репозиторий с подпапками для каждого сайта?
  4. Когда пользователь передает изменения, внесенные в рабочую копию, обратно в хранилище, нам необходимо протестировать эти изменения и изменения всех остальных, которые могли быть зафиксированы. Можно ли заставить SVN скопировать зафиксированные изменения в промежуточную область в корневом веб-каталоге для тестирования?

Или есть лучший способ сделать это?

Кажется, я не могу найти в Интернете какой-либо четкой информации о передовых методах настройки SVN для веб-сайтов. Понятно, как SVN относится к исходному коду приложения на C ++, где вы просто скомпилируете свою рабочую копию на своем компьютере для тестирования, но веб-сайты должны работать на веб-сервере, и каждая рабочая копия должна быть проверена на веб-сервере перед проверкой в хранилище.

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

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

Если бы кто-нибудь мог дать мне совет, как это настроить, структуру каталогов Apache, структуру хранилища и т. Д., Я был бы очень признателен.

Заранее спасибо!

1 Ответ

1 голос
/ 12 января 2010

У нас были некоторые похожие потребности, и мы сделали следующее:

  • Настройка сервера SVN (Git был опцией, но слишком сложным в этом случае, поскольку тогда еще не было очень хороших графических интерфейсов) - мы используем svn-daemon, который поставляется с SVN.
  • Настроить тестовый веб-сервер, запустить необходимое программное обеспечение (Apache и т. Д.).
  • Пользователи обновляют и фиксируют свои изменения в хранилище SVN и из него.
  • Установите простой скрипт, который выполняет что-то вроде следующего скрипта. По сути, получение всех изменений с сервера SVN каждый час (или при необходимости).

    cd /var/www/testdata/

    svn update -f

Ранее вам, конечно, нужно checkout хранилище.

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

Это позволит быстро проверить сделанные изменения. При желании вы также можете установить Redmine , который тесно интегрируется с SVN, что позволяет вам тесно интегрировать SVN-репозиторий с тикетами и отчетами об ошибках.


Звучит так, будто вам нужен Git. Git допускает отдельные ветви (например, для каждого пользователя или реализованную функцию), которые объединяются, когда они готовы.

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

Но скрипт на стороне сервера нужен в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...