php, kullanıcı tarafından yüklenen dosyalar, sürüm kontrolü, ve web sitesi dağıtım

3 Cevap php

Ben düzenli kodunu güncellemek bir web sitesi var. Ben sürüm kontrolü tutmak. Ben sitenin yeni bir sürümünü dağıtmak istediğinizde, ben bir ihracat yapmak ve daha sonra dağıtım dizinine hizmet dizin adını sembolik bir link.

Orada kullanıcıların dosyaları yükleyebilirsiniz bir yerdir, ve ben yeni bir sürümünü dağıtmış sonra, kullanıcı dosyaları gitmişti, o zamanlar fark! Tabii ki, ben depo onları ekledi olmasaydı ve servis sitesi bir ihracat oldu beri, onlar zaten bir sürüm kontrollü dizine yükledi değildi.

PHP henüz svn işlevselliği entegre etmiş değildir, bu yüzden kullanıcı yüklenen dosyalar çok programlı yapamadık. Benim çözüm sunulan web sitesine paralel bir dizinde oturur ek bir web sitesi, files.website.com oluşturmak oldu, ve sürüm denetimi altında bir dizin üzerinden sunulur. Ben web sitesine bir yükseltme yaptığınızda bu şekilde onlar ortadan alamadım. Zaman zaman, ben elle, svn projeye yüklenen dosyaları eklemek kullanıcı silinmiş olanlar silinir ve yeni sürümü işlemek. Bunu yapmak için cron çalıştırmak için bir kabuk komut dosyası üzerinde çalışıyorum, ama bu benim işim değil, bu yüzden acil bir ihtiyaç değil gibi önemsiz üzerinde bulunuyor.

Bunu yapmak için daha iyi bir yolu var mı?

3 Cevap

Ben genellikle svn kullanıcı oluşturulan veri / dosya tutmak istemiyorum. sadece kod, db şema / test verileri. Ne ben genelde dağıtmak için yapılacak yükleme dir ve. Svn dirs dışlayan bir tarihe kadar çalışan kopyadan bir rsync olduğunu. IMO içeriği daha geleneksel dosya sistemi / db yedekleme mekanizmaları değil, sürüm kontrolü ile ele alınmalıdır.

EDIT:

Sadece temiz olması için sembolik bağlantılarını strateji iyi bir uygulama gibi görünüyor. sen onu düşünüyorum yedek parçası eksik jsut. Id muhtemelen yerine SVN ile etkileşim cron işi sadece tar | gzip yükledi şeyler. Ve o zaman muhtemelen mysqldump db dökümü ve gzip de bu kullanmak için ayrı bir tane var.

Ben yükseltmeleri gerektiği gibi siteyi ihracat uygulama ile devam etmek, ancak kullanıcı yüklenen içeriğe sahip sürüm kontrollü dizin dışında bir dizine bir sembolik bağlantı olurdu. Bir ihracat yaptığınızda bu şekilde sadece darmadağın alırsa sembolik bağ oluşturmanız gerekir. Gerektiğinde sonra tabii ki kullanıcı içeriğinin yedeklenmesi gerekir.

Aksine elle ihracat yapıyor ve sembolik yönetmek yerine, dağıtım dizin (bir üretim dalı) bir subversion çıkış yapabilir. Bu şekilde, dağıtma üretim dalı için güncellemeleri kontrol kadar basittir.

Bu sürece size yıkılma sunucu ve kurulum hosting yeterli kontrole sahip olarak çalışır ve yıkılma deposudur "çalıştırmak için hazır." Bu durumda, kullanıcı dizin yıkılma boş bir yer tutucu olabilir ve (svn update için her zamanki gibi iş) taahhüt çalışır güncelleme işleminin yalnız bırakılmış olacaktır. (@ Flash84x ve @ prodigitalson tarafından belirtildiği gibi) ben hala kullanıcı içeriği yedeklemek için ayrı bir süreç öneriyoruz.

Bir Ars Technica article Bu kurmak için nasıl bir açıklama ile var.

Update:. Bu yaklaşımı takip ederseniz, web sunucusu dağıtım çıkış içinde svn dosyalara erişime izin vermez emin olun.