Golang üretim uygulama yapılandırma web
O sizin için çalışan üretiminde desteklerinin edin:
Senin bir web uygulaması çalıştırmak için / yapılandırma yığını nedir?
İnsan standart kütüphane net/http paketi, bir sunucu çalışmasını sağlamak için kullanmanın yanı sıra bu konuda pek görmedim. Nginx bir server - nginx with go isteklerini iletmek için kullanarak okudum
Bu bana biraz kırılgan görünüyor. Örneğin, sunucu makine (ek yapılandırma komut olmadan) yeniden başlatıldığında otomatik olarak yeniden başlatın.
Daha katı bir üretim kurulum var mı?
Bir kenara benim niyet - ben dışarı planlama bir güç GERİSİ arka uç sunucu için benim bir sonraki proje ve istediğiniz emin olmak için Gitmek olacak uygun fırlatma projesini hayata yatırım çok fazla.
CEVAP
Git programları, bağlantı noktası 80 üzerinde dinleme ve HTTP istekleri doğrudan hizmet verebilir. Bunun yerine, bağlantı noktası 80 dinler ve Bağlantı programı birbirine bağlayan, Git programınızı önünde bir ters proxy kullanmak isteyebilirsiniz,, 4000 söylüyorlar. İkincisi yapmak için pek çok nedeni vardır: Go programı çalıştırmak için root olarak sahip, diğer web siteleri aynı host, SSL sonlandırma, Yük Dengeleme, giriş, açık/hizmetleri vb. hizmet değil
Ön HAProxy kullanıyorum. Herhangi bir ters proxy işe yarayabilir. Nginx de harika bir seçenek (daha fazla yapmanın HAProxy çok daha popüler ve yetenekli.
HAProxy çok kolay documentation (HTML version) okursanız yapılandırmak için. Git benim projelerinden biri için haproxy.cfg
benim bütün dosya bir başlangıç pont ihtiyaç halinde takip eder.
global
log 127.0.0.1 local0
maxconn 10000
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http
bind :80
acl is_stats hdr(host) -i hastats.myapp.com
use_backend stats if is_stats
default_backend myapp
capture request header Host len 20
capture request header Referer len 50
backend myapp
server main 127.0.0.1:4000
backend stats
mode http
stats enable
stats scope http
stats scope myapp
stats realm Haproxy\ Statistics
stats uri /
stats auth username:password
Nginx daha kolay.
Hizmet Denetim ile ilgili olarak, bir sistem hizmeti olarak ben yürütüyorum. Herkes bunu yapıyor sanırım. Sunucum Ubuntu çalışan, Sonradan görme kullanır. Sonradan görme /etc/init/myapp.conf
Bu programımı kontrol altına almak için var:
start on runlevel [2345]
stop on runlevel [!2345]
chdir /home/myapp/myapp
setgid myapp
setuid myapp
exec ./myapp start 1>>_logs/stdout.log 2>>_logs/stderr.log
Başka bir yönü dağıtım. Bir seçenek, programın sadece ikili dosya gönderme ve gerekli varlıklar tarafından dağıtmaktır. Bu çok büyük bir çözüm IMO. Diğer seçeneği kullanın: sunucu. üzerinde derleme (Sözde “Sürekli Entegrasyon/Dağıtım” sistemi.) hiç ikili dosyaları ile dağıtma geçiyorum
Ben küçük bir kabuk betiği sunucuya çeker kodu için benim projeden uzak Git deposu oluşturur, kopyalar ikili ve diğer varlıklar ~/myapp/
ve yeniden hizmeti.
Genel olarak, her şey başka bir server Kur çok farklı değil: bir yol var kodunuzu çalıştırın ve HTTP istekleri sunmak zorunda. Uygulamada, bu tür şeyler için çok kararlı olduğunu kanıtladı.
uygulama okuma.yapılandırma dosyası...
Golang uygulama otomatik sürüm oluştur...
Ne's "ortalama" saniyed...
Nasıl Grails uygulama için bir oturum ...
Basit bir yapılandırma Windows Formlar...