Son birkaç aydır hortuma bir web hizmeti gelişmekte olan ters nginx ile üretimde bir kasırga web hizmeti kurma. py, 8001 numaralı bağlantı noktasını dinleyen tornado uygulama işleyicidir. Daha sonra web hizmetinden http://localhost:8001
kullanarak istekte bulunarım. Şimdi test ortamımı, üretimi yansıtması gereken bir evreleme ortamına dağıtıyorum. Tornadoyu üretimde nasıl çalıştırırım? Sanırım uygulama için bir çeşit daemon oluşturmam gerekiyor ama nereden başlayacağımı bilmiyorum!kullandığım hizmeti çalıştırmak için benim test ortamında, vekil
cevap
Kullanabileceğiniz birkaç araç vardır.
Öncelikle Supervisord
Supervisord bir "süreç kontrol sistemi", kendi süreçlerini yapılandırmak ve onlara daha kolay yönetmek yapmak, başarısız olurlarsa onları yeniden edeceğiz, Danışman onları yönetmesine izin ve arka planda çalışmasını sağlamak olduğunu İşte
o yapılandırmayla, örnek bir gözetmen yapılandırma dosyası[program:myprogram]
process_name=MYPROGRAM%(process_num)s
directory=/var/www/apps/myapp
command=/var/www/apps/myapp/virtualenv/bin/python index.py --PORT=%(process_num)s
startsecs=2
user=youruser
stdout_logfile=/var/log/myapp/out-%(process_num)s.log
stderr_logfile=/var/log/myapp/err-%(process_num)s.log
numprocs=4
numprocs_start=14000
var, Danışman (portlar 14001-14004 üzerinde index.py 4 (numprocs
) örneklerini başlayacak). Her işlemin farklı bir bağlantı noktasında başlaması için --PORT=%(process_num)s
'u geçeriz. Ortamınıza/ekipmanınıza uygun olarak numprocs
ve numprocs_start
'u değiştirmelisiniz. Genellikle 2xCPU çekirdek işlemlerini çalıştırırız (bu nedenle dört çekirdekli işlemci 8 işlemden oluşur), ancak süreçlerinizin ne yaptığına ve kodunuzda ne kadar engelleme yapıldığına bağlı olarak farklılık gösterebilir.
Sonraki, nginx yapılandırma uygulamanıza ve işleyişini bağımlı modifiye edilmelidir O sitenize
upstream myappbackend {
server 127.0.0.1:14001 max_fails=3 fail_timeout=1s;
server 127.0.0.1:14002 max_fails=3 fail_timeout=1s;
server 127.0.0.1:14003 max_fails=3 fail_timeout=1s;
server 127.0.0.1:14004 max_fails=3 fail_timeout=1s;
}
server {
listen 4.5.6.7:80;
server_name example.com;
access_log /var/log/nginx/myapp.log main;
location/{
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_pass http://myappbackend/;
}
}
istekleri iletmek için yapılandırmak, bu çok az yapılandırma ve neredeyse kesinlikle üzerinde genişleyen gerek ama Başlamak için yeterli olmalıdır
- 1. kullandığım
- 2. Test ortamında mocha testlerini gerçekleştirin mi?
- 3. Açısal test hizmeti
- 4. ServerManager yapıcı, test ortamında çöküyor
- 5. vekil
- 6. Invisible olayı, test ortamında bir davetiye oluşturmuyor
- 7. Raylar: Geliştirme ortamında Cron İşlerinin Test Edilmesi
- 8. Raylar ActiveRecord serialize yöntemi test ortamında çalışmaz
- 9. kullandığım NoSuchMethodError android.widget.RelativeLayout.setBackground
- 10. Test adımı için tox çalıştırmak için setup.py nasıl yapılandırılır?
- 11. NSURLConnection için bir vekil kullanma
- 12. JAVA: vekil
- 13. kullanarak vekil
- 14. BitmapImage kullandığım kilit dosyasını
- 15. nasıl test ve üretim ortamı için dizin oluşturmak mongoid Nasıl Test ve üretim ortamında
- 16. , vekil sorunu
- 17. Maven'de bir JUnit4 Test Suite'i çalıştırmak için maven-failsafe-plugin
- 18. Bir C++ programını çalıştırmak ve test etmek için python kullanma
- 19. Raf env hash Rails test ortamında neden boş?
- 20. Atom, Python3 komut dosyalarını çalıştırmak için nasıl yapılandırılır? Benim terminalde
- 21. Raylar geliştirme ortamında hata sayfalarını nasıl test edebilirim?
- 22. Besteci - sadece dev ortamında
- 23. Grails hizmeti Spock kullanarak nasıl test edilir?
- 24. Docker ortamında alt etki alanlarını ayarlama
- 25. C# TcpClient.Connect vekil
- 26. bir kullandığım sqlalchemy bildirime tabanından
- 27. PubNub için Android Hizmeti
- 28. yay güvenlik java yapılandırma: Kullandığım
- 29. algıla vekil - JavaFX - webview
- 30. v8 vekil ReferenceError
URL'ye erişildiğinde hangi işlemin kullanıldığını işleyen nginx veya süpervisord mu? Veya bunu yönetmek için daha fazla yazılıma ihtiyacım var. –
ve neden 14000'de işlem başlattığınızı açıklayabilir misiniz? –
nginx isteği arka uçlardan birine geçirir. Danışman sadece süreç yönetimini (canlı/ölü/yeniden başlatma) dikkate alır. Bağlantı noktası için, bağlantı noktalarından birini dinleyen başka bir uygulama ile çakışmıyorsa, istediğiniz herhangi bir şeyi seçebilirsiniz. –