Capistrano ile dağıtım

2 Cevap php

Ben Capistrano ile PHP uygulaması dağıtım içine almaya çalışıyorum. Ben dağıtmak yere bağlı olarak "düzenlenmiş" olması gereken iki yapılandırma dosyaları var. Bu veritabanı adı ve kök url (Codeigniter) gibi temel şeyler var. Ben Capistrano düzenleme otomatik olarak belirtilen yapabilir miyim? Diyelim ki dosya / sistem / config / edit.php aşağıdaki düzenlemek istediğinizi varsayalım:

$test = '';
// edit to
$test = 'Hello World';

Thanks, Max

2 Cevap

Benim Unix bilgidir oldukça istediğinizi için mükemmel bir sözdizimi alınamıyor kadar olmasa da oldukça sıfırdan kurmak. Ancak, Capistrano doğrudan biçimlendirimleri içinde :run_method çağırarak Unix komut satırı kullanmanıza olanak sağlar.

Capistrano kodu aşağıdaki gibi görünebilir:

run "grep -R --files-with-matches '$test = "";' /system/config/ | xargs perl -pi~ -e 's/\$test = "";/$test = "Hello World";/'"

Bunu bulmak üzerinde kontrol ve olsa yaşamak uygulamadan önce beklendiği gibi çalışmıyor işlevini yerini alacak.

Eğer daha fazla yardıma ihtiyacınız olursa, ben Capistrano Handbook, bu sorulara cevap gerektiğini göz atmanızı tavsiye ederim.

Ne ben genelde durum bu tür yapmak (even though I don't use Capistrano) birkaç config dosyalarını kaynak denetimi için kararlı olmasıdır.

Örneğin:

  • config.php for development machines
    • Bu dosya her uygulama tarafından kullanılan biridir
  • config.testing.php
  • config.staging.php
  • config.production.php

Sunucuya uygulamayı dağıtırken, ben sadece mevcut ortama "config.php" karşılık dosyayı kopyalamak için var - bu, her zaman uygulama tarafından kullanılan biri olarak.

Ben, evet, inşa işlemi sırasında dosya kopyalama yapmak zorunda olduğu anlamına gelir, ama:

  • orada herhangi bir arama için herhangi bir ihtiyaç olduğunu ve yerini anlamı, kırabilir
  • o da her config dosyalarını SVN kararlıyız gelir (or whatever source control software you are using)


If your configuration files become too complex, and duplicate lots of stuff, you can think about having one "default" config file, that's always included, and sub-config files that only define what depends on the environment.

Ne o, ne ben daha önce söylediğim hala duruyor: sadece birbirlerinin başında "default" dosyası içerir.