我有一个实现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
解决方法是什么?
最佳答案
如我所说的here,supervisord
的一个重要属性是:
因此,在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/