systemdのファイルで環境変数を使用する方法

systemdのファイルで環境変数を使用する方法

次のように一部のファイルに環境変数を設定しました/etc/profile.d/mercure.sh

export MERCURE_PUBLISHER_JWT_KEY=$(cat /home/stephane/mercure/publisher.key.pub)
export MERCURE_PUBLISHER_JWT_ALG=RS256
export MERCURE_SUBSCRIBER_JWT_KEY=$(cat /home/stephane/mercure/subscriber.key.pub)
export MERCURE_PUBLISHER_JWT_ALG=RS256
export SERVER_NAME=localhost:3000

次のコマンドを実行するには、この情報が必要です。メルキュールセンター):

MERCURE_PUBLISHER_JWT_KEY=$MERCURE_PUBLISHER_JWT_KEY MERCURE_SUBSCRIBER_JWT_KEY=$MERCURE_SUBSCRIBER_JWT_KEY SERVER_NAME=$SERVER_NAME /usr/bin/mercure run

以下のようにサービスとして実行するmercure.serviceファイルを生成したいと思います。mercureここ

[Unit]
Description=Mercure.Rocks service
After=network.target
StartLimitBurst=5
StartLimitIntervalSec=33

[Service]
Type=simple
WorkingDirectory=/tmp
EnvironmentFile=/etc/profile.d/mercure.sh
ExecStart=MERCURE_PUBLISHER_JWT_KEY=$MERCURE_PUBLISHER_JWT_KEY MERCURE_SUBSCRIBER_JWT_KEY=$MERCURE_SUBSCRIBER_JWT_KEY SERVER_NAME=$SERVER_NAME /usr/bin/mercure run --config /home/stephane/mercure/Caddyfile
StandardOutput=file:/var/log/nginx/mercure.log
StandardError=file:/var/log/nginx/mercure.log
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.targe

最初は、次のエラーが発生しました。

$ sudo systemctl status mercure
● mercure.service - Mercure.Rocks service
     Loaded: loaded (/etc/systemd/system/mercure.service; enabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Wed 2024-01-03 15:26:49 CET; 1s ago
    Process: 33752 ExecStart=MERCURE_PUBLISHER_JWT_KEY=$MERCURE_PUBLISHER_JWT_KEY MERCURE_SUBSCRIBER_JWT_KEY=$MERCURE_SUBSCRIBER_JWT_KEY SERVER_NAME=$SERVER_NAME /usr/bin/mercure run --config /home/stephane/mer>
   Main PID: 33752 (code=exited, status=203/EXEC)
        CPU: 824us

systemd[1]: Stopped Mercure.Rocks service.
systemd[1]: mercure.service: Ignoring invalid environment assignment 'export MERCURE_PUBLISHER_JWT_KEY=$(cat /home/stephane/mercure/publisher.key.pub)': /etc/profile.d/mercure.sh
systemd[1]: mercure.service: Ignoring invalid environment assignment 'export MERCURE_PUBLISHER_JWT_ALG=RS256': /etc/profile.d/mercure.sh
systemd[1]: mercure.service: Ignoring invalid environment assignment 'export MERCURE_SUBSCRIBER_JWT_KEY=$(cat /home/stephane/mercure/subscriber.key.pub)': /etc/profile.d/mercure.sh
systemd[1]: mercure.service: Ignoring invalid environment assignment 'export SERVER_NAME=localhost:3000 #mercure.astro-otter.space': /etc/profile.d/mercure.sh
systemd[1]: Started Mercure.Rocks service.
systemd[1]: mercure.service: Main process exited, code=exited, status=203/EXEC
systemd[1]: mercure.service: Failed with result 'exit-code'.

私の行で環境変数を使用する方法を本当に理解していませんExecStart。誰かが説明したり、例を示すことができますか?

ベストアンサー1

.NETファイルなしでより簡単な環境ファイルを試してくださいexport

ExecStart /bin/bash -c "...."次の変数を使用したい場合$MERCURE_PUBLISHER_JWT_KEY

おすすめ記事