Я знаю, что этот вопрос немного старше, однако, поскольку я не рассматривал это как ответ здесь, я хотел бы поделиться тем, что я обычно делаю для установок и развертываний на основе git на одном сайте, и он работает очень хорошо, в том числе с несколькими устройства, локации и с несколькими разработчиками (у всех есть свои собственные локальные репозитории, в которых они работают, как это принято в git).
Я могу искренне предложить следующую настройку:
Это также описано в (если вам нужен второй ресурс, чтобы обернуть его вокруг):
В основном это работает (по крайней мере с тремя репо):
- положить сайт на live-host под git,
- создайте новый репозиторий git на живом хосте.
- А затем переходите от простого репозитория к вашему локальному git-репозиторию разработки.
Когда работа закончена, вы нажимаете на удаленный репозиторий, с которого вы клонировали. У голого репо есть крюки для синхронизации с живым репо (в вышеприведенных кодах, называемых простыми ).
В качестве конкретных настроек WordPress в репо у меня это .gitignore
:
# uploads are data, excluded from source tree
wp-content/uploads/
Остальное вкл. конфигурацию плагина и темы я держу под контролем версии / конфигурации. Это позволяет мне легко отслеживать изменения и просматривать код перед его использованием. Я также могу легче объединяться с удаленными деревьями с моими собственными изменениями. Это особенно полезно против ядра Wordpress, которое доступно на Github .
Это работает очень хорошо для большинства моих потребностей WordPress. Безупречное репо не позволяет вам проталкивать противоречивые изменения. Он также синхронизируется с удаленной копией перед обновлением live-сайта. Это означает, что обновление живого сайта обычно происходит довольно быстро. Из-за хуков вы можете даже вызывать хуки обновления Wordpress впоследствии, если хотите.
Если вы еще не экспериментировали, насколько это можно улучшить с помощью хитов Github, но обычно они мне не нужны, так как код находится под локальным контролем версий, а не Github.
Чтобы настроить такую систему в первый раз, вам потребуется некоторое время, чтобы оценить, есть ли у вас все инструменты, доступные на вашем удаленном хосте:
- Доступ по SSH
- GIT
- Личный каталог, в который вы можете помещать файлы и подкаталоги (например, для вашего простого git-репо)
Время установки в первый раз должно быть возможно в течение одного-двух часов, включая вся среда, и вы сначала публикуете push.
В зависимости от вашего хоста, вы также можете защитить .git
каталог от веб-доступа. Вот пример .htaccess
кода, который даже делает это, поместив Wordpress внутри подкаталога, что оставляет место в репо, не публикуемое онлайн (полезно):
Options -Indexes
# fix trailing slash for .git / make it disappear + .gitignore and similar files.
RedirectMatch 404 ^/\.git(.*)$
# mask 403 on .ht* as 404
<Files ~ "^\.ht">
Order Deny,Allow
Allow from all
Satisfy All
Redirect 404 /
</Files>
RewriteEngine On
RewriteBase /
# map everything into public and set environment var
# to tag the request being valid
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule ^(.*)$ /public/$1 [E=sitealias:set,L]
Короче говоря, все, что не в общедоступном каталоге, не в сети. Внутри общедоступного каталога может быть, например, кодовая база wordpress, для чего .htaccess
вам нужно:
RewriteEngine On
# mask as 404 if directly accessed
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule .* - [L,R=404]
Это предотвращает прямой доступ к публике . Часть этого .htaccess -foo вы можете найти в общих чертах здесь: Запросы к .htaccess должны возвращать 404 вместо 403 . Для переменных среды вам необходимо проверить, работает ли это в вашей среде. Также вам нужно решить, поставить ли вы это под контроль версий или нет.
Если у вас больше контроля над хостингом, вы можете сделать больше вещей здесь (и по-другому / более оптимизировать), приведенные выше примеры предназначены для типичных сред общего хостинга (которые предлагают GIT, некоторые пользователи говорят, что вы можете легко установить его самостоятельно, как ну, я обычно прошу своих хостеров предоставить такие, потому что я предпочитаю, чтобы они позаботились о том, за что я им заплачу).
С отрицательной стороны, это имеет некоторые общие проблемы, также изложенные в других ответах. Одна вещь, которой я не горжусь, но то, что работает, - это дать хосту разработки возможность изменить свой файл хоста, чтобы сервер базы данных указывал на копию разработки. Таким образом, вы можете сохранить одну конфигурацию базы данных. Не очень круто ESP. из-за полномочий.
Автоматическое резервное копирование
Однако, как правило, мне здесь все равно, но вместо этого ежедневно выполняются резервные копии на удаленных системах, которые постепенно сохраняются в другом удаленном месте. Это просто и дешево и позволяет вам восстановить как установку Wordpress, так и загрузку файлов, базу данных и репозиторий git. Также с моими командами резервного копирования у меня может быть не все в порядке, но они работают для меня:
mysql: mysqldump --host=%s -u %s --password=%s %s| gzip > %s
git : git gc
git bundle
files: tar --force-local -czf %s %s
То, что я предлагаю, это то, что вы держите процессы вокруг вашей установки Wordpress вне Wordpress. Они должны работать на конкретной системе, так что вы обычно не имеют их внутри приложения (например , приложение может пойти вниз , но вам нужно , чтобы они продолжают работать).
Включено для совместной работы
Еще одним приятным преимуществом является то, что ваш сайт уже включен для совместной работы. Благодаря дополнительному репо, вы не можете делать много ошибок, и вы даже можете делиться удаленными ветками, кроме главной или прямой ветки, со своими коллегами.