linux - 如何在 Ubuntu 服务器上连续运行 go 应用程序

标签 linux go

似乎无法在这里找到直接的答案。

我不确定我是否应该将 ./myBinary 作为 Cron 进程运行,或者我是否应该运行“go run myapp.go”

确保它始终运行的有效方法是什么? 对不起,我习惯了 Apache 和 Nginx。

此外,部署 Go 应用程序的最佳做法是什么?我希望所有内容(最好)都在同一台服务器上提供。就像我的开发环境是怎样的。

我读过其他使用 S3 的东西,但是,我真的不想使用 S3。

最佳答案

使用您的 init 进程提供的功能。您可能正在使用 Systemd 或 Upstart 运行系统。它们都有非常简单的服务描述,可以确保您的应用程序以正确的权限运行,在出现任何问题时重新启动,并且输出得到正确处理。

快速 Upstart description look here ,您的服务描述很可能只是:

start on runlevel [2345]
stop on runlevel [!2345]
setuid the_username_your_app_runs_as
exec /path/to/your/app --options

快速 Systemd description look here ,您的服务很可能只是:

[Unit]
Description=Your service

[Service]
User=the_username_your_app_runs_as
ExecStart=/path/to/your/app --options

[Install]
WantedBy=multi-user.target

关于linux - 如何在 Ubuntu 服务器上连续运行 go 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31602094/

相关文章:

go - 在 Go 中实现信号量的最佳方式是什么

go - 为什么我不能导入 pkg "builtin"?

linux - 从 bash 启动进程而不继承文件描述符

linux - Windows 与 Linux 缓冲区溢出

go - 我想将一个文件拆分为大小相同的 "chunks"或 slice 并使用 goroutines 同时处理它们

go - 如何通过分页列出表格中的所有项目

regex - 根据文件名使用 bash 和 Perl 批量重命名文件

MySQL 不会向同一张表添加多个外键

linux - 命令正在终端上运行,但在 bash 脚本中没有给出语法错误

macos - nanotime 在 MacOS 上有什么作用?