在Ubuntu / Centos上部署并运行Go API服务器

时间:2018-01-27 18:27:01

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

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

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

我有一个Ubuntu 16.04.3的Droplet和Centos 7的另一个......我正在寻找像pm2这样的东西去运行服务器并使用nginx指向那个端口但我读了不一样,我必须使用类似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的后端开发人员。

2 个答案:

答案 0 :(得分:3)

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

$ ./backend-server

如果它不可执行或有权限被拒绝,请向其添加可执行权限。

$ chmod +x backend-server

你的二进制文件应该可以运行了。我喜欢用json配置文件(process.json)来做这件事,这样我也可以传递额外的env变量,而不必在终端输入很多东西。 我的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 :(得分:1)

我认为大多数人会为此目的使用Supervisor,包括我。

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