Я знаю, що це питання трохи старше, але, оскільки я не бачив цього як відповідь тут, я хотів би поділитися тим, що я зазвичай роблю для налаштувань і розгортань на основі одного сайту, і це працює дуже добре, також і з роботою з декількох пристроїв, локацій та з кількома розробниками (усі вони мають власні локальні репости, в яких вони працюють, як це звичайно для git).
Я можу запропонувати наступне налаштування:
Він також окреслений у (якщо вам потрібен другий ресурс, щоб обернути його навколо):
В основному це працює (щонайменше з трьома репостами):
- розміщуючи веб-сайт на живому хості під git,
- створити нове голе сховище git на живому хості.
- А потім перейдіть від голого сховища до місцевого розвитку git repo (s).
Коли робота закінчена, ви натискаєте на віддалений голий репо, з якого ви клонувались. Гола репо має гачки для синхронізації з живим репо (в зазначених вище кодах називаються штрих ).
Як специфічні параметри Wordpress у репо, у мене є таке .gitignore
:
# uploads are data, excluded from source tree
wp-content/uploads/
Решта в т.ч. плагіни та конфігурації теми я зберігаю під контролем версії / конфігурації. Це дозволяє мені легко відслідковувати зміни та переглядати код, перш ніж використовувати його в прямому ефірі. Я також можу легше злитися проти віддалених дерев із власними змінами. Це особливо корисно проти ядра Wordpress, доступного в Github .
Це працює досить добре для більшості моїх потреб у Wordpress. Оголене репо не дозволяє вам підштовхувати суперечливі зміни. Також він спочатку синхронізується з віддаленою копією перед оновленням живого сайту. Це означає, що оновлення веб-сайту, як правило, відбувається досить швидко. Через гачки ви навіть можете потім зателефонувати на гачки для оновлення Wordpress, якщо хочете.
Якщо ви не експериментували, наскільки це можна вдосконалити за допомогою гачків Github, але мені зазвичай вони не потрібні, оскільки код знаходиться під локальним контролем версій, а не Github.
Щоб вперше налаштувати таку систему, вам знадобиться трохи часу, щоб оцінити, чи є у вас всі інструменти, доступні на віддаленому хості:
- SSH доступ
- GIT
- Приватний каталог, в який можна поміщати файли та підкаталоги (наприклад, для вашого голого git repo)
Час налаштування вперше повинен бути можливим протягом однієї двох годин, в т.ч. все середовище, і ви спочатку публікуєте 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, а також завантаження файлів, базу даних та gpo repo. Також для моїх команд резервного копіювання я можу бути не зовсім гаразд, але вони працюють для мене:
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. Їх потрібно запускати в певній системі, тому їх зазвичай у програмі немає (наприклад, програма може вийти з ладу, але потрібно, щоб вони продовжували працювати).
Увімкнено для роботи в команді
Ще одна приємна перевага полягає в тому, що ваш сайт уже включений для роботи в команді. Завдяки додатковому голому репо ви не можете зробити багато неправильного, і ви навіть можете ділитися віддаленими гілками, крім майстра або живої гілки з колегами.