Kodun geri kalanından 1) Ayrı yapılandırma. Kodun geri kalanı daha sonra bir değişiklik olmadan, tüm 3 yerle ilgili çalıştırmak mümkün olmalıdır. Tipik bir yapılandırma dosyası olabilir:
<?
$db = "main_db"; $db_user="web1"; $db_pass = "xyz123";
$site ="example.com";
$htroot = "/var/www/prod/htdocs"
?>
Ve test ortamı için:
<?
$db = "test_db"; $db_user="web1"; $db_pass = "xyz123";
$site ="test.example.com";
$htroot = "/var/www/test/htdocs"
?>
Kod tabanı şifreleri ile yapılandırma dosyaları dahil etmeyin. Kod tabanı güvensiz bağlantıları aracılığıyla kopyalanmış olabilir veya (aşağıya bakınız) barındıran sunucuları, daha sonra üçüncü taraf kod saklanabilir. Ve belki kod tüm yedek diskler üzerinde şifreleri istemiyorum.
Ayrıca, tek bir yapılandırma dosyası oluşturmak ve çevre üzerindeki kod çalışır bağlı bir anahtar kullanabilirsiniz:
<?
$site = $_SERVER["HTTP_HOST"];
if ($site == "example.com"; ) {
$db = "main_db"; $db_user="web1"; $db_pass = "xyz123";
$htroot = "/var/www/prod/htdocs";
}
if ($site == "test.example.com") {
$db = "test_db"; $db_user="web1"; $db_pass = "xyz123";
$htroot = "/var/www/test/htdocs";
}
?>
Ama şimdi yukarıda açıklandığı gibi daha az güvenli kod tabanı, içine geri koymak için cazip olabilir. Eğer 3 dosyalarını güncellemek zorunda, ya da sunucu başına sabit bir konumu kullanmak ve emin olmak için oraya koydum yoksa ve kod her sunucuda dosyayı bulur. Ben şahsen yukarıdan bir dosya site başına çözümü tercih ederim.
2) Zaten "versiyonları" var. Eşya üzerinde çalışan bir sürümü şimdi var. Tekrar asla değişmeyecek olan, benzersiz bir isim ve numara verin. Bunu sürüm adını yedekleme kodunu kullanabilirsiniz ve sürümüne bakın veya ne zaman bir yere taşıdığınızda sürümünden sonra onu contian olacak subdiectory isim.
Eğer yakın gelecekte eşya koyacağız sürümü farklı bir versiyonu, ve tekrar değişiklik yaparsanız, bu da farklı bir versiyonu.
Pratik bir kural olarak: taşıdığınızda sürüm sayısını artırmak veya takas zaman, kod ihracat veya döviz veya bir demo yaparken yerle arasında yükseltmek ve her özellik ya da dönüm noktası ve her bir süre sonra tam bir yedekleme yapmak zaman.
Config dosyalarını (3, eşya için bir test ve dev) sürümlerinin parçası DEĞİLDİR unutmayın. Yani yapılandırma dosyaları "etrafında sürümleri hareket" ama olamaz. Eğer yapabilirsen, kodun geri kalanı ile ağacın DIŞ yapılandırma dosyaları koymak, böylece daha sonra sürümlerinde gezinirken bunları ayırmak ve özen gerekmez. "Yukarı" Yapılandırma bir dizin taşımak ve bu gibi dosyaları onları erişebilir:
"Include .. / config.php";
Eğer sürüm kontrol sistemleri kullanmak istiyorsanız 3), büyük bir iş yapmak ama buna alışmak için biraz zaman gerekiyor ve size güncelleme ile bir aceleniz varsa o probaby şimdi canlı başlamak için doğru zaman değil. Ama gelecek için bir son nesil dağıtılmış sürüm kontrol sistemi kullanmanızı tavsiye ederim. Dağıtılmış kurulum, sunucu ve daha birçok avantajları gerek duymazsınız. Bunu yapabilirim ftp üzerinden güncellemek için gerekli ise ben, bazaar isim olacak. Yalnızca sürümler arasındaki farkları yazılır, çünkü bir sürüm kontrol sistemi çok hızlı bir sürümünü alışverişi yapar unutmayın. Bazaar başlatmak için kolay kılan bir topluluk ve dokümantasyon vardır. Orada tarih ticari hosting sitesine kadar en çok sahip olan, Git de: http://github.com. Çevrimiçi kodunu görüntülemek ve sürümleri arasında karşılaştırma ve orada çok daha yararlı özellikler sadece kodlayıcı bile vardır, ancak bir grup içinde daha da iyi olabilir. Sistemler arasında seçim kolay değildir. Ben eski olan CVS tavsiye edemez. Ayrıca SVN dağıtılmış sürüm kontrol sistemi son nesil değil, ben belirli bir sebebi yoksa bunu kullanmak için tavsiye etmem, ve can sıkıcı olabilir, özel subdirs ile tüm subdirs kirletir. Bunun için kullanılan ve ince olduğu içinde zaten kodu var, ama bir başlangıç için ben söyleyebilirim edilir peolple yok.
Mercurial ve Darcs dağıtılan ve açık kaynak sürüm kontrol sistemleri arasında da vardır. Mercurial da işbirliği ve çevrimiçi kod görünümünde (http://bitbucket.org) için büyük bir ticari site var.
4) Sürece nasıl sembolik kullanımı hakkında bir versiyon kontrol sistemi, kullanımı yok gibi?
Bir yerde / sunucu src / sürümlerinde bir dizin var ve orada, kendi alt dizininde her biri adlandırılmış sürümlerini koyabilirsiniz. (Var olan bir sürüm değişmiş olmayacak, çünkü bunu değiştirmek eğer yeni bir sürüm olur) sadece sürümleri katacak
Sen src/versions/v001 / src/versions/v002 / src/versions/v003 olabilir / veya ne olursa adlandırma şeması kullanabilirsiniz.
Şimdi burada hile geliyor: / var / www / eşya / htdocs src/versions/v001 bir sembolik olduğunu /
Eğer V002 yükselttiğinizde sadece aşağıdakileri yapın:
- kapatma apache
- Eski symlink / var / www / eşya / htdocs kaldırın (bu noktada apache webroota gitti!)
- Yeni symlink / var / www / eşya / htdocs src/versions/v002 bir bağlantı olmak oluşturmak
- apache başlangıç
Ayrıca parametreleri ile bu için bir senaryo yazmak ve bu gibi çağırabilirsiniz:
upgrade-web prod 002
Bu boşluk daha kısa hale getirir.
Bazen yeni sürümü üretim hataları olduğunu öğrenmek zaman, bir "son çare" yapmak zorunda ve geri gitmek zorunda. (Eğer, eski dizinleri çıkarmayın sadece apache durdurmak, sembolik bağ silmek ve eski konumuna yeniden oluşturmak, çünkü bu durumda src/versions/v001 olarak), bu kolay olurdu
Test ve dev aynı sunucuda Ve eğer, siz de elbette aynı dizin sembolik bir link, böylece bir hareket veya kopya için herhangi bir olmazdı.
Eğer sembolik olmadan manuel olarak yaparsanız 5), neden kopya yerine hareket etmiyor?
(Dosyaları aynı sunucu üzerinde henüz zaman, yere yakın bunları kopyalamak ve daha sonra göç ile başlar, bu nedenle böyle bir ling süre için sunucuyu durdurmak zorunda değilsiniz olabilir)
Projenin kök düzeyinde çeşitli dizinler varsa bunları teker teker hareket olabilir. Yapılandırma dosyaları HAREKET DEĞİL emin olun. Ya da onları bakc getirmek için bazı strateji bulmak. İş Akışı olacaktır:
- Apache durdurmak
- Yapılandırma dosyası dışında kök düzeyinde tüm mevcut eşya dizinleri ve dosyaları uzaklaşmaya (ler)
- Yapılandırma dosyası dışında kök düzeyine tüm yeni eşya dizinleri ve dosyaları taşımak (ler)
- Apache başlatın
6) mükemmel bir dosya ve dizin düzeni ve kusursuz iş akışı bulmaya çalışın. Bu belki biraz zaman ve bazı düşünce alır, ama o öder. Eğer iyi çözümü bulana kadar bir parça kağıt bunu. Bu kodunuzu refactor ve sunucu yapılandırma dosyaları değiştirmek zorunda, ancak yönetim ve yükseltmeleri yaptığınızda gelecek için hayat daha kolay olduğu anlamına gelebilir. Benim deneyim: Bu adımda bu kadar uzun beklemek yok. Sizin düzeni kolay ve güvenli yükseltme nmake shoudl. Yükseltme somehting olağanüstü değil, rutin ve güvenli ve yapılacak basit olmalıdır.
Eğer sunucu ve iş istasyonu ortamları (sunucu işletim sistemi sanırım linux, ancak barındırılan veya bir kök sunucu, ftp acces var mı ya da (SSH kabuk olan) erişim veya SFTP? Geliştirmek musun isim 7) ise , bir windows makine, ya da bir mac?) sonra insanlar kopyalama ve taşıma yapmak için araçlarını adlandırabilirsiniz. Ayrıca ilginç: testi ve dev sunucu değilse, nasıl bağlanır, aynı makine mi, yoksa değil mi? Eğer değilse, bir 3-yollu transferi (sunucuya o zaman yerel iş istasyonunda kopyalayın ve) yapacak.
8) dosya izinlerini düşünün. Eğer dosya taşımak veya kopyalamak, belki dosya izinlerini değiştirmek ve uygulama bazıları bağlıdır eğer belki chang kontrol etmek ve bir yol olmalıdır. Örnek: Bazı uygulamaların yüklenen dosyaları veya oturum dosyaları veya şablon önbelleğini koymak dizinleri yazılabilir gerekir. Diğer uygulamalar güvenlik için bazı dosyalar yazılabilir olması için izin vermez.