在服务器上启动golang

在服务器上启动golang,go,Go,我在电脑上创建了一个微型围棋程序: package main import ( "fmt" "log" "net/http" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:]) } func main() { http.HandleFunc("/", handler) log.Fatal(http

我在电脑上创建了一个微型围棋程序:

package main

import (
"fmt"
"log"
"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}

func main() {
    http.HandleFunc("/", handler)
    log.Fatal(http.ListenAndServe(":8080", nil))
}
在Mac上使用终端:

$ cd $HOME/go/src/hello
$ ./hello
服务器正在启动。使用Safari:

http://localhost:8080/hello
我听到“你好,我爱你好!”

到目前为止还不错。但我的挑战是将这个二进制文件放到服务器上并运行相同的程序

在服务器上

Debian 8使用webmin在根目录中创建文件夹,并将二进制文件放入该文件夹

[root@server ~]# cd /go/
[root@server go]# ./hello
sh: 1: ./hello: Permission denied
[root@server go]# 
Go文件夹和hello二进制文件的权限为0644。好的,和大多数文件一样


如何将Golang部署到服务器并在服务器上启动Golang?上一步有很多文档,但我在服务器端找不到任何文档。

我认为您需要使用交叉编译

当你在mac上启动
go build-o hello.
时,它正在为你的mac构建一个二进制文件

但是要在linux上运行它,需要使用交叉编译:
GOOS=linux go build-o hello。
。它将为您的服务器构建二进制文件


您可以阅读Dave Cheney的这篇文章:

我认为您需要使用交叉编译

当你在mac上启动
go build-o hello.
时,它正在为你的mac构建一个二进制文件

但是要在linux上运行它,需要使用交叉编译:
GOOS=linux go build-o hello。
。它将为您的服务器构建二进制文件


您可以阅读Dave Cheney的这篇文章:

权限被拒绝
通常指向文件上缺少的可执行权限

hello二进制文件上应该有
755
700
(前者使每个人都可以执行,后者仅适用于您的用户)

或者

chmod -R +x ~/go

第一个仅在服务器可执行文件上设置显式权限位,第二个仅在整个目录以及所有包含的文件(和子目录)上添加可执行权限位。(目录通常还设置了
x
-位,否则您将无法列出其内容)

权限被拒绝
通常指向文件上缺少的可执行权限

hello二进制文件上应该有
755
700
(前者使每个人都可以执行,后者仅适用于您的用户)

或者

chmod -R +x ~/go

第一个仅在服务器可执行文件上设置显式权限位,第二个仅在整个目录以及所有包含的文件(和子目录)上添加可执行权限位。(目录通常还设置了
x
-位,否则您将无法列出其内容)

转到代码所在的文件夹,然后键入terminal
GOOS=linux GOARCG=amd64 Go build
,之后golang将为您创建文件,将其上传到服务器上,使用
/your\u file\u name运行后键入
chmod+x your\u file\u name
转到代码所在的文件夹,然后键入terminal
GOOS=linux GOARCG=amd64 Go build
,golang会为您创建文件,将其上传到服务器上,然后在使用
/your\u file\u name运行后键入
chmod+x your\u file\u name

GOARCG=amd64在构建过程中有多重要?您好,我爱您好!GOOS=linux和chmode755成功了。非常感谢。嗨,GOARCH是指计算机的体系结构。例如,您可以设置GOARCH=amd64以便为x64计算机编译。我很高兴看到它解决了您的问题。GOARCG=amd64在构建过程中有多重要?您好,我爱您好!GOOS=linux和chmode755成功了。非常感谢。嗨,GOARCH是指计算机的体系结构。例如,您可以设置GOARCH=amd64以便为x64计算机编译。我很高兴看到它解决了你的问题。