2008-09-01 18 views
7

Capistrano'un farkındayım ama benim için biraz fazla ağır. Şahsen ben bir tane üretim sunucusunda diğeri de yerel dev makinemde olmak üzere iki adet Mercurial havuzu kurdum. Düzenli olarak, yeni bir özellik hazır olduğunda, yerel makinemdeki depodaki değişiklikleri sunucudaki depoya, ardından da sunucuda güncelleyin. Bu, dosyaları birkaç bilgisayarda senkronize etmek için oldukça basit ve hızlı bir yoldur, ancak veritabanını güncellemeye yardımcı olmaz.Web uygulamanızı sunucuda nasıl güncellersiniz?

Sorununuza çözümünüz nedir?

cevap

1

Web sunucuma yayımlamak için git tuşunu kullandım ama son zamanlarda rsync kullanıyorum. Sitemi olabildiğince koşarak (göreceli yolları kullanarak vb.) Tanımaya çalışıyorum ve şu ana kadar gayet iyi çalışıyor. Tek sorun veritabanlarını senkronize tutmaktır ve bunun için genellikle üretim veritabanını master olarak kullanıyorum ve düzenli olarak yedeklerim ve test veritabanına aktarıyorum.

+0

Aynı şeyi yapıyorum ama son zamanlarda bunun gerçekten atomik olmadığını düşünmemi sağladı. Sürekli kullanılan bir web sitesi için uygun değil (insanlar, henüz tüm dosyaların rsyn edilmemiş olduğu bir aşamada erişebilirler). – Gilles

+0

Bunu yapmanın daha optimal bir yolu, bir klasör A'ya bir klasöre rsync iken, B canlı web sitenizi içeriyor ve ardından mevcut canlı sürüme işaret eden bir sembolik linkin üzerine yazarak A'dan B'ye geçiş yap. Ve bir dahaki sefere, rsync 'ye B. – Gilles

0

@ Andrew

size itmek için .git/yapılandırma dosyasında uzak sunucuya ilk kurmak yapmanız gerekir sitenizi dağıtmak için git itmek kullanın. Daha sonra, yalnızca kopyaladığınız kodu çalışma dizinine kopyalamak için bir ayar sıfırlama işlemi gerçekleştirecek bir kanca yapılandırmanız gerekir.

Bunun biraz belirsiz olduğunu biliyorum, ancak rsync'e geçtiğimde sunucu tarafı .git klasörünü gerçekten sildim, böylece sihirbazlık yapmak için kullandığım tam komut dosyalarına sahip değilim. Bu tam bir soru için iyi bir aday olabilir, bu nedenle daha fazla yanıt alabilirsiniz.

düzenleme: Bunun bir süre oldu biliyorum ama sonuçta tekrar kullanarak ne buldum: Ben Ruby on konuşuyorsun sanıyorum

Deploy a project using Git push

1

Ya Fabric, Python tercih ederseniz.

+0

Kumaş hakkında daha fazla ayrıntı: http://stackoverflow.com/questions/1233655/what-is-the-simplest-way-to-ssh-using-python – hughdbrown

1

Capistrano hakkında ne ağırdır? dosyaları senkronize etmek istiyorsanız, o zaman rsync mükemmeldir. ama eğer db güncellemelerini yapmak zorunda kalırsanız belki de kapak çok da kötü değil mi?

İlgili konular