2011-02-03 20 views
6

Bir django sitesi kurduktan ve dev sunucusu üzerinde çalıştıktan sonra, önerilen mod_wsgi/apache22'yi kullanarak bir üretim ortamında dağıtmayı öğrenmek için etrafta kazandım. Şu anda bir Windows XP makinesinde dağıtmak için sınırlıyım.Django + Apache + Windows WSGIDaemonProcess Alternatif

Sorunum, dosya sistemindeki programları çalıştırmak için python subprocess modülünü kullanmış olduğum birkaç django görünümüdür. subprocess.Popen'u çalıştırırken hata almaya devam ediyorum Bunu sormuş olan birkaç SO sorusu gördüm ve kabul edilen yanıt WSGIDaemonProcess'i kullanmak için kullanmaktır (apache kullanıcısının izinleri nedeniyle).

Buradaki tek sorun, WSGIDaemonProcess'in Windows'ta mod_wsgi için mevcut olmamasıdır. Mod_wsgi/apache/windows/subprocess'i birlikte kullanabileceğim bir yol var mı?

+0

http://stackoverflow.com/questions/3703794/django-app-stops-working-when-deployed-on-apache-subprocess-runs-but-fails hiçbir cevap ile aynı soru gibi görünüyor . – Randy

+3

"Hataları almaya devam ediyorum" Yardımımız için çok muğlak. Özellikle hangi hatalar? Lütfen kısa bir kod parçası ve asıl hata gönderin. –

+0

Çözüldü. WSGIDaemonProcess'in mevcut olduğu bir linux makinesi bulundu. – Randy

cevap

1

Her ne kadar mod_wsgi içinden alt süreçleri açmak iyi bir fikir değildir.

Bir alternatif (ve ortak olan), apache tarafında mod_proxy kullanmak ve apache'den Django çalıştıran bir WSGI sunucusuna yapılan istekleri iletmektir. Bu, python iplik (ler) ini apache'nin bellek alanı dışına taşıma avantajına sahiptir. wsgi servers için düzinelerce seçenek vardır; Kasırga ve topçu iki popüler seçenek, ve guncorncorn Django ile * bütünleştirir.

* entegre ederek sadece INSTALLED_APPS dosyasına eklerseniz bir manage.py komutu sağladığını gösteririm.

1

Bu yapılandırma altındaki alt işlemleri kullanmaya çalışan birkaç sorunla karşılaştım. Özellikle ne ile ilgili sorun yaşadığımı bilmediğimden, çözmem için kolay olmayan birkaç şeyi paylaşabilirim, ama geçmişte oldukça önemsiz görünüyor.

  1. Bir uygulamayı yürütmeye çalışırken izinlerle ilgili hatalar alıyordum. Biraz aradım ama Windows'a özel cevaplar bulmakta zorlanıyordum. Bu açıktı: Apache'nin daha yüksek izinlere sahip bir kullanıcıya geçtiği kullanıcıyı değiştirdim. (Not, bununla ilgili güvenlik sonuçları vardır, bu yüzden neye giriş yaptığınızı anladığınızdan emin olmak istersiniz).
  2. Django (yapılandırmanıza bağlı olarak) dizeleri Unicode olarak depolayabilir. Ben doğru argümanlar geçmesine rağmen çökmesini oldu benim görünümden bazı parametrelerle çalıştırmak için çalışıyordu bir komut satırı uygulaması vardı. Bir kaç saat hayal kırıklığı sonra ben beklenen dize yerine <type 'unicode'> döndü bir tür (args) yaptım. Hızlı bir dönüşüm bu sorunu çözdü.
İlgili konular