Bu sorunun biraz daha eski olduğunu biliyorum, ancak bunu burada bir cevap olarak görmediğim için, normalde tek site git tabanlı kurulumlar ve dağıtımlar için yaptığım şeyi paylaşmak istiyorum. aygıtlar, konumlar ve çok sayıda geliştiriciyle (tümü git için ortak olduğu için çalıştığı kendi yerel repolarına sahip olan).
Yürekten aşağıdaki kurulum önerebilirim:
Ayrıca (başınızı etrafına sarmak için ikinci bir kaynağa ihtiyacınız varsa) ana hatlarıyla belirtilir:
Temelde şu şekilde çalışır (en az üç depoyla):
- web sitesini git altındaki canlı sunucuya koymak,
- canlı ana bilgisayarda yeni bir çıplak git deposu oluşturun .
- Ve daha sonra çıplak havuzdan yerel gelişiminize gidiniz.
İş bittiğinde, klonladığınız uzaktaki çıplak depoya doğru itiyorsunuz. Çıplak repo, canlı repo ile senkronize etmek için kancalara sahiptir (yukarıdaki kodlarda asal olarak adlandırılır ).
Depodaki Wordpress'e özgü ayarlar olarak aşağıdakilere sahibim .gitignore
:
# uploads are data, excluded from source tree
wp-content/uploads/
Gerisi dahil eklenti ve tema yapılandırması sürüm / yapılandırma kontrolü altında tutuyorum. Bu, canlı kullanmadan önce değişiklikleri kolayca izlememe ve kodu incelememe izin veriyor . Uzaktaki ağaçlara karşı kendi değişikliklerimle daha kolay birleşebilirim. Bu, özellikle Github'da bulunan Wordpress çekirdeğine karşı kullanışlıdır .
Bu benim Wordpress ihtiyaçlarımın çoğu için oldukça iyi çalışıyor. Çıplak repo, çelişen değişiklikleri zorlamanızı önler. Ayrıca, canlı siteyi güncellemeden önce ilk önce uzak bir kopya ile senkronize edilir. Bu, canlı siteyi güncellemek normalde oldukça hızlı olduğu anlamına gelir. Kancalar sayesinde, isterseniz Wordpress güncelleme kancalarını daha sonra çağırabilirsiniz.
Bunun Github kancalarıyla ne kadar geliştirilebileceğini denemediyseniz, ancak kodun Github yerine yerel sürüm kontrolü altında olduğundan normalde onlara ihtiyacım yok.
Böyle bir sistemi ilk kez kurmak için, uzaktaki ana makinenizdeki tüm araçları kullanıp kullanmadığınızı değerlendirmek için biraz zaman ayırmalısınız:
- SSH erişimi
- GYTE
- Dosyaları ve alt dizinleri içine koyabileceğiniz özel bir dizin (örneğin, çıplak git repo'nuz için)
İlk kez kurulum zamanı, iki saat dahil olmak üzere mümkün olmalıdır. tüm çevre ve ilk siz itin.
Ana makinenize bağlı olarak, .git
dizini web erişiminden de korumak isteyebilirsiniz . İşte .htaccess
Wordpress'in bir alt dizine yerleştirilmiş olmasına rağmen, çevrimiçi olarak yayınlanmayan repoda yer bırakan (kullanışlı) bazı örnek kod:
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]
Kısacası, genel dizinde olmayan her şey çevrimiçi değil. Genel dizinin içinde, örneğin .htaccess
o zaman ihtiyacınız olan orada wordpress kod temeli olabilir :
RewriteEngine On
# mask as 404 if directly accessed
RewriteCond %{ENV:REDIRECT_sitealias} !set
RewriteRule .* - [L,R=404]
Bu, halka doğrudan erişimi önler . .Htaccess -foo'nun bir bölümü burada ana hatlarıyla verilmiştir: .htaccess istekleri 403 yerine 404 döndürmelidir . Ortam değişkenleri için bunun ortamınızda çalışıp çalışmadığını test etmeniz gerekir. Ayrıca bunu sürüm kontrolü altına alıp almadığınıza karar vermeniz gerekir.
Barındırma üzerinde daha fazla denetime sahipseniz, burada daha fazla şey yapabilirsiniz (ve farklı / daha optimize edilmiş), yukarıdaki örnekler tipik paylaşılan barındırma ortamları için hedeflenmiştir (GIT’i sunar, bazı kullanıcılar kolayca kendi Peki, normalde barınağımcılardan böyle bir şey sağlamasını isterim çünkü onlara bunun için para ödediğim için özen göstermelerini tercih ederim.
Olumsuz tarafta, bunun diğer cevaplarda da belirtilen ortak sorunlardan bazıları var. Gurur duymadığım bir şey var, ancak işe yarar olan şey, geliştirme sunucusuna, veritabanı sunucusunun geliştirme kopyasını göstermesi için ana bilgisayar dosyasında bir değişiklik yapmasıdır. Böylece bir veritabanı yapılandırmasını koruyabilirsiniz. Gerçekten havalı değil esp. kimlik bilgileri nedeniyle.
Otomatik Yedeklemeler
Ancak normalde burada fazla umursamıyorum ama bunun yerine, art arda kendilerinin başka bir uzak konumda depolanan uzak sistemlerde günlük yedeklemeler çalışıyor. Bu kolay ve ucuzdur ve hem Wordpress kurulumunu hem de dosya yüklemelerini, veritabanını ve git deposunu geri yüklemenizi sağlar . Ayrıca yedekleme komutlarım için mükemmel olmayabilirim ama bunlar benim için işe yarıyor:
mysql: mysqldump --host=%s -u %s --password=%s %s| gzip > %s
git : git gc
git bundle
files: tar --force-local -czf %s %s
Burada önerdiğim şey, Wordpress kurulumunuzun etrafındaki işlemleri Wordpress'in dışında tutmanızdır. Onlar belirli bir sistem üzerinde çalıştırmak gerekir, bu nedenle normalde uygulama içinde bunları yok (inebilir örneğin uygulama ancak gerek bu çalışmaya devam için).
Takım Çalışması İçin Etkin
Bir başka güzel avantajı da sitenizin takım çalışması için zaten etkin olması. Ekstra çıplak repo sayesinde çok yanlış yapamazsınız ve hatta bir ana veya canlı şubeden uzaktaki şubeleri meslektaşlarınızla bile paylaşabilirsiniz.