文件变更时重新启动 systemd 服务?

文件变更时重新启动 systemd 服务?

我是 systemd 的新手,想知道每次部署新版本时重新启动 Web 应用程序的最佳策略是什么。

目前,我在启动时启动我的服务,它只是待在那里,但我希望每当我更改文件时它都会自动重新启动,因为每当我在 gitlab 上推送到 master 时,运行器都会获取文件、编译并将其复制到正确的目录中。然后我想重新启动或关闭它,但我不知道如何操作,因为重新启动它需要 sudo。

这是我的服务文件

[Unit]
After=mongod.service

[Service]
WorkingDirectory=/var/app/mywebsite/Web
Environment="HOME=/home/stan"
Environment="DOTNET_CLI_TELEMETRY_OPTOUT=1"
Environment="DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1"
ExecStart=/usr/bin/dotnet run -c Release -p /var/app/mywebsite/Web/project.json

[Install]
WantedBy=multi-user.target

以下是我的 ci 文件

before_script:
    - set DOTNET_CLI_TELEMETRY_OPTOUT=1
    - set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
    - set HOME=/home/stan
    - cd Web
    - dotnet restore
    - dotnet build -c Release
    - cd ..
copy:
    script:
        - cp -R ./* /var/app/mywebsite/ # After this I would like to restart the website service

答案1

如果您想要重新加载 systemd,扫描新的或更改的单元,然后添加:

sudo systemctl daemon-reload

答案2

  1. 打开sudo visudo
  2. 添加gitlab-runner ALL=(ALL) NOPASSWD: /bin/systemctl restart myapp
  3. 现在你可以这样做sudo /bin/systemctl restart myapp,它不会提示输入密码

相关内容