Ubuntu 18.04を使用しています。システム全体(シェル経由)とApache-Pythonアプリケーション内でアクセスできるいくつかの環境変数を1か所で定義したいと思います。 /etc/profileで私が定義した
export MY_ENV_VAR1=envvar1
export MY_ENV_VAR2=myvalue1
...
それから/lib/systemd/system/apache2.serviceがあります。
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
Environment=MY_ENV_VAR1=envvar1
Environment=MY_ENV_VAR2=value1
...
Apache 構成ファイル (/etc/apache2/sites-available/000-default-le-ssl.conf) で次のように環境変数を設定しました。
PassEnv MY_ENV_VAR1
PassEnv DB_USER
これらの変数をある場所で定義し、あるファイルから別のファイルとして参照する方法はありますか?
答え1
1つの可能性は、/etc/environment
変数を次の形式でファイルに入れることです。
MY_ENV_VAR1=envvar1
MY_ENV_VAR99="value with spaces"
これはpam_env
ログイン時に読み書きされます。 Apacheに同じファイルを読み取るには、次のようにします。
EnvironmentFile=/etc/environment
ユニットファイルのシステムデザイナーはこのキーワードを使用するのが好きではないので、いつかは廃止されているかもしれませんが、現実的には動作します。 pamとsystemdは特殊文字を同じ方法で解析しませんので、変数に特殊文字を使用するときは注意してください。