How to deploy Golang program to the server
Environment
Development Environment: mac
Production environment: CentOS 6.8 under virtualbox (virtual machine)
virtualbox
Server environment
Local development mac environment go env parameter
Process
go’s code
package main import ( "fmt" "log" "net/http" ) func sayHello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w,"您看到我了") } func main() { http.HandleFunc("/",sayHello) log.Println("启动了") err := http.ListenAndServe(":9000",nil) if err != nil{ log.Fatal("List 9000") } }
That’s all, I won’t go into details about the meaning of the code.
The code has been written, and now it needs to be compiled. Since it is compiled from a mac environment to run under Linux, everything involves cross-platform compilation.
Compile code command
env GOOS=linux GOARCH=386 go build main.go
PS: 386 here is a big pit, here is the platform to run this packaged program. If it is Linux, you need to use uname -a to check the Linux system environment you are running. Common environments generally include amd64, i386, etc.
OK, after compilation is completed, a main executable file will be generated without a suffix. At this time, you only need to upload this file to your virtual machine and run it directly.
Run directly
If the effect shown above appears after running, it means it is running. At this time, if you open your browser and access your server’s IP: 9000, you will see the content as shown below
Browser Picture
That’s right It’s so simple. Today is my first deployment, and I’m quite surprised. It doesn’t require any language environment. For example, java programs need to install java on the server, and php needs to install Apache, PHP and other running environments. Go does not need any, only one A linux system is fine, just throw it in.
The following is the pitfall I encountered at that time
1. Cannot execute binary file appears
cannot execute binary file
The reason for this is that your compilation running environment is wrong, that is, the 386 above needs to be replaced with the environment of the server you are running. You can use uname -a Check.
2. It runs, but cannot be accessed
This problem is usually caused by your server's firewall or network problem.
You can simply and rudely turn off the server's firewall service iptables stop, and then see if you can access it. In a real production environment, it is not recommended to turn off the firewall.
If you deploy real online operations, you will definitely need some security, process guarding, etc. This article is just an introduction to deployment and will not discuss it.
For more go language knowledge, please pay attention to the go language tutorial column on the PHP Chinese website.
The above is the detailed content of How to deploy golang to the server?. For more information, please follow other related articles on the PHP Chinese website!