Ben paylaşılan barındırma bazı PHP personnal-projeleri var; burada ben onlardan biri ne yapıyorum gelen düşünceler bir çift vardır (the one that is the most active, and needs some at least semi-automated synchronization way):
Benim kurulum hakkında birkaç kelime:
- Bir süre önce, ben SVN üzerinde her şey vardı; Şimdi, ben kullanıyorum bazaar ediyorum; ama fikir aynıdır (except, with bazaar, I have local history and all that)
- Ben senin gibi, üretim sunucusuna ssh erişimine sahip
- Linux üzerinde çalışmak exclusivly (so, what I do might not be as easy with windows)
Şimdi, nasıl çalışır:
- Te üretim sunucusunda olabilir gelmiştir Herşey (source-code, images, ...) SVN / bazarr / ne olursa olsun taahhüt eder
- Apache / PHP / MySQL ile (I use a dump of the production DB that I import locally once in a while), yerel iş
- Ben bu proje üzerinde çalışan tek kişi benim; muhtemelen 2/3 Developpers küçük bir takım için iyi olacak, ama daha olmaz.
Ne yaptım önce:
- I had some PHP script that checked the SVN server for modification between "last revision pushed to production" and HEAD
- Ben Perl betiği gibi şu anda ^ ^ usng olan bu ev yapımı PHP komut dosyası görünüyor tahmin ediyorum
- Bu komut üretime upload dizinleri / dosyaların bir listesini inşa
- Ve FTP erişimi üzerinden bu tarih
- Bu çok tatmin edici (there were bugs in my script, I suppose ; I never took time to correct those) değildi; ve ben geçen üretime itti zaman revizyon numarasını hatırlamak için beni zorladı (well, it was automatically stored in a file by the script, so not that hard ^^ )
Ben şimdi ne:
- Çarşı geçiş yaparken, ben zaten çok iyi işe yaramadı, o senaryoyu yeniden yazmak istemedim
- Ben tamamen senaryoyu düştü
- Ben üretim sunucusuna ssh erişimi gibi, ben rsync, üretim sunucusuna benim geliştirme makineden senkronize zaman ne yerel olarak kararlı / üretim-hazır olarak kabul edilir var. Kullanın
Şeyler yapmanın bu şekilde yaklaşık birkaç not:
- Ben bir evreleme sunucu yok: benim yerel kurulum yapımın birine yeterince yakın
- Bir basamak sunucusuna sahip değil bir veya iki Developpers ile basit bir proje için OK
- If I had a staging server, I'd probably go with :
- Eğer sahneye istediğiniz zaman üzerinde bir "svn update" do
- Tamam olduğunda, hazırlama sunucusundan rsync komutunu başlatacak (ki olacak en son "kararlı" revizyon de ba, üretime itti yani Tamam)
- Daha Developpers ile daha büyük bir proje ile, muhtemelen kurulum bu tür gitmek değildir; ama (çok büyük değil) personnal proje için oldukça Tamam bulabilirsiniz.
The only thing "special" here, which might be "linux-oriented" is using rsync ; a quick search seems to indicate there is a rsync executable that can be installed on windows : http://www.itefix.no/i2/node/10650
Ama, hiç denemedim.
As a sidenote, here's what my rsync command looks like :
rsync --checksum \
--ignore-times \
--human-readable \
--progress \
--itemize-changes \
--archive \
--recursive \
--update \
--verbose \
--executability \
--delay-updates \
--compress --skip-compress=gz/zip/z/rpm/deb/iso/bz2/t[gb]z/7z/mp[34]/mov/avi/ogg/jpg/jpeg/png/gif \
--exclude-from=/SOME_LOCAL_PATH/ignore-rsync.txt \
/LOCAL_PATH/ \
USER@HOST:/REMOTE_PATH/
Ben özel / kamu anahtarları mecanism kullanıyorum, yani rsync btw, şifre sormuyor.
Ve, tabii ki, ben genellikle "--dry-run
" seçeneği ile, synchorised olacak görmek için, ilk "kuru-run" modunda aynı komutu kullanın
Ve ignore-rsync.txt
Ben üretime itti olmak istemediğiniz dosyaların bir listesini içerir:
.svn
cache/cbfeed/*
cache/cbtpl/*
cache/dcstaticcache/*
cache/delicious.cache.html
cache/versions/*
Burada, sadece üretime itti cache dizinleri önlemek - bu göndermek değil mantıklı görünüyor, üretim veri geliştirme veri olarak aynı değil gibi.
Ben bu proje için artık SVN kullanarak yok gibi (I'm just noticing there's still the ".svn
"bu dosyada ... Ben, onu kaldırmak olabilir ^ ^) em>
Hope this helps a bit...