Da die Go-Sprache in der Webentwicklung immer beliebter wird, denken immer mehr Entwickler darüber nach, sie auf den Tomcat-Anwendungsserver anzuwenden. Da Tomcat selbst jedoch ein Java-Anwendungsserver ist und die Bereitstellung und den Betrieb der Go-Sprache nicht direkt unterstützen kann, müssen wir einige spezielle Methoden finden, um dieses Ziel zu erreichen.
In diesem Artikel werden einige Methoden zur Bereitstellung von Go-Sprachanwendungen in Tomcat vorgestellt und sollen Entwicklern, die nach solchen Lösungen suchen, Referenz und Anleitung bieten.
Caddy Server ist ein Open-Source-Webserver, der mehrere Sprachen und Programmiersprachen unterstützt. Im Gegensatz zu anderen Webservern besteht eines der Designziele von Caddy Server darin, die Go-Sprache zu unterstützen, sodass er problemlos mit Caddy Server in Tomcat bereitgestellt werden kann.
Zuerst müssen wir Caddy Server herunterladen und installieren. Benennen Sie die Datei nach Abschluss der Installation in app.jar um und legen Sie sie im Webapps-Verzeichnis von Tomcat ab.
Als nächstes müssen wir eine Caddyfile schreiben, um unsere Anwendung zu definieren. Wenn unsere Anwendung beispielsweise Port 80 abhört und Anfragen über FastCGI an eine Go-Sprachanwendung namens myapp weiterleitet, können wir Folgendes in die Caddy-Datei schreiben:
myapp { proxy / http://localhost:9000 { transparent } }
Abschließend müssen wir Tomcat starten, damit es die Caddy-Serveranwendung lädt . Dies kann mit dem folgenden Befehl erfolgen:
$ catalina.sh run
Jetzt können wir auf Port 80 auf die myapp-Anwendung zugreifen und die Anfrage über FastCGI an die Go-Sprachanwendung weiterleiten.
package main import ( "fmt" "net" "net/http" "net/http/fcgi" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") } func main() { listener, err := net.Listen("tcp", "localhost:9000") if err != nil { panic(err) } err = fcgi.Serve(listener, http.HandlerFunc(handler)) if err != nil { panic(err) } }
$ sudo apt-get install libapache2-mod-fastcgi
<IfModule mod_fastcgi.c> <Directory /var/www/html/goapp/> Options +ExecCGI SetHandler fastcgi-script </Directory> FastCGIExternalServer /var/www/html/goapp/goapp.fcgi -host 127.0.0.1:9000 <FilesMatch .php$> SetHandler application/x-httpd-fastphp </FilesMatch> </IfModule>
Verwenden Sie die offiziell von Go bereitgestellte Net/http-Bibliothek
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World!") }) http.ListenAndServe(":9000", nil) }
$ sudo apt-get install libapache2-mod-proxy-html
<VirtualHost *:*> ProxyPreserveHost On ProxyPass /goapp http://localhost:9000 ProxyPassReverse /goapp http://localhost:9000 </VirtualHost>
Das obige ist der detaillierte Inhalt vonTomcat-Bereitstellung Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!