我想用 Ubuntu 16.04 在 VPS 上部署一个程序。
如果你运行go run main.go它,那么通过访问http://ip:8000我可以看到运行程序的输出。
当我通过文件运行它时,我service需要指定二进制文件的直接路径,例如如下,虽然我出口:/usr/bin/go run /path/to/program/src/main.gosystemdsystemctl status myproject.serviceGOPATH
Jul 12 09:00:26 localhost systemd[1]: Started Simple implementation of WebSockets Chat on GoLang.
Jul 12 09:00:26 localhost go[4826]: src/main.go:7:9: cannot find package "github.com/gorilla/websocket" in any of:
Jul 12 09:00:26 localhost go[4826]: /usr/lib/go-1.6/src/github.com/gorilla/websocket (from $GOROOT)
Jul 12 09:00:26 localhost go[4826]: ($GOPATH not set)
命令的输出whereis go如下:
go: /usr/bin/go /usr/lib/go /usr/share/go /usr/share/man/man1/go.1.gz
是的,确实/usr/lib/go-1.6/src/没有文件夹github.com
在这样做的过程中,她处于根本地位:
root@localhost:~# ls
etc go gocode
root@localhost:~/go/src# ls
github.com
为什么它在我go run不指定二进制文件路径的情况下直接运行就可以工作?如何使用完整路径运行以使其工作?
添加
当我运行 go run /path/to/program/src/main.go它时,我http://ip:8000看到 404。
发生了什么?它可以连接什么?
添加
[Unit]
Description=Simple implementation of WebSockets Chat on GoLang
After=network.target
[Service]
User=root
WorkingDirectory=/var/www/SGWC
ExecStart=/usr/bin/go run /var/www/SGWC/src/main.go
[Install]
WantedBy=multi-user.target
感谢@Ainar-G 的评论,设法像这样解决它:
编译程序:
然后更改单元文件设置:
就是这样:)
没有必要恐慌。
@Ainar-G,再次。谢谢你!