Tek bir ortak Python web çerçevesinden (örn: Pylons, TurboGears, vb.) Birden çok siteyi çalıştırma yolları iyi (veya en az zeki) nelerdir? URI'yi siteye özgü bir yere işaret edecek şekilde yeniden yazma yolunu veya yolunu temel alan yönlendirme yapabileceğinizi biliyorum ve ayrıca kaçınmak istediğim "if site == 'site1'/elseif/elseif/etc
" adlı bir "brütish" gördüm.Tek bir Python web çerçevesinden birden çok siteyi çalıştırma
cevap
Django yerleşiktir. Bkz. the sites framework.
Genel bir teknik olarak, veri tabanına özgü olmasını istediğiniz verilere eklenmiş veritabanı şemanınızda bir 'ana makine' sütunu ekleyin, ardından veri aldığınızda sorguya Host
HTTP üstbilgisini ekleyin.
CherryPy'yi web sunucum olarak kullanıyorum (Turbogears ile birlikte gelir) ve ben de localhost'a bağlı farklı portlarda CherryPy web sunucusunun birden çok örneğini çalıştırıyorum. Ardından, HTTP isteğine bağlı olarak istekleri doğru bağlantı noktasına iletmek için mod_proxy ve mod_rewrite ile Apache'yi yapıyorum.
Yerel bağlantı noktalarında birden çok sunucu örneği kullanmak iyi bir fikirdir, ancak HTTP isteklerini yeniden yönlendirmek için tam özellikli bir web sunucusuna ihtiyacınız yoktur.
İşi yapmak için pound'u ters bir proxy olarak kullanırdım. Küçük, hızlı, basit ve tam olarak burada ihtiyacımız olan şeyi yapıyor.
NEDİR POUND:
- Bir ters proxy: bir veya daha fazla arka uç sunuculara istemci tarayıcılarından isteklerini geçer.
- yük dengeleyici: oturum bilgilerini saklarken istekleri birkaç arka uç sunucu arasında istemci tarayıcılardan dağıtacaktır.
- Bir SSL sarıcısı: Pound, istemci tarayıcılardan HTTPS isteklerinin şifresini çözecek ve bunları arka uç sunuculara düz HTTP olarak iletecektir.
- HTTP/HTTPS dezenfektanı: Pound, doğruluk isteklerini doğrulayacak ve yalnızca iyi oluşturulmuş olanları kabul edecektir.
- başarısız bir sunucu üzerinden: bir arka uç sunucusu başarısız olursa, Pound gerçeği dikkate alır ve kurtarılana kadar istekleri iletmeyi durdurur.
- istek yeniden yönlendirici: istekleri, istenen URL'ye göre sunucular arasında dağıtılabilir. mod_python ile apache üzerinde Django kullanarak
, ben sadece şu apache yapılandırma ile çoklu (ilgisiz) django sitelerini barındırmak: Birden apache örnekleri veya proxy sunucular için
<VirtualHost 1.2.3.4>
DocumentRoot /www/site1
ServerName site1.com
<Location />
SetHandler python-program
SetEnv DJANGO_SETTINGS_MODULE site1.settings
PythonPath "['/www'] + sys.path"
PythonDebug On
PythonInterpreter site1
</Location>
</VirtualHost>
<VirtualHost 1.2.3.4>
DocumentRoot /www/site2
ServerName site2.com
<Location />
SetHandler python-program
SetEnv DJANGO_SETTINGS_MODULE site2.settings
PythonPath "['/www'] + sys.path"
PythonDebug On
PythonInterpreter site2
</Location>
</VirtualHost>
gerek yok. Her site için farklı bir PythonInterpreter yönergesi kullanmak (girdiğiniz ad isteğe bağlıdır) ad alanlarını ayrı tutar.
- 1. Birden çok python sürümü çalıştırma
- 2. Tek bir tıklama ile birden çok T4 Şablonu Çalıştırma
- 3. Aynı Asynctask'ı sırayla birden çok kez çalıştırma
- 4. Docker çalıştırma komutunda birden çok env dosyasını çalıştırma
- 5. Birden çok uygulamayı sbt ile çalıştırma
- 6. Birden çok kabuk komutunu joker karakterlerle çalıştırma
- 7. Tek bakışta birden çok yineleme -
- 8. Birden çok dizinli veri çerçevesinden tamamlanmamış mevsimleri kaldırma (pandalar)
- 9. Tek bir sayfada birden çok Dropzone
- 10. Birden çok satırdan tek bir satır oluşturma
- 11. Tek bir yöntemde birden çok yönü
- 12. Tek satırlık Python içe aktarmada birden çok takma ad alanı
- 13. Bir PHPUnit test çantasını birden çok kez çalıştırma
- 14. Birden çok yay önyükleme microservices'ı Gradle ile Çalıştırma
- 15. NodeJS birden çok web sitesi
- 16. Birden çok yaylı ağ projesini tek bir dağıtılabilir savaşa katın.
- 17. Web SQL'de birden çok ifadeyi nasıl yürütürüm?
- 18. Tek bir şekilde birden çok görüntü nasıl gösterilir?
- 19. Tek bir adımda birden çok varolan klasörü ve birden çok varolan dosyayı Visual Studio projesine ekleme
- 20. Tek bir makinede birden çok Perl yüklemesi nasıl çalıştırılır?
- 21. Python Web Scraping: Ajax Sitesinde tek tek tıklatıldığında Linkler
- 22. Birden Çok DB'ye Karşı Birden Çok Bileşen
- 23. Birden çok/tek Linq için SQL DataContext
- 24. Tek bölmede birden çok denetim nasıl yerleştirilir?
- 25. Tek arabirim ile birden çok uygulama kaydetme
- 26. Birden çok görüntülü tek xib tekil
- 27. Birden çok çekirdek veya Tek çekirdek yazma
- 28. Tek örnekli birden çok Neo4j veritabanı
- 29. Birden çok sunucuda tek iş yürütme
- 30. Tek .msi paketinde birden çok .exe paketleme