【问题标题】:Deploy and run a Go API server on Ubuntu/Centos在 Ubuntu/Centos 上部署和运行 Go API 服务器
【发布时间】:2018-01-27 18:27:00
【问题描述】:

我刚刚使用 Iris 框架完成了我的第一个 Go 后端,但现在我需要将它投入生产,以便我可以在我构建的 Slack 应用程序中使用它。

为了在本地测试代码,我只使用 go run main.gongrok 运行我的文件以使用 Slack API 进行测试,它正在工作并且已经完成。

我有一个带有 Ubuntu 16.04.3 的液滴和另一个带有 Centos 7 的液滴...我正在寻找类似 @​​987654325@ 的东西,运行服务器并使用 nginx 指向该端口,但我用 Go 读到它是不同,我必须使用这样的东西https://fabianlee.org/2017/05/21/golang-running-a-go-binary-as-a-systemd-service-on-ubuntu-16-04/

但是对于一个简单的服务器来说,这是一个很长的配置,我的问题是:

  • 这是用 Go 配置 API 的常用方法吗?
  • 除了 DigitalOcean,您是否建议使用其他服务来运行我的 API?

这真的是我第一次接触 Go,我只是想了解更多,我是 Laravel 和 NodeJS 的后端开发人员。

【问题讨论】:

  • 试试supervisord.org。我们将它与 Go 一起使用并且效果很好。更好的方法是使用 docker。

标签: rest api go digital-ocean slack-api


【解决方案1】:

如果需要,您可以使用pm2。当你构建一个 go 项目时,它会创建一个二进制可执行文件,比如backend-server,你可以从终端运行它,并像这样启动应用程序:

$ ./backend-server

如果它不可执行或有权限被拒绝的问题,添加可执行权限给它。

$ chmod +x backend-server

您的二进制文件应该可以运行了。我喜欢使用 json 配置文件 (process.json) 来完成,这样我也可以传递额外的环境变量,而不必在终端中输入很多内容。 我的process.json 看起来像这样:

{
  "apps" : [{
    "name"        : "backend-app",
    "script"      : "./backend-server",
    "env": {
      "DB_USER": "db_user",
      "PORT": 8080
    }
  }]
}

最后你可以像这样使用 pm2 启动应用程序:

$ pm2 start process.json

关于 json 配置的更多细节可以在official doc找到

【讨论】:

  • 这也很聪明,我要试试,谢谢1
【解决方案2】:

我认为大多数人都使用Supervisor 来达到这个目的,包括我在内。

为了方便您,只需查看my Golang project, isaac-racing-server 并将其用作您的模板,将isaac-racing-server 替换为您的应用程序名称。 (Supervisor 文件位于a subdirectory。)

【讨论】:

  • 谢谢@James,我去看看你的项目,很有用!
  • 我会将您的答案标记为已接受,因为您是第一个但@Muhammad 的答案也非常适合我正在做的事情:) 谢谢你们!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
  • 1970-01-01
  • 2015-06-16
  • 2022-09-27
  • 1970-01-01
相关资源
最近更新 更多