本文刊发于《网络安全和信息化》2019年第1期----CentOs中GO的安装与网站部署
Go语言是谷歌2009年发布的第二款开源编程语言,如今Go语言作为专门为并发和大数据设计的语言,在编程界占据越来越重要的地位。
Go语言里面提供了一个完善的net/http包,通过http包可以很方便的就搭建起来一个Web服务,同时使用这个包能很简单地对Web的路由,静态文件,模版,cookie等数据进行设置和操作。在CentOs环境下,Go的安装与网站的部署也是非常方便的。
一、在CentOs服务器系统中安装LNMP。
在安装前先在终端执行命令:
# screen -S lnmp
如果提示找不到命令就yum安装 screen:
# yum install screen
然后就可以安装LNMP了:
# cd /usr/local/src
# wget -c http://soft.vpser.net/lnmp/lnmp1.5beta.tar.gz && tar zxf lnmp1.5beta.tar.gz && cd lnmp1.5 && ./install.sh lnmp
这个安装过程虽然时间很长,但按照一步一步的提示完全可以轻松完成。
二、安装GO。
从https://studygolang.com/dl 处下载go1.11.linux-amd64.tar.gz 并上传到/usr/local/scr/目录中。
# cd /usr/local/src
# tar zxvf go1.11.linux-amd64.tar.gz
# cd /usr/local/src/go/
# vi /root/.bashrc #在这个文件中加入以下语句
#go
export GOROOT=/usr/local/src/go
export GOPATH=/data/httpd/go
export PATH=$PATH:$GOROOT/bin
重启系统或者执行source /root/.bashrc
就可以用go env查看相关配置来验证是否安装成功。
三、Nginx中建立站点并设置反向代理。
在Nginx中建立一个go.qhdedu.com站点,在其对应的go.qhdedu.com.conf配置文件中,要有以下设置:
listen 80; #侦听80端口
…………
location / {
proxy_pass http://127.0.0.1:9090; #反向代理
}
…………
四、在站点文件夹中建立如下五个文件。
header.html, main.html, about.html, new.html及main.go。
# cd /home/wwwroot/go.qhdedu.com
# vi header.html
输入以下内容:
{{ define "header" }}
{{ end }}
# vi main.html
输入以下内容:
{{define "main"}}
{{template "header" .}}
{{end}}
# vi about.html
输入以下内容:
{{define "about"}}
{{template "header" .}}
{{end}}
# vi new.html
输入以下内容:
{{define "new"}}
{{template "header" .}}
{{end}}
# vi main.go
输入以下内容:
package main
import (
"net/http"
"html/template"
"log"
)
//Compile templates on start
var templates=template.Must(template.ParseFiles("main.html","header.html", "about.html", "new.html"))
//A Page structure
type Page struct {
Title string
}
//Display the named template
func display(w http.ResponseWriter, tmpl string, data interface{}) {
templates.ExecuteTemplate(w, tmpl, data)
}
//The handlers.
func mainHandler(w http.ResponseWriter, r *http.Request) {
display(w, "main", &Page{Title: "Home主页"})
}
func aboutHandler(w http.ResponseWriter, r *http.Request) {
display(w, "about", &Page{Title: "关于本站"})
}
func newHandler(w http.ResponseWriter, r *http.Request) {
display(w, "new", &Page{Title: "测试页面"})
}
func main() {
http.HandleFunc("/", mainHandler)
http.HandleFunc("/new", newHandler)
http.HandleFunc("/about", aboutHandler)
err := http.ListenAndServe(":9090", nil) //设置监听的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
五、编译main.go。
# cd /home/wwwroot/go.qhdedu.com
# go build main.go
六、建立脚本文件。
# cd /etc/init.d/
# vi go.sh
输入以下内容:
#!/bin/sh
#下面是要启动服务的命令
cd /home/wwwroot/go.qhdedu.com
./main & #运行上一步编译生成的main文件
然后再把此脚本设置成系统服务。
# chmod +x go.sh
# chkconfig --add go.sh
重新启动系统后,就可以用http://go.qhdedu.com:9090 来访问这个网站了,当然因为Nginx侦听80端口并做了反向代理,因此用http://go.qhdedu.com也可以直接访问。
赵学作,河北科技师范学院副教授,研究方向:网站建设及软件开发。