Я думаю, что должно было бы быть больше информации о том, что виды сайтов развертываемых: было бы различия на основе отношений между сайтами, как программно и «юридически» (как в деловых отношениях):
- Наличие системной учетной записи для каждого сайта может быть удобно, если сайты принадлежат «другим» людям - если вы являетесь веб-дизайнером или программистом с несколькими клиентами, тогда вам может понадобиться разделить.
- Если ваши сайты связаны, то есть сайт форума, сайт блога и т. Д., Вы можете воспользоваться единой системой развертывания (например, нашей).
- для библиотек, если они размещены в авторитетных источниках (pypy, github и т. Д.), Вероятно, это нормально оставить их там и развернуть от них - если они находятся на изворотливых хостах, которые вверх или вниз, мы берем копию и поместите их в папку/thirdparty в нашем git-репо.
ТКАНИ Ткань удивительно - если его установка и настроена правильно для Вас:
- У нас есть политика здесь, который не означает, что никто никогда не должен войти на сервер (который основном true - бывают случаи, когда мы хотим посмотреть исходный файл журнала nginx, но это редкость).
- У нас есть ткань, сконфигурированная так, что есть отдельные функциональные блоки (restart_nginx, restart_uwsgi и т. Д.), А также
- функции бизнес-уровня более высокого уровня, которые управляют всеми маленькими блоками в правильном порядке - для нас, чтобы обновить все наши серверы мы набираем тип «fab -i secretkey live deploy» - live устанавливает настройки для живых серверов и развертывает ldeploys (-i является необязательным, если у вас есть.ssh ключи установлены правильно)
- У нас даже есть флаг управления, который, если используется живая настройка, перед выполнением развертывания запросит «вы уверены».
Наш макет код
Таким образом, наш базовый код макет выглядит как это:
/ <-- folder containing readme file etc
/bin/ <-- folder containing nginx & uwsgi binaries (!)
/config/ <-- folder containing nginx config and pip list but also things like pep8 and pylint configs
/fabric/ <-- folder containing fabric deployment
/logs/ <-- holding folder that nginx logs get written into (but not committed)
/src/ <-- actual source is in here!
/thirdparty/ <-- third party libs that we didn't trust the hosting of for pip
Возможно спорно, потому что мы загружаем наши бинарные файлы в наш репозиторий, но это означает, что если я обновить nginx на ящиках и хотите откат, я просто делаю это, манипулируя git. Я знаю, что работает против того, что строится.
Как наши развернуть работы:
Всего наш исходный код размещается на отдельном Bitbucket репо (у нас есть много РЕПО и несколько пользователей, то почему Bitbucket лучше для нас тогда GitHub). У нас есть учетная запись пользователя для «серверов» со своим собственным ключом ssh для битбакета.
Deploy в ткани выполняет следующие действия на каждый сервере:
- ИРЦ бот объявляют начало в канал IRC
- мерзавца тянуть
- пип развернуть (из списка пипа в нашем репо)
- SyncDB
- юг мигрируют
- uwsgi перезагружать
- сельдерея рестарт
- ИРЦ боты объявляют о завершении в канал IRC
- тестирование начало наличие
- огласить результаты тестирования доступности (и после доклада в частную Pastebin)
«тест доступности» (думает, что блок тест, но против сервера в реальном времени) - попадает на все веб-страницы и API в учетную запись «test», чтобы убедиться, что она вернет нормальные данные, не влияя на статистику в реальном времени.
У нас также есть служба резервного копирования GIT, так что если Bitbucket вниз, он падает к тому, что изящно, и мы даже Дженкинс интеграция, на совершение в «развернуть» ветвь, это приводит к тому, развертыванию, чтобы пройти через
страшная бит
Поскольку мы используем облачные вычисления и ожидаем высокие пропускную способность, наши коробки авто икры. Theres изображение по умолчанию, которое содержит копию git repo и т. Д., Но неизменно оно будет устаревшим, поэтому theres сценарий запуска, который делает развертывание для себя, то есть новые поля, добавленные в кластер, автоматически обновляется.
Это, вероятно, будет закрыто, так как здесь есть 4 вопроса. Я держу все просто и имею все мои сайты под '/ sites/www.mysite.com /'. В папке конкретного сайта у меня есть папка 'project', которая содержит * все *, специально для этого сайта, который должен быть проверен в VCS, включая конфигурацию, настройки, readme, требования и т. Д. –