Deno 作为 Linux systemd 服务。怎么办?

问题描述 投票:0回答:3

出于我不明白的原因,Deno 默认情况下不是一个

systemd
服务。它有一个自动安装脚本,可将 deno 可执行文件放入您的
/home
文件夹中。当您使用此可执行文件
deno run
Typescript 文件时,它会加载您的脚本,并且您可以告别用于其他任何事情的控制台。

如何将

deno
作为
systemd
服务添加到 Ubuntu?

ubuntu systemd deno
3个回答
1
投票

是的!我想通了!

不过,如果您能帮我弄清楚为什么

deno
仅在您以
root
用户身份登录时才执行,那就太好了。我无法让 deno 使用 sudo 用户运行。

步骤:

  1. 使用他们在 deno.land 提供的

    .sh
    脚本安装 deno

  2. httpServer.ts
    复制到
    /home
    目录。

  3. 通过创建我们将使用的服务文件来告诉

    systemd
    有关该应用程序的信息。

  4. sudo touch /etc/systemd/system/deno.service

  5. 使用下面的模板编辑最近创建的空文件。

[Unit]
Description=Deno 1.1.1 service
Documentation=http://deno.land
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=user1
WorkingDirectory=/home
ExecStart=/home/user1/.deno/bin/deno run --allow-net --allow-read httpServer.ts
Restart=on-failure

[Install]
WantedBy=multi-user.target
  1. 然后启用并启动它。

sudo systemctl enable deno

sudo systemctl start deno

  1. 检查 deno 服务状态。

sudo systemctl status deno

截图


0
投票

欲了解最新答案,请查看 https://deno.land/x/service

一个组合的 cli 工具或库,可帮助您使用 systemd、sysvinit、docker-init 和 launchd 将任何脚本安装为服务。它还可以在 systemd 上安装用户模式服务,而无需 root 访问权限。

如需更通用的选项,请查看 https://deno.land/x/pup,它是 Deno 的功能齐全的流程管理器。


0
投票

安装时,如果使用 sudo install,它将安装在根目录(/root/.deno)中,因此不允许您以用户身份运行。

如果您以用户身份运行安装,它将以用户身份(~/.deno)安装,因此不允许您使用 sudo 以 root 身份运行。

如果您使用受保护的端口(< 1024)when using Deno.serve, for example, you need root permission for Deno to use them, so you need to install Deno on root as well.

© www.soinside.com 2019 - 2024. All rights reserved.