如何使飞镖/渡槽永久运行

时间:2019-08-30 14:18:44

标签: dart aqueduct

我是Dart lang的新手,也是Linux上的API服务的新手。
我的问题是,如何在Linux中保持Dart服务处于活动状态? 如果服务有问题,该如何回收?

我需要在crontab中运行吗?

1 个答案:

答案 0 :(得分:0)

您可以为Aqueduct创建systemd服务,并使其在服务器启动时自动运行。 systemd服务有很多选择,但我尝试为您提供一些满足您需求的示例:

[Unit]
Description=Dart Web Server
Wants=network-online.target
After=network-online.target

[Service]
Restart=always
ExecStart=/opt/dart-sdk/bin/dart bin/main.dart
WorkingDirectory=/tmp/web/my_project
User=webserver_user

[Install]
WantedBy=multi-user.target

将其另存为/etc/systemd/system/name_of_your_service.service

在此之后运行以下命令:

  • systemctl守护程序重新加载
    • 这将确保对您可用服务的最新更改已加载到systemd中。
  • systemctl起始名称_服务_服务
    • 这将开始为您服务。您可以通过“停止”将其停止,然后通过“重新启动”将其重新启动。
  • systemctl启用name_of_your_service.service
    • 这将启用该服务,因此它将在启动后启动。您也可以“禁用”它。

状态命令是另一个很好的命令,您可以在其中查看有关服务的某些信息(例如,它是否正在运行?)以及一些最新的日志事件(来自stdout):

systemctl状态名称_of_your_service.service

让我完成我指定的设置:

  • “想要” /“之后”可确保在建立网络连接后首先启动服务(与何时启动引导程序有关的服务最相关)。
  • “重新启动”指定在不使用“ systemctl stop”的情况下停止飞镖过程时应该怎么办。无论程序如何终止,使用“总是”可以重新启动服务。
  • “ ExecStart”我们要继续运行的程序。
  • “用户”是您希望服务运行的用户。
  • “ WantedBy”部分与“ systemctl enable”部分相关,并指定何时启动服务。除非您有特定要求,否则请在此处使用multi-user.target。

同样,systemd服务有很多选项,如果要查看服务的stdout日志输出,还应该签出journalctl。