私のシステム:
Apacheに追加したい環境変数がかなりあります。
私は現在/etc/httpd/conf.d/vhosts.conf
ファイルに次のように追加することでそれを行っています:
SetEnv API_USERNAME 'my_special_username'
SetEnv API_PASSWORD 'my_special_password'
PHPで2つの環境変数にアクセスできます:
echo $_SERVER['API_USERNAME'];
echo $_SERVER['API_PASSWORD'];
// or
echo getenv('API_USERNAME');
echo getenv('API_PASSWORD');
最近、systemdを使用して環境変数を追加できることもわかりました。
ファイル/etc/systemd/systemd/httpd.service.d/envvars.conf
を作成します。
[Service]
Environment="API_USERNAME=my_special_username"
Environment="API_PASSWORD=my_special_password"
systemctl daemon-reload
systemctl restart httpd
PHPで2つの環境変数にアクセスできます:
echo getenv('API_USERNAME');
echo getenv('API_PASSWORD');
// $_SERVER does not work when I specify environment variables in systemd
echo $_SERVER['API_USERNAME']; // returns blank
echo $_SERVER['API_PASSWORD']; // returns blank
質問
セキュリティまたはベストプラクティスの観点から、Apache環境変数をSetEnvまたはsystemdで構成ファイルに追加するのが最善でしょうか?それとも関係ありませんか?
Tvonの発言に同意し、systemdがこれらのApache環境変数を配置するのに実際に不適切な場所になることをより具体的に追加したいと思います。 Systemdを使用する他のアプリケーションやプロセスは、これらの変数について知る必要はありません。
また、同じサーバー上で複数のPHP=サイトをホストしているのかどうかを検討します。
/etc/httpd/conf.d/vhosts.conf
「debian-way」とも呼ばれるサイトで利用可能な方法を使用することも検討します
Apacheの設定方法(sites-availableとhttpd.conf)
Centosのこのガイドに基づく方法 https://www.digitalocean.com/community/tutorials/how-to-set-up-Apache-virtual-hosts-on-centos-7#step-four- %E2%80%94-create-new-virtual-Host-files
Sudo mkdir /etc/httpd/sites-available
Sudo mkdir /etc/httpd/sites-enabled
Apacheに、サイトが有効なディレクトリで仮想ホストを探すように伝えます。 Apacheのメイン構成ファイルを編集して、追加の構成ファイル用のオプションのディレクトリを宣言する行を追加します。
Sudo nano /etc/httpd/conf/httpd.conf
ファイルの終わりに行を追加しますIncludeOptional sites-enabled/*。conf
ファイルを保存して閉じます。次に、仮想ホストファイルを作成します。
Sudo nano /etc/httpd/sites-available/example.com.conf
<VirtualHost *:80>
</VirtualHost>
次に、最初のWebサイトのdirectviesを追加します
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
SetEnv API_USERNAME 'my_special_username'
SetEnv API_PASSWORD 'my_special_password'
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/requests.log combined
</VirtualHost>
ファイルを保存して閉じます。次に、2番目のWebサイト用にexample2.com.confというコピーを作成します
Sudo cp /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-available/example2.com.conf
ファイルを編集し、関連する変更を行います
Sudo nano /etc/httpd/sites-available/example2.com.conf
<VirtualHost *:80>
ServerName www.example2.com
ServerAlias example2.com
SetEnv API_USERNAME 'my_other_special_username'
SetEnv API_PASSWORD 'my_other_special_password'
DocumentRoot /var/www/example2.com/public_html
ErrorLog /var/www/example2.com/error.log
CustomLog /var/www/example2.com/requests.log combined
</VirtualHost>
次に、sites-enabledディレクトリからsites-availableディレクトリへのシンボリックリンクを作成して、サイトを有効にする必要があります。
Sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
Sudo ln -s /etc/httpd/sites-available/example2.com.conf /etc/httpd/sites-enabled/example2.com.conf
次に、Apacheを再起動します(通常、最初にconfigtestを実行して、エラーがないか確認します)。
Sudo apachectl configtest
大丈夫なら
Sudo apachectl restart
この方法の他の利点は、既存の構成の新しいバージョンを作成し、シンボリックリンクを使用して、必要に応じて、新しい構成の問題やウェブサイトの有効化/無効化を前後にポイントできることです。