Linux安装Golang并访问数据库+部署到web

Linux安装Go并部署到web

  • 下载Golang
  • 安装Golang
    • 添加环境变量
  • 第一个Go程序
  • 访问mysql数据库
    • 设置后台运行go程序
  • 部署到nginx
    • 修改nginx.conf配置文件

下载Golang

可以去官网看看,然后把链接复制一下,用wget下载
我刚发现Go官网打不开,可以先去这里看看,然后改一下版本号。

wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz

安装Golang

#解压
tar -zxvf go1.14.2.linux-amd64.tar.gz
#移动到/usr/local
mv go /usr/local
#切换目录
cd /usr/local/go

添加环境变量

echo "GOROOT=/usr/local/go" >> /etc/environment
#文件生效
source /etc/environment
#这个不用加好像可以
echo "PATH=$PATH:$GOROOT/bin" >> /etc/environment
#文件生效
source /etc/environment

创建工作空间

#创建工作空间
cd $HOME
mkdir -p go/src go/bin go/pkg

添加“工作空间”的环境变量

echo "GOPATH=$HOME/go" >> /etc/environment
#文件生效
source /etc/environment

其中,

  • bin:编译后可的执行文件的存放路径
  • pkg:编译包时,生成的.a文件的存放路径
  • src:源码路径,一般我们的工程就创建在src下面。

第一个Go程序

#创建工程目录
mkdir $HOME/go/src/hello
cd $HOME/go/src/hello
#创建一个go文件
vim hello.go

内容如下

package main
import "fmt"
func main() {
    fmt.Printf("hello world\n")
}

编译go

#编译go文件
go build

生成文件的名字,就是工程(上级目录)的名字

运行
./hello

即可看见输出
在这里插入图片描述

访问mysql数据库

如何搭建http服务

#下载驱动包
go get github.com/go-sql-driver/mysql

编写all.go访问数据库

//all.go
package main
import (
    "fmt"
    "net/http"
    "log"
    "database/sql"
    _ "github.com/go-sql-driver/mysql"
)
func all(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w,"

这个是nginx+Golang实现的页面

"
) //链接数据库 db, err := sql.Open("mysql", "root:root@/database") if err != nil { log.Fatal(err) } defer db.Close() //查询 rows, err := db.Query("SELECT * FROM book") if err != nil { log.Fatal(err) } defer rows.Close() //建立表头 fmt.Fprintf(w,"") fmt.Fprintf(w,"") fmt.Fprintf(w,"") fmt.Fprintf(w,"") fmt.Fprintf(w,"") fmt.Fprintf(w,"") fmt.Fprintf(w,"")//遍历结果集for rows.Next(){var name intvar title stringvar author stringvar publisher stringvar price float64if err := rows.Scan(&name,&title,&author,&publisher,&price); err !=nil{ log.Fatal(err)} fmt.Fprintf(w,"") fmt.Fprintf(w,"",name) fmt.Fprintf(w,"",title) fmt.Fprintf(w,"",author) fmt.Fprintf(w,"",publisher) fmt.Fprintf(w,"",price) fmt.Fprintf(w,"")}if err := rows.Err(); err !=nil{ log.Fatal(err)}}funcmain(){//设置访问的路由 http.HandleFunc("/all.go",all)//设置监听的端口 err := http.ListenAndServe(":9001",nil)if err !=nil{ log.Fatal("ListenAndServe: ", err)}}

注:go的浮点数为float32或float64

设置后台运行go程序

在运行的时候可以在后面添加&,设置为后台运行

如,我的工程名是book
./book&
即可让其进入后台运行
jobs -l  可以查看后台运行的程序 
fg %n  可以唤回后台进行至前台,其中n为后台工作号

Linux安装Golang并访问数据库+部署到web_第1张图片
如图,可见go程序正在监听9001端口
浏览器访问ip/all.go

部署到nginx

利nginx的方向代理

nginx反向代理1
nginx反向代理2

修改nginx.conf配置文件

添加如下配置

location ~ \.go$ {
	proxy_set_header X-Forwarded-For $remote_addr;
	proxy_set_header Host            $http_host;
	proxy_pass   http://127.0.0.1:9001;
} 

使用nginx的反向代理,当用户访问.go文件的时候,跳转到访问到go监听的端口
nginx -s reload
浏览器访问ip:nginx监听的端口/all.go

注1:需要先启动go程序,让其监听9001端口
注2:nginx反向代理的时候,相当于访问http://127.0.0.1:9001/all.go,这时相当于把url传递给了go处理,这是需要注意HandleFunc监听的url pattern。

你可能感兴趣的:(linux,linux,golang,nginx)

书号书名作者出版社价格
%d%s%s%s%.2f