我有一个实现Web服务器的Golang程序。它有望连续运行,并在发生任何意外故障或崩溃的情况下重新启动自身。为此,我正在尝试使用supervisord将其配置为UNIX进程。但是,我面临的问题是代码中包含的外部go库无法识别,因为supervisord无法识别GOPATH。这导致出现以下错误:

web_server.go:11:2: cannot find package "github.com/gorilla/mux" in any of:
    /usr/lib/go/src/github.com/gorilla/mux (from $GOROOT)
    ($GOPATH not set)

使用 super 用户运行Web服务器时。我的Web服务器的受监管的配置是:
[program:web_server]
command=go run web_server.go
directory=/home/ubuntu
autostart=true
autorestart=true
startretries=5
stderr_logfile=/home/ubuntu/err_logs/web_server.err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10

解决方法是什么?

最佳答案

如我所说的heresupervisord的一个重要属性是:



因此,在GOPATH变量中添加environment可解决此问题。

[program:web_server]
command=go run web_server.go
directory=/home/ubuntu
autostart=true
autorestart=true
startretries=5
stderr_logfile=/home/ubuntu/err_logs/web_server.err.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
environment=GOPATH="/home/ubuntu"

关于go - 使用 super 用户运行Golang程序时无法识别的GOPATH,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34506251/

10-15 10:05