Barındırma paylaşılan (php / msql) dağıtım için en iyi yöntemler?

3 Cevap php

Ben bizim yerel makineleri, üretim sunucularının bir sahneleme sunucu ve aa dizi vardı bir web geliştirme şirketi içinde çalıştım. Biz üretim sunucularına yüklemek için sahneye işlemek için Perl ve kullanılan svn Mac'ler üzerinde çalıştı, ve perl komut. Şimdi benim kendi proje üzerinde çalışıyorum ve barındırma ve (I etc perl / bash scripting / cron işleri ile yapabileceği tüm büyü ile) bir Unix tabanlı bir ortamda çalışan değil paylaşılan web kullanırken web geliştirme için iyi uygulamaları bulmak istiyorum

Yani benim soru vardır Benim koşulları, verilir:

  • Ben (ssh erişimi olan) harici bir sağlayıcıdan barındıran tek bir standart paylaşılan web kullanıyorum
  • Ben en azından bir başka kişi ile çalışma ve kaynak denetimi için SVN kullanmak için tasarlanmıştır am
  • Windows altında php / mysql geliştirme (ama linux kullanan bir olasılık) am

Eğer test, dağıtım, kod / veri göç için ne kurulum önerirsiniz? Ben benim yerel makinede yüklü bir xampp serer var, ama yöntemleri windows altında vb verilerini geçirmek için hangi emin oldu.

3 Cevap

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 ^ ^)


Hope this helps a bit...

SVN ile ilgili olarak, ben bunu hem geliştiriciler onu çalışabilirsiniz Beanstalk gibi özel bir SVN ev sahibi ile gitmek veya bir SVN sunucusu çalıştırmak için aynı sunucu makineyi kullanmak öneririz.

İkinci durumda, dağıtım komut basitçe (beta.mysite.com üzerinden erişilebilir) bir hazırlama web klasöre bit hareket edeceğini ve daha sonra başka bir dağıtım komut canlı web dizininde bu hareket olabilir. Canlı siteye doğrudan Dağıtma tabii ki iyi bir fikir değildir.

Eğer özel bir ev sahibi ile gitmek veya sunucusuna makineden dağıtmak istiyorsanız, rsync kullanmaya karar verirseniz. Bu da benim şimdiki kurulum. RSync (SSH üzerinden) diferansiyel senkronizasyonları yapar o kadar hızlı ve o şeyler sadece bu tür için inşa edilmiştir.

Eğer büyüdükçe ünite testleri ve etajer ile araçları oluşturmak kullanmaya başlayabilirsiniz. Bu yalnızca veri senkronizasyon sorunu bırakır.

Ben sadece uzaktan veri senkronizasyonu - Yerel> ve mysqldump kullanarak SSH üzerinde bunu yapan bir DOS toplu iş dosyası kullanın. Cygwin Windows makineler için yararlıdır ancak bunu atlayabilirsiniz. SQL ithalat komut aynı zamanda yerel dağıtım için hostname ve web root olarak bazı hücreler güncellemek için bir tek satır sorgu çalıştırır.

Eğer bu kurulum var sonra, sadece kod ve uzak dağıtım veya yerel senkronizasyonu yazma ve deployement bir tık süreç olur odaklanabilirsiniz.

Bir seçenek görev için özel bir çerçeve kullanmaktır. Capistrano, PHP gibi betik dilleri ile çok iyi uyuyor. Ruby dayalı, ama bir arama yaparsanız, php uygulamaları dağıtmak için nasıl kullanılacağı hakkında talimatlar bulmak gerekir.