web-dev-qa-db-ja.com

Apache環境変数またはSetEnvにsystemdを使用していますか?

私のシステム:

  1. CentOS 7.2.1511(コア)
  2. Apache 2.4.6

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構成ファイルに追加するのが最善でしょうか?それとも関係ありませんか?

5
Jeffrey Wen

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

この方法の他の利点は、既存の構成の新しいバージョンを作成し、シンボリックリンクを使用して、必要に応じて、新しい構成の問題やウェブサイトの有効化/無効化を前後にポイントできることです。

1
mrjamesmyers