systemdサービスの環境変数
systemdユニットファイルでの環境変数設定をマスターします。インラインEnvironment=とEnvironmentFile=の比較、変数の優先順位、シークレット管理のベストプラクティスを学びます。
Operational Guides
詳細な説明
環境変数によるサービスの設定
環境変数はLinuxサービスを設定する標準的な方法です。systemdはそれらを設定するための2つのディレクティブを提供します:インライン値のEnvironment=とファイルから読み込むEnvironmentFile=。
Environment=によるインライン変数
[Service]
Environment="NODE_ENV=production"
Environment="PORT=3000"
EnvironmentFile=によるファイルからの読み込み
多数の変数や機密値の場合はファイルを使用します:
[Service]
EnvironmentFile=/etc/myapp/env
EnvironmentFile=-/etc/myapp/env.local
-プレフィックスはファイルをオプションにします。
セキュリティに関する考慮事項
インラインのEnvironment=値はsystemctl showを実行できる人なら誰でも見ることができます。EnvironmentFile=の値はsystemctl showを通じて公開されません。これがシークレットに推奨される方法です。
chmod 600 /etc/myapp/env
chown root:root /etc/myapp/env
ユースケース
パブリック設定(ポート、ログレベル)とシークレット(データベースパスワード、APIキー)の両方を必要とするサービスの設定を、適切なセキュリティ分離で管理する場合に使用します。