出于我不明白的原因,Deno 默认情况下不是一个
systemd
服务。它有一个自动安装脚本,可将 deno 可执行文件放入您的 /home
文件夹中。当您使用此可执行文件deno run
Typescript 文件时,它会加载您的脚本,并且您可以告别用于其他任何事情的控制台。
如何将
deno
作为 systemd
服务添加到 Ubuntu?
是的!我想通了!
不过,如果您能帮我弄清楚为什么
deno
仅在您以 root
用户身份登录时才执行,那就太好了。我无法让 deno 使用 sudo 用户运行。
步骤:
使用他们在 deno.land 提供的
.sh
脚本安装 deno
将
httpServer.ts
复制到 /home
目录。
通过创建我们将使用的服务文件来告诉
systemd
有关该应用程序的信息。
sudo touch /etc/systemd/system/deno.service
使用下面的模板编辑最近创建的空文件。
[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
sudo systemctl enable deno
sudo systemctl start deno
sudo systemctl status deno
截图
欲了解最新答案,请查看 https://deno.land/x/service
一个组合的 cli 工具或库,可帮助您使用 systemd、sysvinit、docker-init 和 launchd 将任何脚本安装为服务。它还可以在 systemd 上安装用户模式服务,而无需 root 访问权限。
如需更通用的选项,请查看 https://deno.land/x/pup,它是 Deno 的功能齐全的流程管理器。
安装时,如果使用 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.