解決策 1:
<ブロック引用>
sudo
でサービスを実行するように systemd に指示します ?
sudo
それとは何の関係もありません。
通常、User=
を使用して特定のユーザー/グループとしてサービスを実行するように systemd に指示します。 と Group=
[Service]
のディレクティブ ユニットファイルのセクション。
これらを root に設定します (または、root として実行するのがデフォルトであるため、それらを削除します)。
解決策 2:
クリアするには systemd
システム サービスはデフォルトで root として実行されますが、デフォルトの動作と User=root
でのシステム サービスの実行にはまだ違いがあります。 .
生成されたプロセスの環境変数に記載されているように、これらの変数は User=
の場合にのみ設定されます 設定されています:
$USER, $LOGNAME, $HOME, $SHELL
この発見を確認するためにテストしました。したがって、上記の変数のいずれかが必要な root として systemd サービスを実行する場合は、User=root
を設定する必要があります。 .
解決策 3:
一時的な解決策ですが、ピンチで機能するようになりました:
/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
次のように、systemd ユニット ファイルで sudo 権限を持つユーザーで実行できます。
[Unit]
Description=Rails Webserver
After=syslog.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/var/www/webserver
ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80'
Restart=always
KillSignal=SIGQUIT
[Install]
WantedBy=multi-user.target