当我尝试创建自己的 api 并使用 apache2 时出现“bind:地址已在使用中”

当我尝试创建自己的 api 并使用 apache2 时出现“bind:地址已在使用中”

我在实例上使用apache2Web 服务器ec2,并尝试使用一个go可以发出get请求的简单脚本。

我的go脚本如下所示:

package main

import (
    "net/http"
    "fmt"
)

func say_hi(w http.ResponseWriter, r *http.Request) {
        fmt.Printf("\033[0;32m%v\033[0m\n", r)
        fmt.Fprint(w, fmt.Sprint("Hi"))
}

func main() {
    http.HandleFunc("/say_hi", say_hi)

    ip_address := "0.0.0.0:8080"

    fmt.Printf("Set up ip address: %s\n", ip_address)
    error := http.ListenAndServe(ip_address, nil)
        if error != nil {
        fmt.Println(error)
    }

}

当我在我的服务器上运行脚本时ec2出现以下错误:

listen tcp 0.0.0.0:8080: bind: address already in use

我真的不明白为什么我会收到这个错误。

我尝试进一步调查

ubuntu@ip-172-31-37-75:~$ socklist
type  port      inode     uid    pid   fd  name
tcp     22       8895       0      0    0  
tcp   3306       9160     106      0    0  
tcp     22       9569       0      0    0  
tcp  44403          0       0      0    0  
udp  18341       7860       0      0    0  
udp     68       7939       0      0    0 

但似乎没有任何东西使用这些端口。

我有端口808080打开:

ubuntu@ip-172-31-37-75:~$ netstat -nlp | grep "80"
(No info could be read for "-p": geteuid()=1000 but you should be root.)
tcp6       0      0 :::8080                 :::*                    LISTEN      -               
tcp6       0      0 :::80                   :::*                    LISTEN      -  

我的ports.conf文件如下所示:

Listen 80
Listen 8080

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

我完全是初学者,所以我可能会遗漏一些非常明显的内容。

答案1

您的输出表明,您已经有一个正在运行的程序在监听端口 8080。netstat您似乎表明它是 Apache。您需要重新配置 Apache,使其不监听端口 8080,或者选择其他端口来运行您的 Go 程序。

相关内容