本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.
安装golang
- Xshell5 登录跳板机->开发机
- 执行
rz -bey选中本地电脑中下载的golang压缩包
- 执行以下命令解压并安装二进制文件到
/usr/local中
1
| $ tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz
|
- 配置golang对应的环境变量
1 2 3 4
| # 使用vim修改对应的配置文件 $ vim /etc/profile # 配置环境变量 export PATH=$PATH:/usr/local/go/bin
|
什么是cgi?
- Web服务器负责管理连接, 数据传输,网络交互
- CGI脚本负责管理具体的业务逻辑, CGI是一种网页和程序通讯的协议
CGI程序负责生成动态内容, 然后返回给服务器, 由服务器转交给客户端。CGI是一个独立的程序可以独立运行
使用golang和cgi包
golang开发时, 需要对当前工作目录配置 GOPATH.
1 2
| # 到工作目录下执行以下目录, 将当前目录设置为GOPATH $ export "GOPATH=$PWD"
|
简单的机遇HTTP Server的cgi处理程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| package main
import ( "net/http" "net/http/cgi" "log" "fmt" )
func CgiTestHandler(w http.ResponseWriter, r *http.Request) { fmt.Println("get request...", r.URL.Path) handler := new(cgi.Handler) handler.Path = "/usr/local/go/bin/go" script := "/root/AsyncLiu/Golang/CgiTest/script/" + r.URL.Path log.Println(handler.Path)
handler.Dir = "/root/AsyncLiu/Golang/CgiTest/script/" args := []string{"run", script} handler.Args = append(handler.Args, args...) handler.Env = append(handler.Env, "GOPATH=/root/AsyncLiu/Golang/CgiTest") log.Println(handler.Args)
handler.ServeHTTP(w, r) }
func main() { http.HandleFunc("/", CgiTestHandler) fmt.Println("start web server....") log.Fatal(http.ListenAndServe(":8888", nil)) }
|
对应的被执行的脚本
1 2 3 4 5 6 7 8 9 10 11 12
| package main
import "fmt"
func init() { fmt.Println("Content-Type: test/plain;charset=utf-8\n\n") }
func main() { fmt.Println("This is executing go script") }
|